From 45bdad58d9d081e730d6a65af8e3b91f1781ad7b Mon Sep 17 00:00:00 2001 From: Stamatis Zampetakis Date: Fri, 20 Jun 2025 15:57:40 +0200 Subject: [PATCH] HIVE-29031: Setup Derby database in qtests via qt:database option 1. Add Derby support in QTestDatabaseHandler and implement proper setup and cleaup logic 2. Refactor docker instructions in separate class and update class hierarchy 3. Update all .q files using 'jdbc:derby' URLs to exploit the new functionality 4. Re-enable previously disabled tests since flakiness is resolved. 5. Rework dataconnector.q test exploiting the init script functionality and drop all Derby binary files. --- .../test/queries/clientpositive/dboutput.q | 18 +- .../results/clientpositive/dboutput.q.out | 36 +- .../README_DO_NOT_TOUCH_FILES.txt | 9 - .../log/README_DO_NOT_TOUCH_FILES.txt | 8 - .../db_for_connectortest.db/log/log.ctrl | Bin 48 -> 0 bytes .../db_for_connectortest.db/log/log1.dat | Bin 1048576 -> 0 bytes .../db_for_connectortest.db/log/log2.dat | Bin 1048576 -> 0 bytes .../log/logmirror.ctrl | Bin 48 -> 0 bytes .../seg0/README_DO_NOT_TOUCH_FILES.txt | 8 - .../db_for_connectortest.db/seg0/c10.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c101.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c111.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c121.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c130.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c141.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c150.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c161.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c171.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c180.dat | Bin 36864 -> 0 bytes .../db_for_connectortest.db/seg0/c191.dat | Bin 16384 -> 0 bytes .../db_for_connectortest.db/seg0/c1a1.dat | Bin 16384 -> 0 bytes .../db_for_connectortest.db/seg0/c1b1.dat | Bin 16384 -> 0 bytes .../db_for_connectortest.db/seg0/c1c0.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c1d1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c1e0.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c1f1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c20.dat | Bin 28672 -> 0 bytes .../db_for_connectortest.db/seg0/c200.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c211.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c221.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c230.dat | Bin 147456 -> 0 bytes .../db_for_connectortest.db/seg0/c241.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c251.dat | Bin 20480 -> 0 bytes .../db_for_connectortest.db/seg0/c260.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c271.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c281.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c290.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c2a1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c2b1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c2c1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c2d0.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c2e1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c2f0.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c300.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c31.dat | Bin 16384 -> 0 bytes .../db_for_connectortest.db/seg0/c311.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c321.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c331.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c340.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c351.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c361.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c371.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c380.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c391.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c3a1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c3b1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c3c0.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c3d1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c3e1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c3f1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c400.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c41.dat | Bin 16384 -> 0 bytes .../db_for_connectortest.db/seg0/c411.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c421.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c430.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c441.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c451.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c461.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c470.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c481.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c490.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c4a0.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c51.dat | Bin 16384 -> 0 bytes .../db_for_connectortest.db/seg0/c60.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c71.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c81.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/c90.dat | Bin 24576 -> 0 bytes .../db_for_connectortest.db/seg0/ca1.dat | Bin 28672 -> 0 bytes .../db_for_connectortest.db/seg0/cb1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/cc0.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/cd1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/ce1.dat | Bin 8192 -> 0 bytes .../db_for_connectortest.db/seg0/cf0.dat | Bin 8192 -> 0 bytes .../service.properties | 23 - itests/pom.xml | 14 - .../ql/externalDB/AbstractExternalDB.java | 120 +- .../hadoop/hive/ql/externalDB/Derby.java | 98 ++ .../ql/externalDB/DockerizedDatabase.java | 143 ++ .../hive/ql/externalDB/MSSQLServer.java | 2 +- .../hadoop/hive/ql/externalDB/MariaDB.java | 2 +- .../hive/ql/externalDB/MySQLExternalDB.java | 2 +- .../hadoop/hive/ql/externalDB/Oracle.java | 2 +- .../ql/externalDB/PostgresExternalDB.java | 2 +- .../hive/ql/qoption/QTestDatabaseHandler.java | 6 + .../authorization_jdbc_keystore.q | 3 +- .../dataconnector_authfail_alter.q | 3 +- .../dataconnector_authfail_drop.q | 3 +- .../dataconnector_authfail_remoteDB.q | 3 +- .../clientnegative/external_jdbc_negative.q | 8 +- .../authorization_privilege_objects.q | 7 +- .../queries/clientpositive/dataconnector.q | 3 +- .../queries/clientpositive/explain_jdbc.q | 7 +- .../clientpositive/external_jdbc_auth.q | 42 +- .../clientpositive/external_jdbc_join_mv.q | 9 +- .../clientpositive/external_jdbc_rowcount.q | 17 +- .../clientpositive/external_jdbc_table.q | 26 +- .../clientpositive/external_jdbc_table2.q | 43 +- .../clientpositive/external_jdbc_table3.q | 29 +- .../clientpositive/external_jdbc_table4.q | 44 +- .../external_jdbc_table_partition.q | 21 +- .../clientpositive/external_jdbc_table_perf.q | 104 +- .../external_jdbc_table_typeconversion.q | 47 +- .../clientpositive/external_jdbc_view.q | 13 +- .../queries/clientpositive/jdbc_handler.q | 14 +- .../clientpositive/jdbc_split_filter.q | 10 +- .../clientpositive/qt_database_derby.q | 17 + .../external_jdbc_negative.q.out | 2 +- .../clientpositive/llap/dataconnector.q.out | 8 +- .../llap/external_jdbc_table.q.out | 28 +- .../llap/external_jdbc_table_perf.q.out | 1198 +++++++++-------- .../clientpositive/llap/jdbc_handler.q.out | 20 +- .../llap/jdbc_split_filter.q.out | 9 +- .../llap/qt_database_derby.q.out | 47 + 123 files changed, 1291 insertions(+), 987 deletions(-) delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/log/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/log/log.ctrl delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/log/log1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/log/log2.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/log/logmirror.ctrl delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c10.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c101.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c111.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c121.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c130.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c141.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c150.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c161.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c171.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c180.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c191.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1a1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1b1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1c0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1d1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1e0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1f1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c20.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c200.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c211.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c221.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c230.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c241.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c251.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c260.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c271.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c281.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c290.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2a1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2b1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2c1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2d0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2e1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2f0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c300.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c31.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c311.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c321.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c331.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c340.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c351.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c361.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c371.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c380.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c391.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3a1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3b1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3c0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3d1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3e1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3f1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c400.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c41.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c411.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c421.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c430.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c441.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c451.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c461.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c470.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c481.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c490.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c4a0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c51.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c60.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c71.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c81.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c90.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ca1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cb1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cc0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cd1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ce1.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cf0.dat delete mode 100644 data/files/dataconnector_derbydb/db_for_connectortest.db/service.properties create mode 100644 itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Derby.java create mode 100644 itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/DockerizedDatabase.java create mode 100644 ql/src/test/queries/clientpositive/qt_database_derby.q create mode 100644 ql/src/test/results/clientpositive/llap/qt_database_derby.q.out diff --git a/contrib/src/test/queries/clientpositive/dboutput.q b/contrib/src/test/queries/clientpositive/dboutput.q index 2a76242a78cc..80108aa03900 100644 --- a/contrib/src/test/queries/clientpositive/dboutput.q +++ b/contrib/src/test/queries/clientpositive/dboutput.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb --! qt:dataset:src set hive.optimize.limit=false; set hive.mapred.mode=nonstrict; @@ -20,13 +21,13 @@ DESCRIBE FUNCTION EXTENDED dboutput; EXPLAIN FROM src -SELECT dboutput ( 'jdbc:derby:../build/test_dboutput_db\;create=true','','', +SELECT dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE app_info ( kkey VARCHAR(255) NOT NULL, vvalue VARCHAR(255) NOT NULL, UNIQUE(kkey))' ), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','a'), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','b') limit 1; @@ -34,20 +35,20 @@ limit 1; FROM src -SELECT dboutput ( 'jdbc:derby:../build/test_dboutput_db\;create=true','','', +SELECT dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE app_info ( kkey INTEGER NOT NULL, vvalue VARCHAR(255) NOT NULL, UNIQUE(kkey))' ), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','a'), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','b') limit 1; EXPLAIN SELECT -dboutput('jdbc:derby:../build/test_dboutput_db','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)',key,value) FROM src WHERE key < 10; @@ -55,12 +56,11 @@ FROM src WHERE key < 10; SELECT -dboutput('jdbc:derby:../build/test_dboutput_db','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)',key,value) FROM src WHERE key < 10; -dfs -rmr ../build/test_dboutput_db; dfs -rmr derby.log; DROP TEMPORARY FUNCTION dboutput; diff --git a/contrib/src/test/results/clientpositive/dboutput.q.out b/contrib/src/test/results/clientpositive/dboutput.q.out index 471f074e34b4..0fe4108ce44c 100644 --- a/contrib/src/test/results/clientpositive/dboutput.q.out +++ b/contrib/src/test/results/clientpositive/dboutput.q.out @@ -24,13 +24,13 @@ Function class:org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOut Function type:TEMPORARY PREHOOK: query: EXPLAIN FROM src -SELECT dboutput ( 'jdbc:derby:../build/test_dboutput_db\;create=true','','', +#### A masked pattern was here #### 'CREATE TABLE app_info ( kkey VARCHAR(255) NOT NULL, vvalue VARCHAR(255) NOT NULL, UNIQUE(kkey))' ), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','a'), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','b') limit 1 @@ -39,13 +39,13 @@ PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: EXPLAIN FROM src -SELECT dboutput ( 'jdbc:derby:../build/test_dboutput_db\;create=true','','', +#### A masked pattern was here #### 'CREATE TABLE app_info ( kkey VARCHAR(255) NOT NULL, vvalue VARCHAR(255) NOT NULL, UNIQUE(kkey))' ), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','a'), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','b') limit 1 @@ -64,7 +64,7 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: dboutput('jdbc:derby:../build/test_dboutput_db;create=true','','','CREATE TABLE app_info ( kkey VARCHAR(255) NOT NULL, vvalue VARCHAR(255) NOT NULL, UNIQUE(kkey))') (type: int), dboutput('jdbc:derby:../build/test_dboutput_db','','','INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','a') (type: int), dboutput('jdbc:derby:../build/test_dboutput_db','','','INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','b') (type: int) +#### A masked pattern was here #### outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 500 Data size: 6000 Basic stats: COMPLETE Column stats: COMPLETE Limit @@ -87,13 +87,13 @@ STAGE PLANS: PREHOOK: query: FROM src -SELECT dboutput ( 'jdbc:derby:../build/test_dboutput_db\;create=true','','', +#### A masked pattern was here #### 'CREATE TABLE app_info ( kkey INTEGER NOT NULL, vvalue VARCHAR(255) NOT NULL, UNIQUE(kkey))' ), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','a'), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','b') limit 1 @@ -102,13 +102,13 @@ PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: FROM src -SELECT dboutput ( 'jdbc:derby:../build/test_dboutput_db\;create=true','','', +#### A masked pattern was here #### 'CREATE TABLE app_info ( kkey INTEGER NOT NULL, vvalue VARCHAR(255) NOT NULL, UNIQUE(kkey))' ), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','a'), -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)','20','b') limit 1 @@ -118,7 +118,7 @@ POSTHOOK: Input: default@src 0 0 1 PREHOOK: query: EXPLAIN SELECT -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)',key,value) FROM src WHERE key < 10 @@ -127,7 +127,7 @@ PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: EXPLAIN SELECT -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)',key,value) FROM src WHERE key < 10 @@ -150,7 +150,7 @@ STAGE PLANS: predicate: (UDFToDouble(key) < 10.0D) (type: boolean) Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: dboutput('jdbc:derby:../build/test_dboutput_db','','','INSERT INTO app_info (kkey,vvalue) VALUES (?,?)',key,value) (type: int) +#### A masked pattern was here #### outputColumnNames: _col0 Statistics: Num rows: 166 Data size: 664 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator @@ -170,7 +170,7 @@ STAGE PLANS: PREHOOK: query: SELECT -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)',key,value) FROM src WHERE key < 10 @@ -179,7 +179,7 @@ PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: SELECT -dboutput('jdbc:derby:../build/test_dboutput_db','','', +#### A masked pattern was here #### 'INSERT INTO app_info (kkey,vvalue) VALUES (?,?)',key,value) FROM src WHERE key < 10 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/README_DO_NOT_TOUCH_FILES.txt b/data/files/dataconnector_derbydb/db_for_connectortest.db/README_DO_NOT_TOUCH_FILES.txt deleted file mode 100644 index a4bc14529893..000000000000 --- a/data/files/dataconnector_derbydb/db_for_connectortest.db/README_DO_NOT_TOUCH_FILES.txt +++ /dev/null @@ -1,9 +0,0 @@ - -# ************************************************************************* -# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** -# *** FILES IN THIS DIRECTORY AND SUBDIRECTORIES CONSTITUTE A DERBY *** -# *** DATABASE, WHICH INCLUDES THE DATA (USER AND SYSTEM) AND THE *** -# *** FILES NECESSARY FOR DATABASE RECOVERY. *** -# *** EDITING, ADDING, OR DELETING ANY OF THESE FILES MAY CAUSE DATA *** -# *** CORRUPTION AND LEAVE THE DATABASE IN A NON-RECOVERABLE STATE. *** -# ************************************************************************* \ No newline at end of file diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/README_DO_NOT_TOUCH_FILES.txt b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/README_DO_NOT_TOUCH_FILES.txt deleted file mode 100644 index 56df292f65e5..000000000000 --- a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/README_DO_NOT_TOUCH_FILES.txt +++ /dev/null @@ -1,8 +0,0 @@ - -# ************************************************************************* -# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** -# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE RECOVERY *** -# *** SYSTEM. EDITING, ADDING, OR DELETING FILES IN THIS DIRECTORY *** -# *** WILL CAUSE THE DERBY RECOVERY SYSTEM TO FAIL, LEADING TO *** -# *** NON-RECOVERABLE CORRUPT DATABASES. *** -# ************************************************************************* \ No newline at end of file diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log.ctrl b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log.ctrl deleted file mode 100644 index 72970858356e110cef07212fb0e33cc6c9fd6c35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 hcmZQzU}#`qVBiE|7~ldjxELf<^I!rn`r?g70{}0V1ET-{ diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log1.dat deleted file mode 100644 index 90e9f35f33e2e146ae15654fcf23b933698a6cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048576 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
nGgweVzTIZIV=`efwKG z`a1es_m7QQA3K84-eo=I;+TY+eqVcMUr(Rr@5bNX+TY$TZ!_YrHw|w3)JV_RnC&0A z>7|*~(Wk4^pY--t#7txE^gXQ|{eqN{zC2;(*z~=9y)wqqp{JLEK61@SX8QK-*3P~T z*%N*H$Fh8?%{({#NPoxZ*wprpjkJ!AjJ0RQQ)lL9rI(`FE}?hGUiQ=X?(6Qd`?t|7 zu<3)Be6_c>cT36WY1=1uC#Q!Sr!y00+|B@}KvzImy4$GzHV^5MROktIYCXdMRav z)64TY1L-Yz!TjZGJA&!;04$ik&a4QgFS@;QvsEy?o{$UXpU`IxrTse!&w-0)gIN_! zuLZtf{*9(Nn7*k09J4x*zEcm7Lix)TtS!OxT7V0tkD0TB>9yZjFn!#t38pXRUs7pW zgX#4EDVTqiSsP4Wth|*}n{|QoU4<_jmHD4v=YE64EeNoRk(-BNxc>c50 zlvbF|K>F@t@t4ZCwFJ`_E1z;5dUr5=vGQ43X?lX`wE`{VQ(9$ugXxQIZ?)+Qr0*%Z zy)~xaOW)BU?JFt&wtdpklafY9zpY>7l-oAe-rix`OSR@%Inw8CFO@Z#^)`KfUwfOJ zb8UO3yH#2~QmKxN*!n`UZ}0E#PicKuQDM%>OyAkn+TJzN-8$0K=Ec)B*3&-Lukln= znsf7|A8U8pC(?YFN*_1p+4NC{O*Q{2v%#j9woj+TZ}(Sk>u6g?cWal7=gRJLXK;ka z`oyJ$TVMgd0_##wU7&Q1w1*2Upa*Dp4RSZZ#sUijnq*!`F==b(SYZGDefwK`yZ75R zS+EUP(kLzS+zX^yJG(|~BPFyzgS6xGEwHb@KM<1JN-U|DR)4+)M!QmeGewlV1rpLn z$Xr0$^v7bv)fTIn~r3-pgjY3;My zAia%_k&f1plq@P+tUqHty<>KxWyfu`3yk%(ONU4=M=aR=DU*Q)?NZkM!R=Ol;pgdY z<#XjP?b6k}*hya0*SR5?JTH0CImu16$qSN~BrohwZcGj)hgzCfx1PPmy}mNz^2+6B zoVjA1CofKJNp4PVZC|^tt!dekr5#=8CI`Bc=Rd30b_d$I&~4?g=z{htNAa^hE9vdOgm_JwoqT?}^+c^p2CB z$bCZZED>!eBczbWL=geqpd(97><3Ul?o`htlWi7rNs{UO%r`J5)!)?1?aX zzpyfxzF0e5`h``&^hNt6a)($jeX(}B+*wo;NFSwN=#B%q+uISLU+9hldFhL8uiV!b zj3+|B&>aWz@-NozmVTi-4&RW{X%yf$c?A7Xg?z1DN|j-l7K4J=TkXXv$_b1aajYv?tGqxTKnv5V+^ zLwD>YclumiLwD>YclumCLwD>YcltmtEZs45$120=3-t@#vCypadAo(~*ldpUd3uHJ z*ldpUc{+veSWqB+kv^e2wi8HSq)X_IEsVBB?h*Q3`Sbz>n~7E4;E~KWMePuJ9rLLL z3a-E(tr?BnA9P2XrqLa=T|uuq_|5-GcL(L!cD6fsyS;|!M{;3~%sQ8tm&)b%{-w@& z|0#>=k0S~6Reqc%v(C|}U;WW(S^d#zS(!04TkQqn`j;m8)ydP6hxFh6!tzwUm?XSq zYR$R-B@4Pg{(|yd&(mC~EUy&a)n|`Y35QM+e=5%;@ndI80-YrOO#T_{$F_Nu1iWl62`Dd^n^ZWk~ zdNbHEVy_ot=}vftX0ZLoL44~hkhW{mJ_{iEsJOzw*~#VlED@-(6gyN|$f>i|nRYle~(@w-=<>uaAS!_{&y2V-xUF zCLZ!;%A>a^gFT)oEy`ezCrXPl*yD-Pq73$UqO>T3J)S5nN_X7C^@-A=4EB(sv?zl; zq$n-QU=Jxui!#_liqfJC_K>2qD1$wuC@soh4=GBE((fS!TZml+W*Xd?^5`u}w}%vH z?#Up1p_vA^hZIO(q&?~OkaDEY)0}jBNYPu9ZVxHYI@w=%roo*l&z(M3Ycf}B%%91~ z)tb!J8uQcVYE9;89p;^7XtF)*aQxEx%-foDXUcP=&(oT8XUcP=&(oT8dw7BLMOu?? z4=<3uNNdvV;YDvvx;?x=`hsn}DzAqZy)o&I2nNy@%)i!~DUaTkbVn$s(U#P@GUi>2 z_g%gJORrda(700zCFYWqE6!fiD$@e(9i3g>J-vPX&su-Zx#!7TLvldo7d9o&mpO(D zk{2c~N)E{^!X+|`uq7#1kyU(yN%%s82{PE?c4VVhjc&)wOJ8*Gfl2tngE>sX7r5q^ zN%-KE2ZicKCgJU@eZg9+>i>>Ocw0;EmVTu4ET24*t|{e4Xglii`lQ@nXP=*No=I*i zwU^{a=@;saf+aFgizFJX7FIK)l)c`wxO0P-`yR8w-OgyY9;7cpbf*#v-6*ZM zPS^;%OZ$KDghZjEHV@|?wfSMW7wN-x)aEjYw7`7_KlGpf@UXq_;4)dC-gO|$*q^|t z%@6hd7u^F7XYK(nxF5dI3+|!(qc%Uh+Y9a?J8GlBJ=3E${(T2Os!gv-M?G{^e_Hn) zbhLHLh2!ngoho>(j$94oj;2ISAM@@zh??HN?;vV=|GopchJIAymut2P#$T53=8vPM z_wPH1n!eGy?;vXWIo^E-QSSVela^ek7aUD-4{CcoL~rYeUh^eaJ!M??9vn?6p1v+L z-&{PsJh(D2f9$5u`>0kKqV?}PaL>}k)63&2rI#+%{LcMpK;%TUK3fUizVNb<&LJf`&W<0!s%R7*!3%N{e(OB?QU=J^p&Ce4!Vn7?;_Vv1cy9|r>_p(cThZijd$Nc zV6@o1udTgxq+`s#5;uKcTX})m${HGQ3T-$B&$_5Ov(f#K-D^ntx`!o6lc+IKoN_n0G70)NKUrWwzmswpXy^Tp*G6zJok#XvlHjfw1OZLt}ya z4)&!+>i=@)eYxfuD9X)RFW-**so4YmG# z2UBDHh3~qq%)alS@B;GiqTqc8zuBMeR_f%yWis}l_Z`@|0G$*_Zf#!OB69_Dr$M5s zx}m1Fv95mVNzUG_2I*-6chW#63v^CFrx)~5&t3kULPw{)@4&qjC~Ehs!aLlfrjL1t zd(`xDs3h$^jk-XkcfO6<|MJhbQPVeg_jyH4-{_rhqo$wZmzd}sLU(#A*r6)iA32bli z{3}Bp_~Pjk;S1^`bO?i&mlW^dReKL6@H%Wo^KS@UfM2|WCtv>(^eNUrmj^2ZFXt$p zzdzvO#$UX{CSOGph^Kh^@Bl~g^x+HYi+8{(LIWJd(}yppFP=Ugday$A^cfe_YwM*@ zhrgsMG{6z1Lm0fEzOz_)kPcyRfTMW&@CEh7(}xELig)nB7t|L|9}5i-6z||=Tu@)M z1DSC_eS{8S=z{v9>BAS)N9hoHH}VB~Bt?3J-YsEK7m%i>+c1o{fbuAsYEn& z-+@!6-~XzU#1G}3BzDT)EeUi6`}28cu${6md#0cFX0Qw0ci@!$CY@UEJJ6_e-*@1Y zFY|)?e4gOSlU{J2%R7VZl>7bv&v`T0vv%KsQ~nKa%RXoCJGe}*kO*G)@88XmdELKv z--1(7pS66cF0Z#pM7Zz3sqpXr@Yg@R`wpCn*QVF+&cM&|eFsGwu63b1t&2Aly3F7EkX#p)b$?D$=fWXUe0d zm#>Yo@kC57txC6}8Z~{)n<>vqpSMlv-ggi+eZAL_jG8{-&6Eey7imyt-FHwhz2A|H z+J39?I+9V-*LpMMQPbCX9m%Na>%E!sKzpXhL_?wb4zgzfDsr~p^0rsYVmaGy`P0Xz z*?z0{?ko>)Z~pdY!ka0Nn!ds72uDrd=*^S|(idq@x-;cb+iw1yvz9K$eH)+z?bltm&;P-@#mcJJ9(M<5*}y%BFRNZ zUA~lK)I}~b5I<-Bx!#6+Ne4FUm)gmtj>ggLSST~LQ$$XakuTUdG;&?4T|U#ryIM7dbg**Wp0PK3ERX0)b+%@MT`GU(XZlLizsFsbKGrrOn$Pe&vH1!9L;z`$&#pH%MA3vkQOe1^b8% z_D=a*y3DRHF^SN>oygIDR$M=F@K{Q|9nt@*G{EJHA=2e{k&gdqk$5Ce;EP7G0w4X% zXOogcp!_a+sTcS+@&~@i|Nf_MqytZv-xVev2;73Zfp<&=uD9F-1OG2C@NeV^eDUI} zz}LT^{*B?l7jN(ae>8vKi$^7m7LP~Mfv3yz3R4*f-2T%IymKmWePB!=@WmhT0)I3! za7o7x0tg_000IagfB*srAbm@c_C$!GzjjpWdS5X2@*w804PgNY#0PUi8e*rBxOf= zNt?Ax);9h1wO`wO>1&fVOWQ1M^1jz>U6M9S>n5(_I*t>&U+kvYH`|Gw?fuVecjn#; zViD~&Et$|FaOa+7=FB-~&YU^J7<(CGtOdXHQ-|LW+dlJS{JTSb-pO8`q_007!hi3? zFAHtD;x_z44bI0ey|kCTJRV}d5qg5X1E03zSNzcPLHtsi9NI8y6KZ;y_-3d2mxV%& zp-=+{z}PF$d@o*be+Y!4=j{ePXWm9_Vqd-ZZ)AgW@Gs%|N8mb_gPUWl9$(N8JyZmL zOA`DwPB4GW|3lCB;1@tb=c3Ka0OV_I0bfMeyV>TtW<1+f-^?~&jUNY{MgO*4&6+ni z;0K@SA8;a|C`d2#LD~`~YIfD1%K_8^1+Qz)`BfKXfoiIay`~F%keaJxPj-3J?LJ5?wQ0$wclsc0 zs^5gc-G%>p?b4>Tv`EvF9!L+?Jk6T-`9Re;&6B>mCT`PyAE+8l+@@dmKzg`l;oS6y z4^)l9x%nC&q#A{D^IaZDU#Qtb+5ABds7GoBwWZMm>Wei?!j>aGP&G=zmf!V2`cmyg z{hJR|jYMsYcpyDmGf`XrhYwV(M19-?>9LyU%(m@5P&Lk(ZMXO!)i`Iiz10Kh%Qg4; zwr~4D)!65)!yZVF*WBl=-u2Jptj0cX^{#&&XEpZucC7!cRqzvRbB%7<_Ph_&mfGC1 z?SJZnw6!+3Z2J#sPTBTd2AidTHX?w$F?%-|qIe41`9Xti;b3RDt zG;ZOLw)h}zSqsv+SNI^E+q9KK+UkR}bxla~K1k;^Z{v`*`5ke&Mz4XKDP;_wsyK9*nY~d!(#b5b`86#&^tRE=^q;Iiu4Q)cNGiy zLf2qlq}Ua~PqZ)EpD)f1K_R`HVnhV^r~rPRtN#f25msM!?RhM_m0;h%&I=>@)^wt{ zIy078AuK}#E)ppKY$4J$R~Q`Z>Ma(A2ulwCo9!8nL=+anaEZk7R~8Ett!f1!b%cd} zsF~#UysukL$6PI?&hGKRj2CTZ+#R;1}W-U3vZi3-}Qh4!3S**=a;Ub>5qe(b`=kp)6n#Nf(dtodg>B0yn_y`vx zxk6w6Y_1&76mcV-Z^18k-f^P^{0P2#$1ux=h>m@1ILt6b_9rr<@l1STYJZwWIUnii z#YodA&kc3;&-V9rMTc?_E&kIpj1lLuM3@MRzU2>&(4v z|A?Xf0BZ$JLBf6Ehb-DieSIQ!f@RO4F2Ycs;Ed-7qJu;IIf&ev>gxlZ3BA*ee=7CW zxs_#`2zDHiUOA!Dr|&8*XU^PJ9nYQ#z4O%;BN6riKA|n~mP5VsJyuhi(6{bm*+C*J z!uD~F=LQA~`Tn7D!u=_VG7;F@@e3)sXtM>HhPvw#mfb<16YP>OJCB{SRG7_YG2Y3= zLh(h(#kr*_R5!;*xa3G*%Eo5qky8?v`A?f{*s_a9=ODE+^lgrhq$fy@Frj+Kqn;`3{HA zfqA}wU>_s%3~h~p9x1M@rk3ta7K)3j^KllDwwh8`?2f&XWw*<&cqQ+Op=fRZf)CeZ&8dE$5`Zj_pert|w}6x2 zUw=8v?j+b_?D8->mu*)9KvTU+x##Ezm1O(U6$@R2-N%|rNWi84uho=XmcNeO&a#b? z?b|uqz4=HEs=b`ca-WibWy$uBEa1d;WCzQ(66~AVjxf8LU8&gii9vi}p?U$}6cBdV z6PLZzqJVm$xr6{*hW*dD*p(!4C0+l?Sb=2+WKR@$PZatGijn@|NI3yeuBy}kmp53z zsV90`SeDzIQP#pW0OrE<@>0H7IK5n4>5EjM_wFNXh6cFYKmIKxT-M9|B>c^X7By4iLuQ+A( zbA)}iq~u@m+g4MubGOA}EbB{ZeSgYkP6?~0+G;at9d zxVKzaDA7M5grJRCz^NZ5xUUTJ_tOj@uyO&@X0Lx~-bc@6 z*)0TmA3K*XV8DD0I-g@Q7BIU`SWHCN{jAxm^CiE#-eff;e#yh*hFN)d(Y}E`@Y`RG zUlKY3JBMEwx?S%6r?C0;b-k@D+d}*vVy$6z5xbE1wVnBD$NGN4N*Lu>U+Kob2rKd4 zf+j&`{>nFac&}%F8=Ga>Hlh%sKFdeDuaF;xs1KCmUWxjxcp2PZX|MljwEMP5TROtF zgpt3q4crTlp1PnKH}8HzMu;TSR~@rBA*MH>NgXjlKh#V*w^zN=YD%W;N7yjuIu{x4hiO9?Xibmq0VU`} z3An!cL5m6+>i+X()FZ*pS6m-0F0aflEmm*XI6i~xYsM{n#PyaEB7TkS|C3?M#^Nm7 zAw@jS`7RF6&4TZ8F}DYli01^~*SPU-HNgiiW7!J{_BgwYuhx}I=Xx{M3^ySpWOBIM z-TiMdw;y0zy<#r)TKgSVAJK46Aa){Gu6sD!v%Ld75b|A9Mw6^xYp;K3toOiK=iPdcoOOfsn$;RdYOsFYWfngX_FzdT^*THLP2;{0 zd#9Y<5cGF)=6iU8TIQpjk^d!j-Ou4uhyi`Il`Pf z=ACZ-lNxiMdnyIK)7}4~rWBeg#>QCo3L*}Sk8#EaX7l+-f3DoZ^dTkiFTl$X_)dHM zM~q*Hklf`2J4PY7ZEOo>xMIATInGfL8Y$*oEmj{#*h8$vYq%xLUAF!smgi_wp-ZwX zHWdc@d;7q0xmD>yB)|Uw^LLTJ#|$+jD~7Za4prwnSeTH^j9_~bkWl_Hs zavv?pn!@Ztwga7@9X9E~R278cI0>KRJ@P|~p$PkY$uM-!l~z+)kn&KB3cbZR@4dOg z0C+FAB>lXa?ot4HUSjG+0QA`Ff9ix% z0qAIlMJKuKx5q|Yzh;DYLb0!R4zr-#%Jg9+0528-5Ph`;oOIq^1Yvk5WGM*K#jaC+ zjc+Q5fIQ!jsou5aln@nCED#Pb!>keZu;1A^EQs!P&p!ym*UWOXC&PEhpcTbNYoU-E zhE^=MY<*aX#jFJWTNWK87MENgdwV~-K*c5n!){or3R&P737h1+&ujl4F6ry^dF>x2 zD=p#FZj@NU^$zy*!v2+8x<0JzflMUm^V`3h5S!dY_AgGcNs&mv?O(O~jvSY<#oXtW z|A+liI62z=Uiq&Jor=B79qo5<`Hw^f3*fojvh@o}{$*sQ-z)#&@TJ&*;ZdIv+JF&} z8F$WCWB55TBQn$fJxjDA>a|)pIS!(^xR4g_eu< z_V+-`m0PZUQ8D}iF{cObw15-Cmm@gABl@g09I%B`&Zn69l7wqBuY#!FF+=BIsN{yWnEDzmg0Vl=24{D6>THZ!#tdm_^Qn9<@ zUcC%(LWl_2AwyrW2%!$~Svt9h9d^(E3BBIJCU2CR&JlJa?+z?tqmY1d>$oqG1Q6I4 ziS8J-_kXB6Vi5UrN#t)Ok-v`ZF4-MtvGL65AR1(E4BPuZ5%#5$;<3lEI*xq*ld=6W z9FG~XpZCYW&|DEJpxh4Zmy~#{ivHO1QVTfEh$|3}=lyY<;_>b5>LBm;Y$SuzK=@@} z++fQ;^@UF|qz$;C(;}DF_=~YWaW~=rMA(4nKrYfhTW+cQsL~G7?%m*?e^E|w9HCJj zFo(CL?4EXlt1$r_mtpsA@Q(kZCCC3p@A!v9U9n%58)O*&U*A@pllW=Hc3X6sAT39man&x0+j6I#CtJgvr={y3srTA1yh`d%g3&F0>T;Q#b46 zPdUdu{e4lS43=B%KBh)l?zHb+vP6g^zU@*OEE#2&s-5=ask@ezSBnL>_tkLCu^Bt< zd%tL5i?GN1-mKJmH#J*LDRei56uMocnp6s1u9zz#X|UWH_c7{w0=tM`L^N))_rHke zU5IG#sAZZW8g1-~pjmD>_Eq?`96Mo_^ZTZMwHTv5D7DeNZ;REGblrUHfVwesw;TWGJfgI!am7pgadoCqR7cE-MMSsYSl zl#1)c?EF9S{XQPUuAJJZ5xa8zJwrq2jB=~qFRN*ALUcy#9*Yh#gd>;+e2;g6rU7={ zl_As`uX^@5T0$w=kJ{RI zsp0X{7I2yoS7E&ZXKNDtcuy+nT zms`L-u9TZx%Z=Ilzr=GpoR_dz%fWfUP8@h1otl_AJXsaPgveOSjlJ9Af*3BPz{Vc7 zn$lV>=iivJfUP-M(GoS7I0#?13O(jb7n8Qfk)}Va3(%7QB@K=$74k4 z6K}EbMA#E-2a!S@OFtz0Qm7NQ{F6}sV{D#f_fcES;dws5h5Xzw_${~n_Jk5@xx+ke z$A5|6-B=WH?{tja$ak2<08giqN0SqY{nfEe=!_la@&D;#`vNoxN|_n|YpW^QslTJh zv`T^(k?FpHfgvdBatpR6JaWDNatk<}@OUTo>^a*v(Rl~RHBNY>M-LwSf z{l9D>qH(?uv~Wb|8a~dG_!sWf{`Xl;$uiv;JBSF}m>lSX!ZghlhM=s=Ey84d$*a(PulaJ-12Eq#)VrY|K*~y#B{mE*AtsT1%bUCzmTKkvlbP^bSLuc zcrsjq?c+H@80qwMVl)}AL3ML{giG4zgLeK4aeXmJ3Odho@HZ{ei0dODjfVzR3ScfD zg?#7BEx?|jV~@nOw9W^=V}Yg_{VphOZmHs=xM7_!qq*YF9G|XEixDovIv;wWg^M`8 z1WkDII$D~_`;a~VNqOHFyF+>nP~LZN@kZ(Zv{=5}0_=&c08Umxiua+%EjnnVyJ9h! zC^O1pF*U1+aqyg+9G|Mf5##6#@y6URBZ|cKrJ#tt3#=#T{HrnKhyTT*gIK?w zw(Gd;VaP|+kb~>P@zn8Z6*-|ZhJ4cY|A_6&(S+*~$#z)w(4?FHcLJkCiJ_aN&JW{_ z%??SP@5pVjYjB8CDe%)X7by<(<%S$uC1J%(2Wa_Am7Jh;SeS*<4*VylZnp0BbYdbg znsG+s>5S7cIWsZg#M92vcxv=OJk`+?9ooH{zMwgg#VO8CYM5|tK9HDnI)u%ij2})o z$+Sc7?shWtWG!Hc3A}H-nV1~Y2>92XPJAK>lnN`s?{p5vkH$wQ;^{O;hiCjlRy>TN zPpCaDpRzBI4fiR5I4^E?7hIW%WHHFelYA5VAVmlK!3oAR@C ze5gxO38#ZUCKC3x$J=*1Epf2dVZYifUP+EQdp$t(6X2)!I(qi@>~^M7&OYA3QyJOG zJZa`!?v-%#AMhx$7^HFA(-13imAfj^ttjX#`@ zeUOQ%)L0_rj2t)noC}E@L;g37PFux-*@mX1^Y}EG!XMCIM}ALFVwx&s6#gl8r}TMx zS?tcbDke*q-A~>ZftFE-Bi{2b^>w3kKpidE4WY9>pq>L5FpCQjiC3iXT;7Cd6( zG#x<}KRka{2nm_2@tC?F2&pLL*8^%iI+CcTB~f2z-vv<-_HQuDEVk`-JZ2OxqaO#q z7vmR{rmxZMmw0=|zJqs&2l}B_bflG9QvN5Ep!_J+4^f3|-j#*5*I3bYXit3BF$w(t1{?Lg)j&>QO3*drVn10lN7| z`F)ih_+$pNI|z+@CKQxzoJf>zoPgFl)=egy+GtZwUvgkXH$6$Fv+ie8 zvvGQ-6RE>^TdOzzCG@}kLa>~6paDCM#wTVHX{UoT)Gm6@-)oYG_T!0kyW^vOH{ewE z{^Zn}uaCiyWfG;)pXKZ2s83F&6RAwi=*zuc4*kqDj9=~CmwUY&`cz^Z=5KP8hS)34 zYW&L#KqVl`k&#Iy_rpxpOheiCOAx^Qg<~Bw={oh~+AV#8X`ukg`UCuTg?dkly(dr_e46p zK#o@dgnBO+N{yt5Ij{Kfk)l@n-m+0kCZi_7^H~F zT#^($*ViV+hTzVBNXJ!s^@Xbo z*6t?{93Mq%!69-CU)pvcxT7IF2BL{al-nwHZQ9V3ylL)qNpJdvUz0xE*O>68o7gO6 z?ehQ>yy=ASrYrNj!tCG3X(Q0m&%HIN!K?g@1Qm)w3pO5F&q6T^fCx|X*1yyUm18|l z2+1iuLcSd+3^SCMSufm#SNhnu4FEU!*xxAaW8Zd*r0*Nj$Nq}&vF`$yARqg-*XZ`j z$Nnz+N|29z+h3q1`Pkp^_}Iu@8=ojAqj_BS&TuspG;Xl21*(gO~(7))3T+8%ejF^tOXqmU6wF4*U-; zrwn7*uTD-)W@jdopi6`@dK@0Gh&U9d*v;KnD@fqBM~uQ^DmgipIF>y!gC+NP5^H60 zz3s1p-%woM*>2RdDiT-=;R&=z2k>Uih_D@V5PIps}q>|HE;C0Whh(w+a?);50ioP0+PjKNdc`mLmiKX5E@|9l z%wFBzTG`kQFvi+1lgpcoj&)KL)crsU5=B9GGR=iotZUXBRWm*+W6-satfBIEJ2&3s zM45Klm@I_w+FhRcP`~|wb@DuBJcf@yl*i@-uKy81Ic?-lJ_kSd98m7 z*chEVm;|L<<*#a2x%KVXs&-oc;DVR`2m7tobd?4(*gGRr;dK@DzL?Lr>L*?&izdHD zpg(w9Nwb?y-eOu|`WVnMdpLe9dvkIub0C|X%#Iw-2p?}`W*o7@>_lR6f98O&gghdw zb{TEfHNku*N_!}B*NS4GSWpLSLb@&mccnZ)k>7!xzw8*Sb0)2|f?50hqi%&XsRtF$!BCA_e zLHl0c7;~`|QY+V+#)6_`ANb*r1WDezsC#Wk(yHWs6!xwR283M)CJm^ z=bpTj3?eN%HJV9ev?jBmdVMDneeZYPsf4XMHOr{E@zL8dJvt>4G^orrwY9zoZY{PO z+{WT_a9h4+aGUavzLrxnsnLWxC3thsciwlvQhX*em7E-fu1HLZTm#Q{0q^WjO!8Ih zm{1;siMBQEZ@us7F7b8|eSUu91*2-s8@POx4@tL>g(#Q$Vh$|7E%EJX$r5pMDAf+OMXem1&n*SF3csr+LA3Pt! zNY>8Z`;~e>0bQQX=XktqZ4K@9;HY2Z&)EvU5KIot+tX4yeJ0-$wg6*Y(U|+7J}<*3 zJYoL`mK3V98t@*3-YEh~lg3R@l#KHEr6-x!omIn&f87!Gb?p4g#2A z^WyL71wmQ)=1cU#iqZwjq$`)PL|9ro&o1p0F2(5~IL`5zi42c5`2YsD;=T}cUxkYDbq2Syj z%5pkObB=g%thhXT#_3oo7O@mdjU4alLBS2QF369J@#VY>h@AOn8FBb_>4?LbAIN3@ zw`IiPYa-(C`z0a{FK*ZERm9;*_O+mh!;6ogB?Uyj?TI+3o19;~Y~1Ahi@!|>i*J~E zFaAMvs)+(d_??UM5O}Q#@HHbZh47W%Mzh$p6)5I+8@R{p?)nCa*!7Cr1Ci41uL4For z0<}1#+O*!0!4El$l?P)kA%jqP9F=RGXm`Z9$%*##4fat@^+C0g)L#hA5a?<8fhpCj zdcML{ldH28&Cu%D7a~u|zg!YV!QfQAqi<$9eZ|3v#_|dYMO>>y2qNVifdyu zTv0JBmds-3dm(zb#Pjaer8F+b!p7Y0ZfyjvuETwswRZ)D|4i z%Ht!-6V=unQVmKdf=)h_gw)xcTVf!Pm>`BYz!5cPL2_~A4DR?6OE2IG3MrV`w?Z1Q zaM$~80sD0P?65N`ci~2@UA4WAyXi*TRcc3SostXr4w$i<JEvkwD8DEw4OJgIAecNxBaSE!b#i-R?t@=K)^% za*a*xoE;==4Y4hztTPbsU)MWiSaYmjlHZ%oI~(kt`sO3 z6<(E8@u0iX;xxRd;T|iGMH_zq`eatz)s!x-P@ICSm~A5{ObA77WL*SCpxo!$kb0dH zfTm~GaVrC^`Q92~D5B7eLIoo>^{Q5=SO{g^c#5?&P)9J*_*c4K~ z$Pik`^0fIBbqIV$G(O@QR%BbGGpRTRC5>h4;)-reM?jrBQE*CsBNH=tu(`t27+}(= zFnbBU`;lxYY@hoDWzPg8$4F+}tQgpKdQE&UGiW$umlba2MTQBn0q;aHX*>yf$KN`T zOqrmoznc)5|T3w9&6|?|%_CIvlz__Ny#=t+dg8zvJ>BoO*vz%T6QYxigpgy9Z{dx!)w+<9)eo5Wks z9W_LW4EntG6QG9DOukb(==0idNQ%EBgFau!nBmmpdjKXV3+8o~>h??AcVz4-_I2W& z{}`tpUq|P^Dd_VZZ_r1Q_qr33yziDK?{%-0=)Nn-`v%BE7R+A}wtz#Kult~GugH6v zeIt;(CnR~_^^m8sU|!!SL8)-lH<By{^7FCpm!Kg}dQL;AFLESD5ei?wf- z+T%viI(fDwi<8?TntRrw=Y?94FnC__YOIMV$Q55%>J&uJSKc=cCnuAKk?Y?)4%2`%6Btgp}#va0~&ACiD*z{m{JBdc>= zhb}Y3-?O|nr9m>oz86jRD}&qy01h(3nI1kAexsS`;a%=ipnh&E8cUyAl^pl*F|t_p zXjIj(-^U`-yj|_8x^`Z!1k#>gy&Bj&Ghi@wx@xTYgLYdcXsu6_6&Cl zN)-XLfx5fm@0^}aegLmCD*qLq=p-&38Hb~())1W`R?_JYiT z!Kg`Q`$BQ?#OlfRPEA|%xulI}FZcF8jYHBM#pb5r@x|h&a5tOSe}Mhaa$S21Oj+d^1{7 zK;(O#h(pVRfQ<;so9**o5rE+l2PC+(e2@}cTHa4H#*jkZr@hZ*pUMb+JLY?DPvAtg zC!^3N?RTln(9RXgMYN`jp)tgt5dtj~hg>$dcVhZI59p*WXz%O;{))K^;@D6Lrl#`f zMP)zQJNxm!AUKtNR~bIOu5a%g=u1`aYFTjjKO4|9~>jRRn=K#02 zGde5)i*IU&J}h;qC{_v0jbfml5mSBT`MTy=_?!*o$i&nL=b*3C&BLphYIBN+Iq2;O zDb~BCGiytfepteT^w3eFQ`Ofbm!pcEev=(cY3T@?1oJ-iPBl$ZkV?@H*NI;E$Hxvs zUqgVriw4D%rwghUAZZ^3H|BrWhXn+Ov7V&$In}T3$iV%?9EZcy*O}?>%nWp920JrD zotfcIEIsjy=g_p79z5>B^PVA9vJS6O;e&SB#qCJF

&bgV|gOQ*i`eo)_FV^6=V) zm-ol+{dXd1i?*liq^)n7Nn0P6uetTlY4bFKO*ge2#onotwuYj)fqegvd#6EQZqB)E zyShn-qN;R*a>X0FZXOP@w!YEWR`H8%Xv(v;h#|Qn{C2ngJ26G~C`V$ik+tlRwe=dY zBU~9*VfJ;EwIz$3zx|WaH~$(_SzCv2hvrTYz{WzjLo=Wws@VO#kI)gSJMatt{T)LZ zol4u9Aat}jIz{~k`oauvtq*2kZIXFg?{M#bP{N_|wwiR_R&PF%>+2tKZ+{4sjjP#} zN;Z7g>c$rq{h(w&%sh>+Db7IxVZ@TMrF0zCQB_aQhDZg@)pqD($Egd2f21%%oFkY@$Y!m0O2$R05luZYOfbN>$?* zPwkhiJb2N-P5h&Wdu2ubea=WCb8`ZhCWs8RsH`=`6V>2#P2#vjP{*2yYCaFFtzvuC zhNk4DaLX#al=r |^UO_goMWhG4FHl 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

-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%0Av7zv44b0u-gVc{aMHOk~U$ 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 Y00bZa0SG_<0ucC}z*y!!dGqL=Uo0^$Z~y=R diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c111.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c111.dat deleted file mode 100644 index 71b1f8d3f96f1adb7b0cd89180dd4c7c8814d408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$D-Oay5P;#?Hfby21~@Dj5)up-AQ%j1KmrL4gX9F{!tn_B#13R*- z^zE)8Ur!{d{xaA}R{RKPToq4+?|dVDb9PbF_SsnHy!=ciGWW5EjfuopA7DZN0R#|0 a009ILKmY**5I_KdUj;_8a7Qnv;rIoJ;V!rU diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c121.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c121.dat deleted file mode 100644 index fbf18b9c97f9d8c1268253438a612ab37daf5f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Jrcn{6u|MfDUy_qK&7NoIfGHC96^m4okporx`EaOoI>LQbZ)@gugr=tYV+Tj z?8ke%d6Qq4m8FOneQe8IpSwQoVm^)O{1I9${Bb$f%v_&Rq!l+AEw1aYt+D)JaBKTh z$-7*jd)2}8lOlfKOYdry>z5b{1Q0*~0R#|0009ILKmY**{!w7NUm02Gm&G6K%*~3o zZ;knSA}{pHU?XL95zsiRPR0LxBRzBWQPT-od-Y(;k7ODmcO7lv>=XhF2q1s}0tg_0 Y00IagfB*srAn?1uP-cGfWj8rK0W4ZBr2qf` diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c130.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c130.dat deleted file mode 100644 index 7b2a6548baada97b880355f2e256c0229b1eeec6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$F%E(-6oBDZLa+k^n~90Daq|G4fw&s3fhKNVz!P`@@8c!hoSgMhcuFb`PA29r zp_KQUKKgA%wj$#6ZdwxhEcE@(^8J{O?_G<+A759RsoQK}lX5NY?d6;2)vv2)t?n~t z7md4x$g{}6x}m1u4`c`-fB*srAb^O2lK%zz8 zQZDwL6DO~;Wg{YLSJ4s|Qy1e9>T%Bc&$2brABS_RtnA7~x?z&q;x_);T9-eK9zFk5 z^e&g^-|eQuXc0fJ7Tucpu9jnf00IagfB*srAbfc-x z7T2XnQ>5oyU(=m>GK3I7009ILKmY**5I_I{1Q7Tyfy?!%vbQ^h_kH4LgST6Te3VEt w+dtJ?8`koPpUPT?zPAZx2q1s}0tg_000IagfB*srAn;p(mCUPx=lg8(0!6?R4FCWD diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c161.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c161.dat deleted file mode 100644 index 90960e6d4a00549e71d007bcbb2ef09b92b2e39c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$yA8rH5P;!xiXCKFiCVpQdx}N2skz;`X0tg_000IagfB*srAb`L>3Y^Y+BOCp)_=BCfS@HI* zvEDA^g&r9krK}GEI%oA$@ju_l(A<62EJM{EJ=peBS%iu`EwGKVt4|OSKmY**5I_I{ X1Q0*~0R#|0;0J+;to-h3cbmTed?PMZ diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c171.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c171.dat deleted file mode 100644 index 55d40959a493d5ee3bf7cd04992bfc655896f7ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 bH}*y2{ZQRMWMCBl{Qr5;!@vE~b5s8ZSPa1@ diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c191.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c191.dat deleted file mode 100644 index aa2505224f3902a9ad40aba22aee291c2cd7570d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2ON<;x8OQ(g*y*0v?)v?V6FW{e1Xhf*vAuQ@*q)x6ac6tF+uc33*ETdbj{}^L zh$V!Cf_Ny$a06}#1t~X#1RTR9k&q%GaflE?2u>h`5IG?s5PV-# z+kEEIvsX4dmtT2_{^iewt!H1|>fjI#M0=4PCEby`n>b!1!k8NhsHip+vywJgl!XTh z4-_6KJWzO`@Ic{#!UKf|3J(+>C_GSj;D6r(KSoTQcphI$yApq}@%Op>|2CeYn*LHp zbMk-G3`+mMF`NF6Z>^}jdYbf4^LNVfjp||ozrA_!-o>rWXSP2}S$vwnUwP%_?QKww zJ`}OlvtnzKx0jnR^#QABMb};18j2{g24Vs!8K~<+4q}}lz8i$j4aXG&5h>6r8v39X z8YyTr^rnb5n)--!tP-N{hr$_nyJAma$_85c7*<9IGxF@%@x8zbt)U{V7-;L0QV&l^ zQ%DV~`jE6&0};o2fpEOOKk;w5jcz6bc%6)vZzs z2lPQ}Xp@%}Xi710P@j^HRTK!@u{a86gQslbkUlB3CyK4uiDJiA_LLhqtWPbfFhLez0YAJs&Cf>OqmnmDRYsKX$_s28jI%QYNZx?f6!+ZhreO+L~EW6O1u7p-s- zc9m5e*JseQ4#m*FA?6V4IH8XqGeQx#mOal{!^vz$mfCp?N5*QWW$%uHgjdb36{$t9 zQo|{I+7>Qk(h|$-CBoy;Ph5YHSfPE*p{@`8-n1nHr}bO9itT;3lz9G4%bAL~Z9Jmi z;2E6GZg2tG!lfl>?xTuksqOk*I}}zdT;H~0UxrhkVyb51vObCC7n4Ha3L3o`6wB7N zI=1yur*MK%w6F$#KxQFoz-Z9K0J8k-Y|cuJ9;U&Rah6nZSOIdMpjSPBU4lZ33{6Z#N} zscvpet>csWB#J2}<;2th?Cj{XPU1MT7J{m~7pL1I4gjNu9ZR1`L6t#V2r9$CPFJ5v z!#HNnN0nh>$JWQtIF2#%9js%gw{Hr?l%jAn7!B-*eNz@=%4jZa+KUr~2MQ19dZ6|` zy>~|K4!!`ae2C9c`F(m1jgm8<7>+qN`Q9$|Ijb+m)6c)677W2J)eC|*t>!6c=6H(xxAX8 z3gi+wEt5YkkiTbgAEdB5uWf(pVl&D-Q%?y1Z7p)StekjCku^fkM86rb2?GcrcI?HtihaT3e6DcE_WnO3W1h!D9n zHT#^QjK^7tu$rYoT}=1N45yc|vAfl$gie5;p4!XAZAyq5&N>)2}XSZVD?$0lG^XkUWfV`SW$G-4|@t`U_&3KhLi+Ir%#K^BF)58 z`m_UBOD9E-o}cqwtm7m4oZ~o}asnZC6Dy|0k9JI+E$0FI-fZA$eVpo~G;6w?D3>+y zQGJ@)+Bn_~%XP*xi(Ve_E)`G(A~T@2~W7HbEs4Y-tte;hvL+uz~q zoA2WeX$QaM+Lf>3Q&e8!{Ji>W+@#JQZD}P~f<-4+U`Aqpk=9GWH z_m+3%F{CbVPTKGXT%)$W!dI5wreE} BNHPEb diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1a1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1a1.dat deleted file mode 100644 index 9d14471d1bf4e884d70605457eccbb71a4927977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2J8vCD7>2*yJ!f{$&31s8J4qne3BfRXnb{dgkt(8s&;*HYuhdB3+712#Aonzu zC=pUB3aUu?0~RG!#4m`bfNy8!_<}DVk)VlYCBI(JygNJlp1nPv4{QTKfIq`BGRlk| zmu3I)HeCP9E&pgf_s@IS^A-Li0BcKAfIG*(FI+x7tM|8Smw&MB$Hp=Zo4@0)h})fn zXKjmZW}nH!5$Ff-esEx0gYRAMu;-x|@G*SudUi|;K==!; zENcWI-1#Je4Y*$RJ?C8UEuNNot800_)wiA4!bZ+J-Rr#I5CNMWZW`e*e(?$T1bhNM z0iS?Rz$f4n@Con}D9^`Gq{J65y|9tZV|9=Ua*nIlm?dR}6uo&_G zo8$QJGK>zP`w04v7#=A<4hM$kyr?-(HNo&<42kt;yyIL`%pb47#QKF0oJ(r_Xa%O$ zU#2DJSWdXOrZAqt%=%R(3!Y|#KbXMW`gN+YW>laEl zTvGmM4PLPRQsfOUDgSr@m#trmw&9BM#}in${-!7zE;?%dEAXQA_ch1)P=1!cOU9qK zIbJVP5#vV-c-i<1o)`G}Vo~hE8d)%hSDe4c^IuWp#|&Pz{-VS4M^fWQQ+Un#WrY>H zlJbvZc-{Jy#`8x}ezpp4Sbx>v@oLJSByh$0TiF*}RzyD0DqJ;wk>+*573Gf;xMuw- z>oNa=7(bZ7o7Uf{9P^?4V+L;-zsxj_uPJ{L!*%N~L{o6l6Y~jI;ce>|J>E|wAvk7ckzsm9YO(ij(U;#I*Uw3#vRMhzK0&ZG=SL5|tQsa*kc*pq5rY!LK zqMk3|8Wy4L23dy(ps5`s6S#BFY`|-QSFom@0Lk1vNc}ILfKR|D;1lo(_yqp<1n|uk zzc(IBNCDWvu+H|4ZX3O8bbZkAW1|m@?i#&sbYsxb6Qd7}?iuZkN~3Jh=)mZ{(QTu5 zjjj(GJ~sNm=&sTGMmGixo)~>-bZ^l3i($?|Z(5{LHYgkz-8Z^z^fr88gZ$&yZ?B%< z|66bad)_-0GsXXIgYb+>z=iz(6#v6FZ%>M68P*F@>U}YB{I3et;QJiqkC@|sB{Qrq zl$3w8(uKS~_`S5iuRzo-18h2#H9 z3FK`>`Pq{HtE$A~)s#PBj{mE+MZctYev~-=uhRzSuPA>!cl=+g0_#~R#pfY&{9kuH z)|*PoKb|`N$GHpS)t2~t!VlJa92((-?! zM2ht|iqFF(|2Miq-d5E3@yzjm)8_*DmKuLNcl_TrE#@gHK944j|2v*zJt8fM{DT$8 z{~g||aQ@WzY{l_^Co;@OQsYN+$N!ydvEETq{_&FkJJn)7it@8dj{osnTUhUt6h22Y z$NxRAv3{p0KU;JB->Vew=PAYWLG1Xy?^3)!my~}rgMHCNtPF{x(l=OBSb|*uKFh;1lo(_yl|cK7oIcfF=La%#XDIq-b{6==z}N fk$=2rdN&5WnE&J6c-Wx-Z580@`2W$LKYjE!4t`YT diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1b1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1b1.dat deleted file mode 100644 index ae562fbef302850a46f3d8efa47ce588a235e3f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2&5ImG7{;IJ?&+%T`Akgwh%qrHW}|VW=esvqb<`L|LNEjo1VMKsO+d;pCcIn!N})mApVv|*m|Xm@*;yBYRj z@5Kw}I_+$b_q(l5{({Nz;|RZcX*17V5x$d|2wzgrB8u4_FcghMMro6hAeB)%q@<|GDBRj8 zRZx{tdZbiQlTrGl)KHgE2Bg%{kWq$)62xfAC^;z#dt{VVQZ)98C_UD0kl-d6g|!=` z*e9c~c7qD`izq`@T{*_hG777%tZ<8nlJmR78n?C2ZmjH)YvvTss4*I3%Ok8BoJv8O6?kI!?_|imYlmuTpUZ zr)3mgrQ#~qWE5Vd;u;*1>frn%ij#1piXe7gMBE@?!dRT_xOj0pM zkH|2bN=jk$s0_nvjM5mLkzrWCD#7S68HN?CQjE^ZFf3tJnY)?w4c-CofOo**0lzHYTgE&p!y6KeVq6LNadYL%M&VD(L_L#qDM>Suht-n4p%s(!ZmzSVQo^19W7 z)aaVk_pCl?HKK;!T7AuGhZ_85^<%5gTRlK6{bcoBt4~-BsQAX}6{~AFH9q&R|9I=G z8}k22oG?B2k9%kI-}3+DrGaB7VCnq-pZmx$gt+f z|Aiv^(eQ|QsIb%V*Vq}oRO;HE*XWss2YySDD*|uaZE;`FRFpN zWfYsZn>a3`aJAPlR%8^;X{~TVM&X>+8u!R3oYOkNy)p{tv`%qSL}{~jbp`jyD6Cyw zMN39u?dsahU9f-X9q^EMnru&9BHJ&soA7_;|Bdj2 Gm;MH6<#vt$ diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1c0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1c0.dat deleted file mode 100644 index c5b91e2c3fef26113800b2a821fa2bb19fdf1105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1tpC<-o8(9=Lg%K*#}rA3TD3rJK@(l7zbumejVQ7{4=PD~;b3K|OZ zBiT9MS-$vnk+q1Zjpvj2IrDRS3iWo*;(Pr>>5t3OD$A-0<9P3_pmW_xQUDh(^bLUeR^QorsGgwRhxSeZerK=R_$3sS&>;9{Cwm(lE17DT= z%L&7~e#|&&;?Fg_>sjs^8XE{e00Izz00bZa0SG_<0uX?}KN2_`w?@`_v-rTyTvWW> zHRjuiywH)sUdnn9&>7WL@ttpEWNuzHRmj@WgPjG;WDzn~r|3|^1{ee&009U<00Izz X00bZa0SG_<0>2TM%F-89r%Uez@u)7| diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1e0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1e0.dat deleted file mode 100644 index 761408d3b3483e2cb3bc4d3d46e37c5e92d2a255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s8gMx)9XsIY^8GsoOEn*EoqGJIjUU*)|)wt@6|}sAD0WOtjp>!ZW>r~9~a-eZ+^K-&Z<6h zQdnN6BCjSb=Z2ns-%=rk00IagfB*srAb<{9 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1f1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1f1.dat deleted file mode 100644 index 78d701f45559f9fc67104563ad350118d55c794e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c200.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c200.dat deleted file mode 100644 index c3a7808dd76bce2cfa24ab40d4e9e5d87dc76d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$1i=Lb3s50M%K*%PXb~gO0uod#zy$2W0xUtt2yk3-Nn}DnLxH}d zIQE_8i(i+>PDFysP}eC&nJma vuIq>4T8HfiLRaS1Ri_vsfB*srAb95yH6u_15*-aC4FwGwFa=XE155#DJC2+XkZ936 z$>;moC%?`o8xb+OoLH|juTvHCX-w^BDUI+)cdnV0u0o^}i;Ol`|EsjNzf2yza4NaW z2l{v2%qVFR>T25eEOxaR4g??o0SG_<0uX=z1Rwwb2teQ;2^`K_BWrzG{9s#eYevS+!R9<8rQYf;t#g zG2c#Pxn3FUrKm3gI%oA;@ju_l$Xr9z4yvrXdT`}uvZyld;R@Tco6!(J009ILKmY** W5I_I{1Q0;rCxNLf!~V;?yuASIbS~8Z diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c230.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c230.dat deleted file mode 100644 index 16b2db882b58e4f83031c5983810b65debf78f74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147456 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 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c241.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c241.dat deleted file mode 100644 index 3d5e31d8639887c73fc66b66b569cc9ec324f48a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1%W~XA6o!vx#x0G;_V^y#0zx1-Tw>B{wQdmb1c;Xut1Q?_8fn3jg1iCY4S0k+ z0!6V%vC0Fm$eIl)cmcNI^e;Q*3MPjwRZ`Xb({uXkQTLg@TP+RUCnAqu?ifK8^rD>C zUyO12+1c?z_+LMM!8PCTDPon&C?f7a!Grf zQ#$b_?S{~hfguA!28Ij_85lA!WMIg^kbxlsLk5Nn3>o;pW#IRlr(e^z-0SoE`vtjM z?YsXN$9esW70TyF2H#Qe{6WB_rRS~AZ?`?V9KZ4TXtn)HI2#hDFC18+*%!X5+BeMd|u>@ z)MV%_q1CI5$ObO639<4Ws9@_)Eahv19YWXwzcUsDu;*JWa?P9*=YD|!Wd6(?<@ z6UqPUKD`P)Ep1)sMDqV!(QDvsoEFSW{-67F6?|4^DfdV6|2&}A!MAbFD^eo)e?Fya z;Onx8IiHgMHx#`AUdKhpyyX84pWX!Dl;x89Bl>@vu7fvmRr7cy|8FXK3w&JG73Wj( z|E5nzeShMnWM1-j3?{#eQXJ3ie6Um3&WwUYmL0y+l2tP;+rmHfY}=zZ|kSpL1N#Bl>J~O|L-Z%J#RAho0a^(=Ti(msdDzSmHdB2kpa(3KhGB{`F~$g0^U{?&qpiy zf8Qqy-k6%_yOsQZpeO}jRt>KwR`UOWPZ{{eEP1`MlK&4C<>0HT<@L}?{y+4o0G}ni z8PHbp|6xES_^yt5Jx?Y7M~XfGUnGXF7pdg`$fpm%>pJ1(|or;`7p8J&R7>XP>ZspS7?l@<#$XxY&`U}*wGYqYq7 z26bKYjwY36K(tPaPtbr@Pu?=6(iDj1wD=San!4pZSt`weXoD7?p@B&{-t?u?B#1Wq zefyw82L5vfcxTSHc@t=G>lx-yTLsdS%HqA{$m&MptC<6v+~qMruUsH=omWt z9<>ip`_Sna8vfwQK6C>0pwm+@P``6!4;p6Rp%bXrM-&+7?8uc@pwlO=te|5kLBq!` zK7j^LU3mlz|8iv?I)Qr7-~kw@dg#goT|IQ;n(n!Xf{y$0sf&c2(+PC;6LR>Yi>yFL QP`XWD^*_*~XOB+)27}_F$p8QV diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c251.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c251.dat deleted file mode 100644 index 4b963f10a98c2a6e6af8bf4aeb723c4c796d8bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeHPOKclO82;>WcGu4P{h|+4+Coc&L#djiX&c9JQWNJ<+i3|>2~NBzt{gk{qos%g z2WTY@T#&fI0jWoX1mcL05D2MA2rfumDozNA3sR8~2vq)m*K50JOc+y%hi0Sv*`4ux z^Ut?4>-qkf4K4$4(Jvnjmenj`771(zf?$+MR7&+ zR}?&{{852sG|q(LK~nIMg_)RyiXYT4CeQ>Q6^{i^hvouOrF}Rq(28a%9S=-KLh<+B?4Ul)I43EvX`u``k2LS$)fUPikQ81P!+ zpGwE#fp|C;4+o_Hbod0k&=p`#%AHF1emWAEj8U+%%wIGxvR6L z3}U;6R)K@qznyy(MEQ1i>u3|)wC#YGGO0^N+6$7&7jlVIrXWFqXhgffgV<9WH=IeD z&r3k|Y3LAm7zcKMlqaE2N9PVC(Cw1P6*{`C=pK0-OcWC7>;;)#-lL;ipdYdk#1=!r zaG;JU!eBEdCY-kL8UZa2gy*LhWEgG5M8Fzi&i$y5)HX~^I-U^1Tp+qE%W8YoEKZ#& z1{4E|0mXnc1Nte<0NU@EB>N#I$iBcjSsUZ?hM#y{z2RMi$X;Tl-LM}KdI$X$m-4)h zS+a4~-r_gVOY7oo-r+75cun5@GpD%U!ZO(iqO=+R4(7+wY&8HE}G?n z6z0~$wKbu1?X3ToE@{=j@*+Sft+xKZPn+)@NnM_Q$xPsSG>!+@v(O5F)C&Nb!4UzP zKJhFvZx)kT`N_18_Ch$SAh!0Lxsi}*gpX$7&OA0&B$*UXtfr+Dj?dsY08K!t4K~8n zO(}pbgSEe{DXiM-5?U^U^}a3rwxG!BET5(D?G{;3amf~SXe{MvN==kV^Vw>!Xs4UX zg{fjmVdB$RnNyI7ic^qDrZ2cG@og)_vt}+|m$vgYvIO6cec9yd+6p;wf1*wFv>-YD zC=S(xt*9{hG1R5AN*}`En&@_5$5M*&@a;Ma_rrK(2l%=|Cf$~3F7KbPRDBEUt@mdwcTHL=>K=d^=T$H3Gy z*85c?*FD5q?)@h_HNIn2vSL6npcqgLCN)^naLaS^sB~#>GDX&A6Y_ diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c260.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c260.dat deleted file mode 100644 index 25f81fde784105363c372eba91f6175388235f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u@b>R5P;#mn}{nEdX-A+0X&0YhQeq(1ZH$RfG6-+YQ4@Qur682oG3I3^Is;H z&F;-@?&~635pjAyhmUg}=lW#zdQRheIg<3p*NIlvMYU^-I@&zg%Qw$kSS*vh%Fi5J zHSdNZuO#5CmTJJ{onf-wck!@^`wyH wy1wVmRobsK&Sb3DTxM0C2mu5TKmY**5I_I{1Q0*~0R(<5Fp_@J@zR0f6#Y9cqTpT@tH{d|bj(Q4xw3HM?<81yW zJlgjPFMJ!7gNPWtsu9_k*cb+14|6(y)}xdDxLjyur&lI2@SBV_*Y(%Y+rF4RM((NL zT{bbk>&;ApCT?FV+Md~|m1BVb0tg_000IagfB*srAb`L>3S6#7BYXWa|AQUbS^D;^ zzTPb)sU8`eC2I}>dS}g3{y*Qy)RZn8ZR={R_p1F;=CZ15Ynu~^Z!SSZ009ILKmY** W5I_I{1Q0*~fu99(*|@z$K1^TR&n;~L diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c281.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c281.dat deleted file mode 100644 index cfed875dfceab65004fe1b91cbefd660cea0ccb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ar8VY6oBE^iER>v#vwtWI0HeW&}bmRfk1KsZonnr0Ml>(Y%uf+c^G zy|wRkYxcQ4S&N9#%Z|jw)WtZ2dYsewvmA}|$K_NjOTBWDPS|Aha9w{Lt;e56kDh-j zdY4P|?|L)C=n%iJ7TuZoww7ao00IagfB*srAb{RQS&~GB8)4O?G9~wjOLRU?Q`!GItqmN?d$`hyVfzAbchAM`1#m1bdH?_b diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c290.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c290.dat deleted file mode 100644 index 4d10db46799e9d59746cd4b6c1e17c2cf3a553b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F$%&k6oBEEAhn2tp1{%7#YwNAxO5Ql1g`#-IlRrIyyRnZW?ltk@ieG4FLoYKmY**5I_I{1Q0*~0R(<4FqA=2 IV18We?qDStyZ`_I diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2a1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2a1.dat deleted file mode 100644 index 8e2ed6afe90b6e9bab82029f98a338a3cf455bf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$yA8rH5P;#cizFp%Kt~A`6*C}eBo?3sBr0eqk?5&tnSv>p0j7Y9ACVIR5-s{I z%49v}E?KxD-)~u`K-V?%Zx)KyfWW diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2b1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2b1.dat deleted file mode 100644 index 2a2969247718ad8c76b895d72b43a1f781e3cbd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$p$@_@5P;$9mTZ$e0uBoXg~t&L2Ez*=fdq#^F2VB#I9>*g1jie|tzDOH41y+q zlik|8ZkK&-m5qoPy^0apnAjKwUk`ISf0m<>{?NxX0$OL)Q~p2S$iQ4&HaeHpSnoyqnM`C})($o&5?@_{hyVfzAbbTe~jZ7z9oJ zP1cXQc9;F!Dk~8&`s6LLePa8t^Z78Q^Jmd&;g8FSW)}KnA}znkXmMSCZH?uR!&}## z3f^S{y{itU9~5!>D!r|lZ7MMq2q1s}0tg_000IagfB*sr{G-6`ur{*PFY`axk)5S) z-|F-AM3U;2!B(>JBA{_rp7Q_sMh52WqS2|y#yZAYek>iC7P-BS`ISU`aRGV+5I_I{ a1Q0*~0R#|0009IL_*q~ibGNsBpFLh?bT1nK diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2d0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2d0.dat deleted file mode 100644 index 4adc6e4470f86182da42ea94fe6881290c97948a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F$%&k6oBEEAT<;RZ{Q#zZXTdlP`ZlOP{GX$cmgjaNLOb!2M?gnw6P`D!No!T zl)k3#g}mn5DjN|odOwHtG4Zh(LcN*O`MnxZ`r~V^l~q~ohebVY?!wDA&#PN3qrIxn z9A7kVrXsH@rJ7uUx zg-)XDhvrnL?NR4W=KdOJoJnrdy3Py%1Q0*~0R#|0009ILKmY**ek72|r0jG%7o!J8 Ck`^og diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2e1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2e1.dat deleted file mode 100644 index b37b9b254234c4de527ff90f13f4624bfa8f98c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ar8VY6oBE^E!ieH0*(X)2E`c&nlm7Q1cyO#0ult0)1YQB;NTSS)~-u820@d* z%U;{}x;6XUDk~8&dKWFSF|jcWz8>au{484|{c$?g%0ll90R#|0 a009ILKmY**5I_Kdp9RJ;cWW<){_zC{d@qgw diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2f0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2f0.dat deleted file mode 100644 index d854b4b482d64363d5e58c63e9e4d8e5633ff2ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI%F$%&k6vpu{R%!(Y7eR1yarFS6LEOX}cmNgLynu_2p1{Ssh?j8m2Kr1JTWY&H z$Uo3Dc`wZ)zpbq{lAK-d*6@Ao`(hXJ#h8tsSu2HWr!&i}(rh;@>R9n4Olt0x<(HR3 zzqD7jZgjV}8%v)e75n;{$*v+p2mu5TKmY**5I_I{1Q0*~f&UWNpSDhGJ5zYUj{FyZ z@7M8=FCD)b+mk(a%fpR_-)$f}$Mf(7jh+<3 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c300.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c300.dat deleted file mode 100644 index 2053e0105b40818ea4cc1ea3a6c1cb5edb9972df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*2&3Y>^6y0a$=0qM<`c2CTypbc_HOCr5$_1qBWI zw&I-cEIWQ(WGf<0pQ0sUOvBh5tlrFNe6L!R{y3d!WnET>wrHS-dz*aozWK#6+N=7^ z?5cS;7I_}hvTr!k?^`OQ5I_I{1Q0*~0R#|0009IL_%DIOY3F34ce4NcBt*TpTUtFT zbW>fQxl5hy6k%U-nQPBqdcBAU0R#|0009ILKmY**5I_I{1b#0tkx_Zb>Nq_=05p*m AuK)l5 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c31.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c31.dat deleted file mode 100644 index f8c4ecff3e26c99bb59ee11727fa3860ad6bc023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI1JChql5XW26=`Ee^fe&L|2F#g<7tic_z`*i4Yz!_U2W0yis>q>2P zW_I4J!}4F#<3#n!uOH%>&+**@*qT8N>>R(ZJuWXhd+ScGU)39JamD%H@uMM(PL}v{ zpLHEC@v~J{0jq#jz$#!BunJfOtO8a6tAJI&Dqt1(zbWwBg@e!F3yga9e18S#QTy7$ zIA-Thp6GP(Cxfq{cmIcgrKS5`v&ZcQTx{H(*2?K8{q)epK(4_@)0(sRNgX$TMAL1; zKAejM9ny7#D1@VnC~~~Ai1DjP@s&v>1hk;hg`Ua#b$k!{CLh-EeHfU0TE`DyX!3a- zKZKFNyP}RC!I=3l_Eat;$FCeWc9m1;yg+x-$CuKt^clmZ*?z4)n=mo?T74$4W%5y7 z{9CYX@-(4q=XV=+OkUOTJFsi=wez(L4;j2CYuayi;FQUGb$l20Og^aNd+@Ny*XiHv z!)cSx>e?T`BPL&$pUokhF?hc&Kbs?X)a2`~-{u$|Gx=IQH{o&SG50-OBPijE$SI1f zbTXwD^1nHOCsy&fU($5XT`$cocybl*`DwYpZ^PN;eBnevL6_Tn`#bOy^VRz1Yl?r( z`qt{e(*_^Z>EG(YGbUemeYJXU&gAQ^uT~$PHF?&5UHk*sH~HG}4&l7PhqdD!!E**L zn3s+WbncWzI-6hIF9Kcrb4u5B zoz#mcy{CM&f3>#Y!YV#1Bf6aD`E77k@k;UbG0*S7OU%z-FS&37$B)IVecUhHN}pZ0 zxQ3_Yg4(~&Z*)Mc;f?FDYJZ~(at%+*^?dt1a8L53=V*=ByBFoOJgU-5y(}m>{*69( z%!}9!{p$V!`7p#gi6B*r`~duu?PC@MS%gVlmYfe5l2maX$9TW7F@&Jv;{dlNf>KRTq)_$Gb?A@i|tQ2~hwDMjx1Zdf{bpg4cXLDK{fKZb~T9ZMXM#C#?` z%VXR*LSF8w_Enm3Jev?RFNB{_oOSU`KrtW1Q7!}}%=-AZ;AQ4>mEw9Ed8Y~~Rc@|h>cN$m&^mSURP(BfqWWGLNy>`$CL{+{NEvS1;ju%h9EJC) z(==SPI;}xre~PB*NKCQ`&jxkV>hN96B9Ht}Y(~E?{oF zFa~_YO5Q)&gXcTaPXkBG>gFC*)uGgiQlo>(_rWTMG!)a-#c-JZjfziM|KjK$0{-JV z2+5Al06y0B52!r+hRTCGRPOJQ?cFB3am1GE+xt{*U+1%x<(e)ty_-}&{+8Mq|I9Yw zHZ|4vZ;#P6( diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c311.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c311.dat deleted file mode 100644 index f60c260f85bd9b0a9e1ac4fbc0967fb1521015d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$yA8rH5P;!x5`~no0Ud25Bq~+_(au1>-;g8#yW>(rWk*+^vw7BlSw$}3J(Y^1U z3f^S{gPTq!4~n>Rwb9nhcC{EA1Q0*~0R#|0009ILKmY**{!!p?+!|Tym-!#;$gVnX z-|F+tMB33SgS}+cML_GSddmOj8yT9bi^jb&o9G;C`MFHBFUo8&#oCjH3os&p00Iag afB*srAbVZcRFqIrAO@g9)UwmeL4+bQhZ0=*mU9p~z@+^}kAM`^)&z^QWS_ zTwrk5&5WWZzOJTS&-_q};XnWa5P$##AOHafKmY;|fB*#kk-+J^H?q~2g%5V(tnBTr zA>T}-nT`yOl2?O(R;xM{{`p3R=IW!JewnqS2RjRx%d*Va%{ER7YatMT00bZa0SG_< X0uX=z1Rwwb2>e7~Dr;YVTTNy!_+>2u diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c331.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c331.dat deleted file mode 100644 index 85ee72b31368516c6de9fbe3516e0e3229ea2755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdl;)Kt~BQRLp=V5hG9o5*-bqVgfc`3T8;b1Qaj@ob5PrLO`NL z-;y2s&dJHIi)AAsM!Ri^8&fyNL&(Q5oj=Rg2!CA8G_%s4i*&;#qs4XowY8Q%j~_k% zR`e|w=->5WhEWl}uQs}x`K}gYfdB#sAbHq)$ diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c340.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c340.dat deleted file mode 100644 index d99b11a3f2dfe2333989898bca9463dfb265ef5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*mB8Y(Rx*8GwQbEE)>L8i0goSb&C>ozfsN105s4;lv~|p`f8a z-%*^)o#l&P7ukr2(fc{FFxxQKr&zD&G`^Q3Nq>BuX=PPZ`*BfEo4fe(&GY6K%Ve+e zGe=j=o3Y5NNyEOOr`tDFNFjg#0tg_000IagfB*srAn;!Thtt-`TF(^!@3Rnf-cA|o zNuh0Z{lJ{7bZe@y6)$tWym-^CYD5SifB*srAb%c`MXo7z5=i5{uUv--&9MZ&vF5D`EC d0R#|0009ILKmY**5J2E3fuStizH|39egYK>F4O=3 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c361.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c361.dat deleted file mode 100644 index b5c8f259d0d1fefc112f60325bfde24724aded2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdl;$3Fs)HqM~2|L`_Fa4M=n}luW<|Ou-be0fLqV;B3c{69N(~ z`j&FB@0?h9T~5{_V)U{jaWQo<4xt|Bbp9+xE&Xvh)yh(@T%;W~89iLrUq|Ed$Kk!} zpNih)61|(=%pf|%@2f<2X1=ZDSRjA^0tg_000IagfB*srAn=a@`@_b_O1~`pU?*;t zy?tw_*9&Q;ErXrpWh0<*Rz4N}^NsY)*=JkxqH0?YwihswSy36gj5Z}sK0!nP0R#|0 a009ILKmY**5I_Kd9|T6S@Vl>_%i{&Jf-Z#s diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c371.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c371.dat deleted file mode 100644 index ad11f01b25b6bd995142e4d731203e66b5792409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdn|b0v)1)ii&~>5H%AZIwU}%qoHI1HedoureFq`0?u|EIUyj? zqHie|`!3EYuZv|XB1SJe5*Je!;}Gg`PUp{J)Y2c9Gp(%k%0)WiA*0Q8{dF|9KaU<= zzbkr|OZ4t~GsCEff36Z;&wO9Wu|NO;1Q0*~0R#|0009ILK;Rz*j;EcGjec49!A{&P zd;8Wiymj?ljvvODX&o?qKH=k{-imE+&uM$OkIRs|KbrG7iZfbdu7FuDUR8u-;IJc0_tS07f zct)$WkTsfw{HR;eDK$VeskcL(XpM!8&aK8Q_U5++e%(4>#LO=)z0U;m+gn$qb0z%+FA`o7}Pk?Z{vJ1CtkJyHl4bIs{m4$1z PhitcCqaGsu{`bcN?f&2j diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c391.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c391.dat deleted file mode 100644 index dee460e6a7da15a7ec67af81f7c81e6902806f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0y-LJD5XUFE^Dg)88`y|82IelCTp~87l^~Ml8apq^bqazCc86eTVeK1OSXlcU z_BJ9|=nIHWHXno~N?K(W_Mgd2_P@J7((J-H0BF?Xrb}%|ElO4|<|zJ3o09(V)u+lS zbpv2I`$(h7>HXK%E~~CQer_iDf|pFJztTg)!Xzc*<($T%q{1mCzyz286JP>NfC(@G zCcp%k025#W|BJx&?S%$sw5RNR-+}n3ou8-k-DdSXkp_(>T^U?~kzWLqM)|1hoUehU zJtf)NOp!D<+Uwu_E1aX9wOC`8Mg zhmmb!+#+x8Sps1RY7^g&t(#yd20}y;8PJGI1_rbg1J@Zvh~r^JgBG+EgFuWz7wxd3 zK^r=X!E6{f0lHB|gAQ~R192D#7rm+sy3kV$0?V=yJ-6ZtdeB!4tk9YvI#mt&Fi;Gl z8O{ZIxsG6JP>NfC(@GCcp%k025#WOyCa@&>vtz%e{+LJBn3D8Q)9Ykoq1g Tyv3@Y$ao8mlTBVupI^QK=ozE4 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3a1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3a1.dat deleted file mode 100644 index 3790bd8f911772c4337ab22a360c2634deaf9c15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1J5Iwu5Qb+H$#LR5xB(3cmBl9BJQi^VghWSYZ|s5^km%A-(x#!Jp`fFupyCKQ z11F$EFgt$8LWXUq(2V5Y>zRMO_UCHHa0LJY4;w8~kF+jjy`IDIXA$4hKVF_-N zfC(@GCh)%q+}>RaxWsoV_xAzVt#-AauHLq+SBYZab+Bb{1Af&AXdG3u%6-0o1F_As z?far?TMxDua13WfWlb4uO1$8p(}FSVO_O+Gq)tLPS?Dlb$tcWL=`55sQl05YNoa%U zfS>y#lP;w;F24_5@|z@^p?~G_ccDlANKFhrPwMjbARzzTD5a#%T>b$1IusOtzsyGm?LgXMXRlzf`+{D*#Y*EV6%J@)~tT3+UF}cP@AIK zc`Cd4(St<`Ie}%_S<^kA*m@=DSulmYG)aR9L*K>OB6f9(o|~mQa4`=ZXR+rabU^jM zX20)iO@1P#Gj`T2C2zE0EhjnSrR4~X_Mc9VX^+R#E&pG zu73!lVm+Q0AjXkt{1J@V@1@=fF*N$eFk!!5Vdi7JFpWQ2mv7=1cZPP5CTF# s2nYcoAO!x5fHejBmm3~)RUzveYsT7Tz0VakoPThB1n0#PZjYDG-=3|AiU0rr diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3c0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3c0.dat deleted file mode 100644 index 4d061cf0609ecd4b111d8f763b15c5658bf6caa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*j|HB^?!_WdLS~XebbC01_PwFagWZ(vl_U7$F=^4k8l@DkStB z#kt&BzW8;Kt%x|iA0vyik8^XfdNZeSS&t=aq3P25}@J%KlH^aKu0ZZ4idH*cWNmXd;K zoXuatqkXUN!nc7eM8xR%8j+2ujbZThFsJiJF>2|L%aK-QdgdZ+zsYEGU4I>o?RSG) z$K4e?%O<*4y_jCm#OV^ z%iiAA*XxBe(_aQ_$;%%BjkEGD|DA87Z!RtypNndu*I3(+?J+5;2b&d1?k+(@009IL bKmY**5I_I{1Q0*~fgc5iGIcwTt^MfxGuieXjZk45o7=7~Aa(&|ZxC{9>rt@dfYT=K|v1aD_WFqab$!Kw1e{GHBkAr*1 zpNih)0^OSqrWY0Q`zpPwnXM}^76>4K00IagfB*srAbheKZoe|J&@T%=*ey3p z-@Y~E>xm@QD}#+>K-rbX_gV}2!JFWS)%KmY** a5I_I{1Q0*~0R#|0;1_|R%>4F)Jhm^H*DqcG diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3f1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3f1.dat deleted file mode 100644 index 08acdcee31e218c5d9c3b4f62ef38fb0f42c8e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0F%H5o3`LzHwH@IGY>Y55aR$W95tsqN#?p}!a05=kDL6wJ7&rkqNmHezAhDun zDX#M!*UH;s*@}qKWi4?&bv||>A8Q&vD{ILgw+qdzb>$-caL8zL-G8;t_UGws=&PcC zIbl@l$4sIo{#?Vmp827nv4H>tAOHafKmY;|fB*y_009X6BZ1>-Z)Br43lHqXMcLb3 zL%y9zGaVTelGlTP&Zw>m?|dU;bM2TM$;ub(?#18*9@Q?- diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c400.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c400.dat deleted file mode 100644 index 1e8976f89fb63a0868c737d9434d15ecfdedc47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F%E(-6oBDZLa-qY-h#=*19*nUK?mdR3Dm^R)xi^ZCmCL&Ffo_&2!d+4ca%$v)#Ylsj)009ILKmY**5I_I{1Q0;r2Le+WS6z;m_3Z_e Cb`~Q5 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c41.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c41.dat deleted file mode 100644 index e1d102a75147cd3d7b27c1f56274813dd74edf82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNOKcle6g@LP!DzRa~s^YVtQg^WFf`X_J5-gBlfskOw0wDqKzL{q`^|;lI*igNRa{TOlv{*Wa%F5lm9Sq&Tg;_3EV ze*XZM>e&B_d=Vvo(Dq-3P;K*O8y;HAbQlGU0!9I&fKk9GU=%P47zK<1MggOMQQ-fl zz{}^qdLJ*yd24@v24t6y4^^VauN!b&Y29tShFC8N2yF$c^^LxTvh{7yTM1r;e6{6F zx@h33pl@3BNi+YWY-qD?;~@tV7;A5|mzpiFw%l0tHrgjwyvjQEVP?LhmaSr`v{fpe z-a2xmIQQ(hF=yxB34z_Q;V(h6*0x|KUcZWq)a@e-jyufdV^hzRX|p2swvp> zuu{l{l5qB}l}27*3KL3_#`0RT?zJi%{sC*{P!QOSsUaeMVNs0TfQnUK4C6PT;vB+O z91|kQ<*Lm_yVI)F8Xfkox8s-`5WGjjR>^iTHIj&=<_I6Jya^_Zo|Q zbuze3AJdwGuS^QJhmx>VN#hQE#aisv>l@`>0{cvJ_%fu*N6_@S_z?!Jdbep%5U1gd?Ywr5M1^BibG5y6fH!9Hq!o4ls#vxl;yM z*d+-S1%&f(suCGW0{T_e+MQaJy_cK>g#i881T5^ToH!)_{%ksxg*E9*DfQu+hAf$X ze>MXw{Mn?){fF~#G{^@{dH(H!h*#2EShFcwZd^4T+K{=-;U`!`Dd-_IZ(uX#_fB@t0f z>+7vgz}LgYUV&Yhl-H+Lv)idPf^(3~6mfC)XeN%jktpsN&BReS62pu>6Sq~zyuw7{ zxK|6^YEoLnmnVUJArvfKlGqJZ7J7(&4+rGNt=6r7#wx;UtJ?vB1lqn z+>N2E=ipN?_l6rExb-(pqrk1CK(wO#GsvGO-=%i)n)2$G$VIzn6&@gr{7POr@`1ul zh12A#o$s(B@g0RL3T^tlxI}HC7{n~K?VlB1pwakWFSb?Ud?R{p<aiGbd*q0F$1DQVgzbHqNAZ?f^2}q4os05pr?nk9Y;l)hi%nywi4g??o0SG_<0uX=z1Rwwb2teQ;37m?(k*&Tge6SN|Wp8f{ z`F0}BbYyUpydDH}TJ@>$&o?qQrH}RoRo0Fk>?~j|t14qR+c>#e3xNOxAOHafKmY;| XfB*y_009U<;3onzS^N6pvV6P%AQ>&m diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c421.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c421.dat deleted file mode 100644 index 65775ee7bfbd1fe9a4e81f326933d49be9138b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ee^sk6u|MxGuieXjZk3gY7=3JuT%Wi;?0i0q>HJx=TKMB~qM3z0nMm7jGFn{MUt44O4K00IagfB*srAbheK?yxqp)GzZt*pZv1 zZ{Oc{L6;HW?BpOap`f8a zza_u!EMNR}k*$b0?V)9HEaKQ5EZ>dk`rfuA{Bb+i%(}@A?a)Ard)s_7*M7N5?rJ}? zx@p`^M4m-@?u|A5z9&Nn0R#|0009ILKmY**5I_Kd{}MPHcTP6?Ci}n7;;MXmrR9@E zUg-IeyS~D?{&hs>8?kdI?JewM8f{y3d$X02B)(hZA@7T5XL)>{5De)RoQ z(Yst=aMzm|MMeC&TJLJ+`&x_%0tg_000IagfB*srAbfaii?* zUqil`NHaY$I7nU{1hkH-r@}tp$k5z;w6iF)_UOTupUJY!=my?>PIC1DdIS(a009IL YKmY**5I_I{1Q7T^U?MBOx_2t3FYvf6QUCw| diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c461.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c461.dat deleted file mode 100644 index e6d98541fb79659dd82e6c495be7eda4795dd219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$h#Z%UKu3#&M8ynr~rwMhLQ=`fQo6D0XjB-!;T{-1VoL# zB|G+=lT%)2%SJ?u_E*dNX#JQDF`veC{wP}`{Bb$e%u2fx>Bdb)i|hJpYb}2o-Fo4z z49z7(^F^7>_1V$#Gnr_gmsvf;Yg8n^hX5l22q1s} a0tg_000IagfB*sr{3tM%W!UMgJwE}e#Vuq2 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c470.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c470.dat deleted file mode 100644 index c9f2eb1cae75e19bcc6f3d1feb17572a3f80c36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#p$@_@5P;$9(u@iO9zjr8Bm%)BU=W0tKmZ92O@b%kvGx);9s!Qq%9b(&20{KV z>uz^VZ~fe4Cn8So=g4f%ZEjAn-ppxyuSSyo_&V3hrmXhjqOLX%@#UN6Ei6~bUe#xg zu9|makyn$JeXVCWv{XnTfB*srAbHJxYTKeO1q?Nf|xkx)~GJ3eKzmCS^4})9B zKNY>pCAwF=nSOML-&cw5%zRzRu|NO;1Q0*~0R#|0009ILK;Rz*cKel)g??H1!A{&P zd;8WUUorr~3;OQZJwY diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c490.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c490.dat deleted file mode 100644 index 6b1f5d86597d6d08de7ce009749033ee82859652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#KMp`J7>D6n#9%OR2CJjEg$rPH2nUfkhBKJNU~vZe$JAvhe1Qy+yI{H4$Qbg;iC zD+nNf00IagfB*srAbelCS^H5m&dnbG|2sPg5I_I{1Q0*~0R#|0009ILK;U-* H)sXEcQ_>R0 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c4a0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c4a0.dat deleted file mode 100644 index 6b1f5d86597d6d08de7ce009749033ee82859652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#KMp`J7>D6n#9%OR2CJjEg$rPH2nUfkhBKJNU~vZe$JAvhe1Qy+yI{H4$Qbg;iC zD+nNf00IagfB*srAbelCS^H5m&dnbG|2sPg5I_I{1Q0*~0R#|0009ILK;U-* H)sXEcQ_>R0 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c51.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c51.dat deleted file mode 100644 index 0c8c56cb5583d5775ca1da2be048f5d8795feee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 Lv(SfMKi>TVu>A~v diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c90.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c90.dat deleted file mode 100644 index a49c8a0af51cd6c9e3c07fac22cd256ae52c8cb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 tFTx}AKwlV#7!?2j diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ca1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ca1.dat deleted file mode 100644 index 07f4c4c95225314dda247684371d3a55111a2132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 N_-|w2{%5BD`Y-vf*HQog diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cb1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cb1.dat deleted file mode 100644 index e26dcacb8a604afbc33470f00b1970f120b103b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$e`wTo9LMq3-Q4Yd?B{K_+wb4o?T5=>rPVY)mcPpUu}aHXty-3vW=^NgQnO{N z)SBrs35tS>@DGs+ijaz^C@6_R7S$gTqbMpOVnl(x@AcZruvLHcNANwk$36G`?)JUC zV1qks1>m!L^5&-jI+oP=vB#{>jNZ;U{I_2&vol-l9t3hz-{iB4+t>eiJ2>9ip;Im0 zIzHxS@j&8Rd+<#jbCGeL&ujkMg~xfGcgS17TfkeuTfkeuTfkeuTfkeuTfkeuTfkf3 z|F*#J#QELmu~(gXe}4$cx7tVk@_VGtpL-&ZVILXnLGbJc0pr%$XQke5`!LD(>FCkp zqmRjt9{lz~mY`$w$bda2FYJHI$ng7+244n(iXcLY5Wf!4Qds&s8iITUQv$*MFSFw1R52MXi_wxS<#FZhChIbiVUp;S7F7{km#P@W!v|uZ2JdPw*4NJZU3Okw(nQj_7ACS`-fGw{Ua*dey_^5->0(e_p5CCM^(1{ zV=CKzKxNw>P}%m6t8Dv&D%<{$%C;X=+4fJUZ2QA1+x|&aqy6*sZr%dk0^S1N0^S1u z%>scq!ayL4rX@}Pjs8T3=@;}9`aV5DU#2h7XXqf^OLx<4bOY_8E9p`?kG9b%G(pR0 zKD9R*z=SjOSNc6YO;6E}=sWavdW=3#pP~n7Kixq$)3vmdE~ks=96E!x(pp+fb7*?f zwBPB^^c(sW9iku5H|eYND1DY5ru%6h?WG&(YPyQH(*<-Eokp8zC5_Pt^(FO>&>!g6 z^mBTWzDwVr$LWjoX@u;#gLEJ5quc2wx`uYr6?8G3OWWvF+C-~poMzMXq`p7sFZ4Tl zntn!4()Z{I`U*WtpQA_U0PUwcX%AgbyJ!b(rwi$9I-R!CI$BDjG(?dUBlJf)OuwW< Y^h5eKeT^QYFVLA-r@!KnkGp#R1V&8Qng9R* diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cc0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cc0.dat deleted file mode 100644 index 226872006d7e7681f9732c7e2268f2312c42abd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1y-or_5P;_d`8^c1va&H+ZL;?R90n5+qGABigF-C~aPS0bv@<4_))u~qrSS<& zd;v=n-$9){Zjr#!8#8-h*qynL-TN{P0G9xu;Y*AeKSumG8f1Mmhx6}XjHRb88(29X zRMYY%9XF53#gzA?Dt~fYD-QC*&kByY{(*Uo0}Kla-rqBJqo`1d43GgbKnBPF86X2> zfDDiUGC&5%!2dFE|9Gvz1wNDfexCvzSBn!*DeGf}a0JO^?QJCejPnrGp@kPjL$C&` zU2a$o=N{v{@32fKV=>cd=W!{9k?(nqgFgX8++(-0U4vN&6&nqR`7Cl`2-f4Q@8xpL z!uti=#;arGITr-75{yr5+F@qaHW<(Kx^h#??pr+Av{YL3pOymKmp?&Y+~H=qb@S= V>ckx5(_g!cb=gm8#4RL|*JS^htr_`8HUa5uVga3OcH{e2zUYA=4frH#)9JYPlzHwdPKfWqCh%J%sVHk_ACea_xGdeB)w ziqlMaG>Qx*bmO}+CGe7yB-}kf3677z#XL%)s2iYc6FTjIDrHoxvX}N%si5kj3|~s( z=`Msvy5C)_a3a_Md RtIj>O58!+O>G0`x?-%c{mUjRE diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cf0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cf0.dat deleted file mode 100644 index fb40ee421916f7cc965275d19623aec219c8c959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$gc27NtU#5P7Ks_6G!%$60Evzoi3wPT4OoJX41fg3B}SGB1q}uI zj&gDCEMNS($VNn*-p`R)%q_+t)Z?7a@7+k!A75*&tlH`*EE;NaA6~wBUj1U3?A3i{ zdC|O^h`gHg>}x&!uBSo@0R#|0009ILKmY**5I_Kd{}MPHw@%i2rtp8C*{pawWvC~G zL9Xk^?i{5XoflH+HMdwv9aWhkfB*srAbmQns!3)6?w%oG2D4 diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/service.properties b/data/files/dataconnector_derbydb/db_for_connectortest.db/service.properties deleted file mode 100644 index 16ecc5edf017..000000000000 --- a/data/files/dataconnector_derbydb/db_for_connectortest.db/service.properties +++ /dev/null @@ -1,23 +0,0 @@ -#/private/tmp/db_for_connectortest.db -# ******************************************************************** -# *** Please do NOT edit this file. *** -# *** CHANGING THE CONTENT OF THIS FILE MAY CAUSE DATA CORRUPTION. *** -# ******************************************************************** -#Tue Jun 08 12:05:32 PDT 2021 -SysschemasIndex2Identifier=225 -SyscolumnsIdentifier=144 -SysconglomeratesIndex1Identifier=49 -SysconglomeratesIdentifier=32 -SyscolumnsIndex2Identifier=177 -SysschemasIndex1Identifier=209 -SysconglomeratesIndex3Identifier=81 -SystablesIndex2Identifier=129 -SyscolumnsIndex1Identifier=161 -derby.serviceProtocol=org.apache.derby.database.Database -SysschemasIdentifier=192 -derby.storage.propertiesId=16 -SysconglomeratesIndex2Identifier=65 -derby.serviceLocale=en_US -SystablesIdentifier=96 -SystablesIndex1Identifier=113 -#--- last line, don't put anything after this line --- diff --git a/itests/pom.xml b/itests/pom.xml index 2d8b04efc5de..07b3e8e998df 100644 --- a/itests/pom.xml +++ b/itests/pom.xml @@ -520,20 +520,6 @@ - - copy-database - install - - - - - - - - - run - - diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/AbstractExternalDB.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/AbstractExternalDB.java index fe12a31f4272..2bac0b0f9309 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/AbstractExternalDB.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/AbstractExternalDB.java @@ -21,25 +21,20 @@ import org.slf4j.LoggerFactory; import sqlline.SqlLine; -import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.io.PrintStream; import java.nio.file.Files; import java.nio.file.Path; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.Objects; -import java.util.concurrent.TimeUnit; import java.util.function.Function; /** - * The class is in charge of connecting and populating dockerized databases for qtest. + * The class is in charge of managing the lifecycle of databases for qtest. * * The database should have at least one root user (admin/superuser) able to modify every aspect of the system. The user * either exists by default when the database starts or must created right after startup. @@ -86,111 +81,6 @@ public void clear(AbstractExternalDB db) { protected String dbName = "qtestDB"; private Path initScript; - private static final int MAX_STARTUP_WAIT = 5 * 60 * 1000; - - protected static class ProcessResults { - final String stdout; - final String stderr; - final int rc; - - public ProcessResults(String stdout, String stderr, int rc) { - this.stdout = stdout; - this.stderr = stderr; - this.rc = rc; - } - } - - private final String getDockerContainerName() { - return String.format("qtestExternalDB-%s", getClass().getSimpleName()); - } - - private String[] buildRunCmd() { - List cmd = new ArrayList<>(4 + getDockerAdditionalArgs().length); - cmd.add("docker"); - cmd.add("run"); - cmd.add("--rm"); - cmd.add("--name"); - cmd.add(getDockerContainerName()); - cmd.addAll(Arrays.asList(getDockerAdditionalArgs())); - cmd.add(getDockerImageName()); - return cmd.toArray(new String[cmd.size()]); - } - - private String[] buildRmCmd() { - return new String[] { "docker", "rm", "-f", "-v", getDockerContainerName() }; - } - - private String[] buildLogCmd() { - return new String[] { "docker", "logs", getDockerContainerName() }; - } - - private ProcessResults runCmd(String[] cmd, long secondsToWait) - throws IOException, InterruptedException { - LOG.info("Going to run: " + String.join(" ", cmd)); - Process proc = Runtime.getRuntime().exec(cmd); - if (!proc.waitFor(Math.abs(secondsToWait), TimeUnit.SECONDS)) { - throw new RuntimeException("Process " + cmd[0] + " failed to run in " + secondsToWait + " seconds"); - } - BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); - final StringBuilder lines = new StringBuilder(); - reader.lines().forEach(s -> lines.append(s).append('\n')); - - reader = new BufferedReader(new InputStreamReader(proc.getErrorStream())); - final StringBuilder errLines = new StringBuilder(); - reader.lines().forEach(s -> errLines.append(s).append('\n')); - LOG.info("Result lines#: {}(stdout);{}(stderr)",lines.length(), errLines.length()); - return new ProcessResults(lines.toString(), errLines.toString(), proc.exitValue()); - } - - private ProcessResults runCmdAndPrintStreams(String[] cmd, long secondsToWait) - throws InterruptedException, IOException { - ProcessResults results = runCmd(cmd, secondsToWait); - LOG.info("Stdout from proc: " + results.stdout); - LOG.info("Stderr from proc: " + results.stderr); - return results; - } - - - public void launchDockerContainer() throws Exception { - runCmdAndPrintStreams(buildRmCmd(), 600); - if (runCmdAndPrintStreams(buildRunCmd(), 600).rc != 0) { - printDockerEvents(); - throw new RuntimeException("Unable to start docker container"); - } - long startTime = System.currentTimeMillis(); - ProcessResults pr; - do { - Thread.sleep(1000); - pr = runCmdAndPrintStreams(buildLogCmd(), 30); - if (pr.rc != 0) { - printDockerEvents(); - throw new RuntimeException("Failed to get docker logs"); - } - } while (startTime + MAX_STARTUP_WAIT >= System.currentTimeMillis() && !isContainerReady(pr)); - if (startTime + MAX_STARTUP_WAIT < System.currentTimeMillis()) { - printDockerEvents(); - throw new RuntimeException( - String.format("Container initialization failed within %d seconds. Please check the hive logs.", - MAX_STARTUP_WAIT / 1000)); - } - } - - protected void printDockerEvents() { - try { - runCmdAndPrintStreams(new String[] { "docker", "events", "--since", "24h", "--until", "0s" }, 3); - } catch (Exception e) { - LOG.warn("A problem was encountered while attempting to retrieve Docker events (the system made an analytical" - + " best effort to list the events to reveal the root cause). No further actions are necessary.", e); - } - } - - public void cleanupDockerContainer() throws IOException, InterruptedException { - if (runCmdAndPrintStreams(buildRmCmd(), 600).rc != 0) { - throw new RuntimeException("Unable to remove docker container"); - } - } - - protected final String getContainerHostAddress() { String hostAddress = System.getenv("HIVE_TEST_DOCKER_HOST"); if (hostAddress != null) { @@ -224,12 +114,6 @@ protected String getRootPassword() { protected abstract int getPort(); - protected abstract String getDockerImageName(); - - protected abstract String[] getDockerAdditionalArgs(); - - protected abstract boolean isContainerReady(ProcessResults pr); - private String[] SQLLineCmdBuild(String sqlScriptFile) { return new String[] {"-u", getJdbcUrl(), "-d", getJdbcDriver(), @@ -265,7 +149,6 @@ public void setInitScript(Path initScript) { * Starts the database and performs any initialization required. */ public void start() throws Exception { - launchDockerContainer(); if (initScript != null) { execute(initScript.toString()); } @@ -280,7 +163,6 @@ public void start() throws Exception { */ public void stop() throws IOException, InterruptedException { Arrays.stream(ConnectionProperty.values()).forEach(p -> p.clear(this)); - cleanupDockerContainer(); } public void execute(String script) throws IOException, SQLException, ClassNotFoundException { diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Derby.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Derby.java new file mode 100644 index 000000000000..9d55b3f0c274 --- /dev/null +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Derby.java @@ -0,0 +1,98 @@ +/* + * 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.externalDB; + +import org.apache.commons.io.FileUtils; + +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class Derby extends AbstractExternalDB { + + public Derby() { + } + + private Path getDbPath() { + return Paths.get(System.getProperty("test.tmp.dir"), dbName); + } + + @Override + protected String getJdbcUrl() { + // First connection will also create the database + return JdbcUrl.CREATE.of(getDbPath().toString()); + } + + @Override + protected String getJdbcDriver() { + return "org.apache.derby.jdbc.EmbeddedDriver"; + } + + @Override + protected int getPort() { + return -1; + } + + /** + * Stops the database and deletes the database files. Check the Derby documentation for details on the + * shutdown command. + * @throws IOException if there is a problem with the deletion of the database files. + * @throws InterruptedException never thrown but declared for compatibility with the parent class. + */ + @Override + @SuppressWarnings("checkstyle:EmptyBlock") + public void stop() throws IOException, InterruptedException { + super.stop(); + try (Connection c = DriverManager.getConnection(JdbcUrl.SHUTDOWN.of(getDbPath().toString()))) { + } catch (SQLException e) { + if (!isNormalShutdown(e)) { + throw new IllegalStateException(e); + } + } finally { + FileUtils.deleteDirectory(getDbPath().toFile()); + } + } + + /** + * Whether the exception corresponds to a normal shutdown of Derby. + * @param e the exception to check. + * @return Whether the exception corresponds to a normal shutdown of Derby. + */ + private boolean isNormalShutdown(SQLException e) { + return "08006".equals(e.getSQLState()) && e.getErrorCode() == 45000; + } + + private enum JdbcUrl { + CREATE { + @Override + String of(String dbPath) { + return "jdbc:derby:;databaseName=" + dbPath + ";create=true"; + } + }, SHUTDOWN { + @Override + String of(String dbPath) { + return "jdbc:derby:;databaseName=" + dbPath + ";shutdown=true"; + } + }; + + abstract String of(String dbPath); + } +} diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/DockerizedDatabase.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/DockerizedDatabase.java new file mode 100644 index 000000000000..61ab387d866b --- /dev/null +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/DockerizedDatabase.java @@ -0,0 +1,143 @@ +/* + * 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.externalDB; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.TimeUnit; + +public abstract class DockerizedDatabase extends AbstractExternalDB { + protected static final Logger LOG = LoggerFactory.getLogger(DockerizedDatabase.class); + private static final int MAX_STARTUP_WAIT = 5 * 60 * 1000; + + protected static class ProcessResults { + final String stdout; + final String stderr; + final int rc; + + public ProcessResults(String stdout, String stderr, int rc) { + this.stdout = stdout; + this.stderr = stderr; + this.rc = rc; + } + } + + private String getDockerContainerName() { + return String.format("qtestExternalDB-%s", getClass().getSimpleName()); + } + + private String[] buildRunCmd() { + List cmd = new ArrayList<>(4 + getDockerAdditionalArgs().length); + cmd.add("docker"); + cmd.add("run"); + cmd.add("--rm"); + cmd.add("--name"); + cmd.add(getDockerContainerName()); + cmd.addAll(Arrays.asList(getDockerAdditionalArgs())); + cmd.add(getDockerImageName()); + return cmd.toArray(new String[cmd.size()]); + } + + private String[] buildRmCmd() { + return new String[] {"docker", "rm", "-f", "-v", getDockerContainerName()}; + } + + private String[] buildLogCmd() { + return new String[] {"docker", "logs", getDockerContainerName()}; + } + + private ProcessResults runCmd(String[] cmd, long secondsToWait) + throws IOException, InterruptedException { + LOG.info("Going to run: " + String.join(" ", cmd)); + Process proc = Runtime.getRuntime().exec(cmd); + if (!proc.waitFor(Math.abs(secondsToWait), TimeUnit.SECONDS)) { + throw new RuntimeException("Process " + cmd[0] + " failed to run in " + secondsToWait + " seconds"); + } + BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); + final StringBuilder lines = new StringBuilder(); + reader.lines().forEach(s -> lines.append(s).append('\n')); + + reader = new BufferedReader(new InputStreamReader(proc.getErrorStream())); + final StringBuilder errLines = new StringBuilder(); + reader.lines().forEach(s -> errLines.append(s).append('\n')); + LOG.info("Result lines#: {}(stdout);{}(stderr)", lines.length(), errLines.length()); + return new ProcessResults(lines.toString(), errLines.toString(), proc.exitValue()); + } + + private ProcessResults runCmdAndPrintStreams(String[] cmd, long secondsToWait) + throws InterruptedException, IOException { + ProcessResults results = runCmd(cmd, secondsToWait); + LOG.info("Stdout from proc: " + results.stdout); + LOG.info("Stderr from proc: " + results.stderr); + return results; + } + + public void start() throws Exception { + runCmdAndPrintStreams(buildRmCmd(), 600); + if (runCmdAndPrintStreams(buildRunCmd(), 600).rc != 0) { + printDockerEvents(); + throw new RuntimeException("Unable to start docker container"); + } + long startTime = System.currentTimeMillis(); + ProcessResults pr; + do { + Thread.sleep(1000); + pr = runCmdAndPrintStreams(buildLogCmd(), 30); + if (pr.rc != 0) { + printDockerEvents(); + throw new RuntimeException("Failed to get docker logs"); + } + } while (startTime + MAX_STARTUP_WAIT >= System.currentTimeMillis() && !isContainerReady(pr)); + if (startTime + MAX_STARTUP_WAIT < System.currentTimeMillis()) { + printDockerEvents(); + throw new RuntimeException( + String.format("Container initialization failed within %d seconds. Please check the hive logs.", + MAX_STARTUP_WAIT / 1000)); + } + super.start(); + } + + protected void printDockerEvents() { + try { + runCmdAndPrintStreams(new String[] {"docker", "events", "--since", "24h", "--until", "0s"}, 3); + } catch (Exception e) { + LOG.warn("A problem was encountered while attempting to retrieve Docker events (the system made an analytical" + + " best effort to list the events to reveal the root cause). No further actions are necessary.", e); + } + } + + public void stop() throws IOException, InterruptedException { + super.stop(); + if (runCmdAndPrintStreams(buildRmCmd(), 600).rc != 0) { + throw new RuntimeException("Unable to remove docker container"); + } + } + + protected abstract String getDockerImageName(); + + protected abstract String[] getDockerAdditionalArgs(); + + protected abstract boolean isContainerReady(ProcessResults pr); +} diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MSSQLServer.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MSSQLServer.java index f968e070ed7f..9cb159de5b6e 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MSSQLServer.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MSSQLServer.java @@ -17,7 +17,7 @@ */ package org.apache.hadoop.hive.ql.externalDB; -public class MSSQLServer extends AbstractExternalDB { +public class MSSQLServer extends DockerizedDatabase { @Override public String getRootUser() { diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MariaDB.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MariaDB.java index eeeeb06c694b..c3f14264ac88 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MariaDB.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MariaDB.java @@ -20,7 +20,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -public class MariaDB extends AbstractExternalDB { +public class MariaDB extends DockerizedDatabase { @Override public String getRootUser() { diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MySQLExternalDB.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MySQLExternalDB.java index 685ca74fd2d8..2a24e2c26e91 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MySQLExternalDB.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/MySQLExternalDB.java @@ -23,7 +23,7 @@ /** * Designed for MySQL external database connection */ -public class MySQLExternalDB extends AbstractExternalDB { +public class MySQLExternalDB extends DockerizedDatabase { public MySQLExternalDB() { } diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Oracle.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Oracle.java index ccd8f2d9f156..e28d8f0b0f0d 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Oracle.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/Oracle.java @@ -17,7 +17,7 @@ */ package org.apache.hadoop.hive.ql.externalDB; -public class Oracle extends AbstractExternalDB { +public class Oracle extends DockerizedDatabase { @Override public String getRootUser() { return "SYS as SYSDBA"; diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/PostgresExternalDB.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/PostgresExternalDB.java index 3e10fd6a1e1a..9939b9627879 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/PostgresExternalDB.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/PostgresExternalDB.java @@ -21,7 +21,7 @@ * MySQLExternalDB is a extension of abstractExternalDB * Designed for MySQL external database connection */ -public class PostgresExternalDB extends AbstractExternalDB { +public class PostgresExternalDB extends DockerizedDatabase { public PostgresExternalDB() { } diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/qoption/QTestDatabaseHandler.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/qoption/QTestDatabaseHandler.java index a90d63c03dcb..0bd33cff43ae 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/qoption/QTestDatabaseHandler.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/qoption/QTestDatabaseHandler.java @@ -19,6 +19,7 @@ import org.apache.hadoop.hive.ql.QTestUtil; import org.apache.hadoop.hive.ql.externalDB.AbstractExternalDB; +import org.apache.hadoop.hive.ql.externalDB.Derby; import org.apache.hadoop.hive.ql.externalDB.MSSQLServer; import org.apache.hadoop.hive.ql.externalDB.MariaDB; import org.apache.hadoop.hive.ql.externalDB.MySQLExternalDB; @@ -75,6 +76,11 @@ AbstractExternalDB create() { AbstractExternalDB create() { return new Oracle(); } + }, DERBY { + @Override + AbstractExternalDB create() { + return new Derby(); + } }; abstract AbstractExternalDB create(); diff --git a/ql/src/test/queries/clientnegative/authorization_jdbc_keystore.q b/ql/src/test/queries/clientnegative/authorization_jdbc_keystore.q index 8aacbd4af6e1..0616e8e8c72c 100644 --- a/ql/src/test/queries/clientnegative/authorization_jdbc_keystore.q +++ b/ql/src/test/queries/clientnegative/authorization_jdbc_keystore.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb --! qt:authorizer --! qt:dataset: @@ -16,7 +17,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password.keystore" = "jceks://file/${system:test.tmp.dir}/test.jceks", "hive.sql.dbcp.password.key" = "test_derby_auth1.password", diff --git a/ql/src/test/queries/clientnegative/dataconnector_authfail_alter.q b/ql/src/test/queries/clientnegative/dataconnector_authfail_alter.q index 76988dc3015d..eeb78a9a01cc 100644 --- a/ql/src/test/queries/clientnegative/dataconnector_authfail_alter.q +++ b/ql/src/test/queries/clientnegative/dataconnector_authfail_alter.q @@ -1,7 +1,8 @@ +--!qt:database:derby:qdb -- CREATE IF NOT EXISTS already CREATE CONNECTOR IF NOT EXISTS derby_auth TYPE 'derby' -URL 'jdbc:derby:./target/tmp/junit_metastore_db;create=true' +URL '${system:hive.test.database.qdb.jdbc.url}' COMMENT 'test derby connector' WITH DCPROPERTIES ( "hive.sql.dbcp.username"="APP", diff --git a/ql/src/test/queries/clientnegative/dataconnector_authfail_drop.q b/ql/src/test/queries/clientnegative/dataconnector_authfail_drop.q index adc1923de736..402fd73b102f 100644 --- a/ql/src/test/queries/clientnegative/dataconnector_authfail_drop.q +++ b/ql/src/test/queries/clientnegative/dataconnector_authfail_drop.q @@ -1,7 +1,8 @@ +--!qt:database:derby:qdb -- CREATE IF NOT EXISTS already CREATE CONNECTOR IF NOT EXISTS derby_auth TYPE 'derby' -URL 'jdbc:derby:./target/tmp/junit_metastore_db;create=true' +URL '${system:hive.test.database.qdb.jdbc.url}' COMMENT 'test derby connector' WITH DCPROPERTIES ( "hive.sql.dbcp.username"="APP", diff --git a/ql/src/test/queries/clientnegative/dataconnector_authfail_remoteDB.q b/ql/src/test/queries/clientnegative/dataconnector_authfail_remoteDB.q index 2d81d218d962..44facda3d2e9 100644 --- a/ql/src/test/queries/clientnegative/dataconnector_authfail_remoteDB.q +++ b/ql/src/test/queries/clientnegative/dataconnector_authfail_remoteDB.q @@ -1,7 +1,8 @@ +--!qt:database:derby:qdb -- CREATE IF NOT EXISTS already CREATE CONNECTOR IF NOT EXISTS derby_auth TYPE 'derby' -URL 'jdbc:derby:./target/tmp/junit_metastore_db;create=true' +URL '${system:hive.test.database.qdb.jdbc.url}' COMMENT 'test derby connector' WITH DCPROPERTIES ( "hive.sql.dbcp.username"="APP", diff --git a/ql/src/test/queries/clientnegative/external_jdbc_negative.q b/ql/src/test/queries/clientnegative/external_jdbc_negative.q index 3e84bffbd6c1..8de9648883d7 100644 --- a/ql/src/test/queries/clientnegative/external_jdbc_negative.q +++ b/ql/src/test/queries/clientnegative/external_jdbc_negative.q @@ -1,13 +1,13 @@ ---! qt:disabled:test is unstable HIVE-23690 +--!qt:database:derby:qdb --! qt:dataset:src CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_negative;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE EXTERNAL_JDBC_NEGATIVE_TABLE1 ("ikey" INTEGER)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_negative','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_NEGATIVE_TABLE1 ("ikey") VALUES (?,?,?,?)','20') limit 1; @@ -20,7 +20,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_negative;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "EXTERNAL_JDBC_NEGATIVE_TABLE1", diff --git a/ql/src/test/queries/clientpositive/authorization_privilege_objects.q b/ql/src/test/queries/clientpositive/authorization_privilege_objects.q index 2f80064c7e72..c41ce716a3d0 100644 --- a/ql/src/test/queries/clientpositive/authorization_privilege_objects.q +++ b/ql/src/test/queries/clientpositive/authorization_privilege_objects.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb --! qt:authorizer set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest; set test.hive.authz.sstd.validator.outputPrivObjs=true; @@ -26,7 +27,7 @@ set role admin; CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE1 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ); CREATE EXTERNAL TABLE ext_simple_derby_table_src @@ -40,7 +41,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE1", @@ -54,7 +55,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE1", diff --git a/ql/src/test/queries/clientpositive/dataconnector.q b/ql/src/test/queries/clientpositive/dataconnector.q index 30b0c3942dd1..5518d3719edd 100644 --- a/ql/src/test/queries/clientpositive/dataconnector.q +++ b/ql/src/test/queries/clientpositive/dataconnector.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb:q_test_author_book_tables.sql -- SORT_QUERY_RESULTS SHOW CONNECTORS; @@ -24,7 +25,7 @@ SHOW CONNECTORS; -- CREATE IF NOT EXISTS already CREATE CONNECTOR IF NOT EXISTS derby_test TYPE 'derby' -URL 'jdbc:derby:./target/db_for_connectortest.db;create=true' +URL '${system:hive.test.database.qdb.jdbc.url}' COMMENT 'test derby connector' WITH DCPROPERTIES ( "hive.sql.dbcp.username"="APP", diff --git a/ql/src/test/queries/clientpositive/explain_jdbc.q b/ql/src/test/queries/clientpositive/explain_jdbc.q index 5dc94912ea27..53ae35a64ca7 100644 --- a/ql/src/test/queries/clientpositive/explain_jdbc.q +++ b/ql/src/test/queries/clientpositive/explain_jdbc.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb CREATE TABLE explain_jdbc_hive_table (id INT, bigId BIGINT); CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; @@ -7,10 +8,10 @@ FROM (select 1 as hello) src SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_explain_jdbc_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE DERBY_TABLE ("id" INTEGER, "bigId" BIGINT)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_explain_jdbc_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO DERBY_TABLE ("id","bigId") VALUES (?,?)','20','20') limit 1; @@ -23,7 +24,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_explain_jdbc_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "DERBY_TABLE", diff --git a/ql/src/test/queries/clientpositive/external_jdbc_auth.q b/ql/src/test/queries/clientpositive/external_jdbc_auth.q index f4cbe94d3d06..df2820c04ff8 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_auth.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_auth.q @@ -1,3 +1,5 @@ +--!qt:database:derby:qdb +--!qt:database:derby:qdb2 --! qt:dataset:src CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; @@ -6,31 +8,31 @@ FROM src SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1;create=true','user1','passwd1', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE SIMPLE_DERBY_TABLE1 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.connection.requireAuthentication\', \'true\')' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.authentication.provider\', \'BUILTIN\')' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.user.user1\', \'passwd1\')' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.database.propertiesOnly\', \'true\')' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','-20','-20.0','-20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','100','-15','65.0','-74.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','44','53','-455.454','330.76') limit 1; @@ -39,31 +41,31 @@ FROM src SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2;create=true','user2','passwd2', +dboutput ( '${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE )' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput ( '${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.connection.requireAuthentication\', \'true\')' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput ( '${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.authentication.provider\', \'BUILTIN\')' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput ( '${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.user.user2\', \'passwd2\')' ), -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput ( '${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.database.propertiesOnly\', \'true\')' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','8','9.0','11.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','101','-16','66.0','-75.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','40','50','-455.4543','330.767') limit 1; @@ -80,7 +82,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password.keystore" = "jceks://file/${system:test.tmp.dir}/../../../data/files/test.jceks", "hive.sql.dbcp.password.key" = "test_derby_auth1.password", @@ -100,7 +102,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb2.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user2", "hive.sql.dbcp.password.keystore" = "jceks://file/${system:test.tmp.dir}/../../../data/files/test.jceks", "hive.sql.dbcp.password.key" = "test_derby_auth2.password", diff --git a/ql/src/test/queries/clientpositive/external_jdbc_join_mv.q b/ql/src/test/queries/clientpositive/external_jdbc_join_mv.q index fde2383458de..2a2844f9d5b4 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_join_mv.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_join_mv.q @@ -1,14 +1,15 @@ +--!qt:database:derby:qdb set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_join_mv;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE person ("id" INTEGER, "name" VARCHAR(25), "jid" INTEGER, "cid" INTEGER)' ); SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_join_mv;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE country ("id" INTEGER, "name" VARCHAR(25))' ); CREATE EXTERNAL TABLE person @@ -22,7 +23,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_join_mv;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "PERSON", @@ -38,7 +39,7 @@ CREATE EXTERNAL TABLE country TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_join_mv;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "COUNTRY", diff --git a/ql/src/test/queries/clientpositive/external_jdbc_rowcount.q b/ql/src/test/queries/clientpositive/external_jdbc_rowcount.q index aa4c98b8f09f..4865235a1719 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_rowcount.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_rowcount.q @@ -1,19 +1,20 @@ +--!qt:database:derby:qdb CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE11 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ); SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE12 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE, "datekey" DATE)' ); SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE13 ("ikey2" INTEGER, "bkey2" BIGINT, "fkey2" REAL, "dkey2" DOUBLE)' ); SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE14 ("ikey2" INTEGER, "bkey2" BIGINT, "fkey2" REAL, "dkey2" DOUBLE, "datekey2" DATE)' ); CREATE EXTERNAL TABLE ext_simple_derby_table11 @@ -27,7 +28,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE11", @@ -47,7 +48,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE12", @@ -65,7 +66,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE13", @@ -85,7 +86,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE14", diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table.q b/ql/src/test/queries/clientpositive/external_jdbc_table.q index 05b47628e081..32eeade2076b 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table.q @@ -1,4 +1,4 @@ ---! qt:disabled:HIVE-25379 +--!qt:database:derby:qdb --! qt:dataset:src set hive.strict.checks.cartesian.product= false; @@ -13,19 +13,19 @@ FROM src SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE1 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','-20','-20.0','-20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','100','-15','65.0','-74.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','44','53','-455.454','330.76') limit 1; @@ -34,19 +34,19 @@ FROM src SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE, "datekey" DATE)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") VALUES (?,?,?,?,?)','20','20','20.0','20.0','1999-02-22'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") VALUES (?,?,?,?,?)','-20','8','9.0','11.0','2000-03-15'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") VALUES (?,?,?,?,?)','101','-16','66.0','-75.0','2010-04-01'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") VALUES (?,?,?,?,?)','40','50','-455.4543','330.767','2010-04-02') limit 1; @@ -63,7 +63,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE1", @@ -83,7 +83,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE2", diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table2.q b/ql/src/test/queries/clientpositive/external_jdbc_table2.q index 335e97dbcbb1..211eccd4d27b 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table2.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table2.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb --! qt:dataset:src -- SORT_QUERY_RESULTS @@ -6,43 +7,43 @@ CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','-20','-20.0','-20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','100','-15','65.0','-74.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','44','53','-455.454','330.76') limit 1; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_1;create=true','user2','passwd2', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user2','passwd2', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE )' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_1','user2','passwd2', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_1','user2','passwd2', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','8','9.0','11.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_1','user2','passwd2', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','101','-16','66.0','-75.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_1','user2','passwd2', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','40','50','-455.4543','330.767') limit 1; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE )' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','8','9.0','11.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','101','-16','66.0','-75.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','40','50','-455.4543','330.767') limit 1; @@ -59,7 +60,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url}", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1", @@ -77,7 +78,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_1;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url}", "hive.sql.dbcp.username" = "user2", "hive.sql.dbcp.password" = "passwd2", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2", @@ -95,7 +96,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url}", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2", @@ -183,10 +184,10 @@ DROP TABLE db1_ext_auth2; FROM src SELECT -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_1','user2','passwd2', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user2','passwd2', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2' ) limit 1; diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table3.q b/ql/src/test/queries/clientpositive/external_jdbc_table3.q index 3b6092a38d5a..7884081cadc5 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table3.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table3.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb --! qt:dataset:src -- SORT_QUERY_RESULTS @@ -9,29 +10,29 @@ CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','-20','-20.0','-20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','100','-15','65.0','-74.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','44','53','-455.454','330.76') limit 1; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE )' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','8','9.0','11.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','101','-16','66.0','-75.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","fkey","dkey") VALUES (?,?,?,?)','40','50','-455.4543','330.767') limit 1; @@ -48,7 +49,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1", @@ -66,7 +67,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2", @@ -93,8 +94,8 @@ DROP TABLE db1_ext_auth3_2; FROM src SELECT -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth3_1','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2' ) limit 1; diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table4.q b/ql/src/test/queries/clientpositive/external_jdbc_table4.q index ca29b0ce2e8c..c5bfa0681fde 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table4.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table4.q @@ -1,3 +1,5 @@ +--!qt:database:derby:qdb +--!qt:database:derby:qdb2 --! qt:dataset:src -- SORT_QUERY_RESULTS @@ -6,43 +8,43 @@ CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("IKEY" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("IKEY","bkey","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("IKEY","bkey","fkey","dkey") VALUES (?,?,?,?)','-20','-20','-20.0','-20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("IKEY","bkey","fkey","dkey") VALUES (?,?,?,?)','100','-15','65.0','-74.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1 ("IKEY","bkey","fkey","dkey") VALUES (?,?,?,?)','44','53','-455.454','330.76') limit 1; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_3;create=true','user2','passwd2', +dboutput ('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey" INTEGER, "BKEY" BIGINT, "fkey" REAL, "dkey" DOUBLE )' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_3','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","BKEY","fkey","dkey") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_3','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","BKEY","fkey","dkey") VALUES (?,?,?,?)','-20','8','9.0','11.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_3','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","BKEY","fkey","dkey") VALUES (?,?,?,?)','101','-16','66.0','-75.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_3','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","BKEY","fkey","dkey") VALUES (?,?,?,?)','40','50','-455.4543','330.767') limit 1; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "FKEY" REAL, "DKEY" DOUBLE )' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","FKEY","DKEY") VALUES (?,?,?,?)','20','20','20.0','20.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","FKEY","DKEY") VALUES (?,?,?,?)','-20','8','9.0','11.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","FKEY","DKEY") VALUES (?,?,?,?)','101','-16','66.0','-75.0'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'INSERT INTO EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2 ("ikey","bkey","FKEY","DKEY") VALUES (?,?,?,?)','40','50','-455.4543','330.767') limit 1; @@ -59,7 +61,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1", @@ -77,7 +79,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_3;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb2.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user2", "hive.sql.dbcp.password" = "passwd2", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2", @@ -95,7 +97,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2", @@ -151,10 +153,10 @@ DROP TABLE db1_ext_auth2; FROM src SELECT -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth1_3','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_auth2_3','user2','passwd2', +dboutput('${system:hive.test.database.qdb2.jdbc.url}','user2','passwd2', 'DROP TABLE EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE2' ) limit 1; diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table_partition.q b/ql/src/test/queries/clientpositive/external_jdbc_table_partition.q index 4759af83be30..5789d19ade93 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table_partition.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table_partition.q @@ -1,20 +1,21 @@ +--!qt:database:derby:qdb --! qt:dataset:src CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2;create=true','user','passwd', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'CREATE TABLE EXTERNAL_JDBC_PARTITION_TABLE1 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE, "chkey" VARCHAR(20), "dekey" DECIMAL(6,4), "dtkey" DATE, "tkey" TIMESTAMP)' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_PARTITION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','1','1000','20.0','40.0','aaa','3.1415','2010-01-01','2018-01-01 12:00:00.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_PARTITION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','5','9000',null,'10.0','bbb','2.7182','2018-01-01','2010-06-01 14:00:00.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_PARTITION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','3','4000','120.0','25.4','hello','2.7182','2017-06-05','2011-11-10 18:00:08.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_PARTITION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','8','3000','180.0','35.8','world','3.1415','2014-03-03','2016-07-04 13:00:00.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_PARTITION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','4','8000','120.4','31.3','ccc',null,'2014-03-04','2018-07-08 11:00:00.000000000') limit 1; @@ -35,7 +36,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_PARTITION_TABLE1", @@ -63,7 +64,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_PARTITION_TABLE1", @@ -91,7 +92,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_PARTITION_TABLE1", @@ -120,7 +121,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.query" = "SELECT \"ikey\",\"bkey\",\"fkey\",\"dkey\" FROM EXTERNAL_JDBC_PARTITION_TABLE1 WHERE \"ikey\">1", diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table_perf.q b/ql/src/test/queries/clientpositive/external_jdbc_table_perf.q index 25d9d12fda93..62e29695d138 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table_perf.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table_perf.q @@ -1,11 +1,11 @@ ---! qt:disabled:HIVE-25379 +--!qt:database:derby:qdb --! qt:dataset:src CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE CATALOG_SALES ("cs_sold_date_sk" INTEGER, "cs_sold_time_sk" INTEGER, "cs_ship_date_sk" INTEGER, "cs_bill_customer_sk" INTEGER, "cs_bill_cdemo_sk" INTEGER, "cs_bill_hdemo_sk" INTEGER, "cs_bill_addr_sk" INTEGER, "cs_ship_customer_sk" INTEGER, "cs_ship_cdemo_sk" INTEGER, "cs_ship_hdemo_sk" INTEGER, "cs_ship_addr_sk" INTEGER, "cs_call_center_sk" INTEGER, "cs_catalog_page_sk" INTEGER, "cs_ship_mode_sk" INTEGER, @@ -14,7 +14,7 @@ dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;creat "cs_ext_wholesale_cost" DECIMAL(7,2), "cs_ext_list_price" DECIMAL(7,2), "cs_ext_tax" DECIMAL(7,2), "cs_coupon_amt" DECIMAL(7,2), "cs_ext_ship_cost" DECIMAL(7,2), "cs_net_paid" DECIMAL(7,2), "cs_net_paid_inc_tax" DECIMAL(7,2), "cs_net_paid_inc_ship" DECIMAL(7,2), "cs_net_paid_inc_ship_tax" DECIMAL(7,2), "cs_net_profit" DECIMAL(7,2))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE CATALOG_RETURNS ("cr_returned_date_sk" INTEGER, "cr_returned_time_sk" INTEGER, "cr_item_sk" INTEGER, "cr_refunded_customer_sk" INTEGER, "cr_refunded_cdemo_sk" INTEGER, "cr_refunded_hdemo_sk" INTEGER, "cr_refunded_addr_sk" INTEGER, "cr_returning_customer_sk" INTEGER, "cr_returning_cdemo_sk" INTEGER, "cr_returning_hdemo_sk" INTEGER, "cr_returning_addr_sk" INTEGER, "cr_call_center_sk" INTEGER, @@ -22,19 +22,19 @@ dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;creat "cr_return_quantity" INTEGER, "cr_return_amount" DECIMAL(7,2), "cr_return_tax" DECIMAL(7,2), "cr_return_amt_inc_tax" DECIMAL(7,2), "cr_fee" DECIMAL(7,2), "cr_return_ship_cost" DECIMAL(7,2), "cr_refunded_cash" DECIMAL(7,2), "cr_reversed_charge" DECIMAL(7,2), "cr_store_credit" DECIMAL(7,2), "cr_net_loss" DECIMAL(7,2))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE STORE_SALES ("ss_sold_date_sk" INTEGER, "ss_sold_time_sk" INTEGER, "ss_item_sk" INTEGER, "ss_customer_sk" INTEGER, "ss_cdemo_sk" INTEGER, "ss_hdemo_sk" INTEGER, "ss_addr_sk" INTEGER, "ss_store_sk" INTEGER, "ss_promo_sk" INTEGER, "ss_ticket_number" INTEGER, "ss_quantity" INTEGER, "ss_wholesale_cost" DECIMAL(7,2), "ss_list_price" DECIMAL(7,2), "ss_sales_price" DECIMAL(7,2), "ss_ext_discount_amt" DECIMAL(7,2), "ss_ext_sales_price" DECIMAL(7,2), "ss_ext_wholesale_cost" DECIMAL(7,2), "ss_ext_list_price" DECIMAL(7,2), "ss_ext_tax" DECIMAL(7,2), "ss_coupon_amt" DECIMAL(7,2), "ss_net_paid" DECIMAL(7,2), "ss_net_paid_inc_tax" DECIMAL(7,2), "ss_net_profit" DECIMAL(7,2))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE STORE_RETURNS ("sr_returned_date_sk" INTEGER, "sr_return_time_sk" INTEGER, "sr_item_sk" INTEGER, "sr_customer_sk" INTEGER, "sr_cdemo_sk" INTEGER, "sr_hdemo_sk" INTEGER, "sr_addr_sk" INTEGER, "sr_store_sk" INTEGER, "sr_reason_sk" INTEGER, "sr_ticket_number" INTEGER, "sr_return_quantity" INTEGER, "sr_return_amt" DECIMAL(7,2), "sr_return_tax" DECIMAL(7,2), "sr_return_amt_inc_tax" DECIMAL(7,2), "sr_fee" DECIMAL(7,2), "sr_return_ship_cost" DECIMAL(7,2), "sr_refunded_cash" DECIMAL(7,2), "sr_reversed_charge" DECIMAL(7,2), "sr_store_credit" DECIMAL(7,2), "sr_net_loss" DECIMAL(7,2))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE WEB_SALES ("ws_sold_date_sk" INTEGER, "ws_sold_time_sk" INTEGER, "ws_ship_date_sk" INTEGER, "ws_item_sk" INTEGER, "ws_bill_customer_sk" INTEGER, "ws_bill_cdemo_sk" INTEGER, "ws_bill_hdemo_sk" INTEGER, "ws_bill_addr_sk" INTEGER, "ws_ship_customer_sk" INTEGER, "ws_ship_cdemo_sk" INTEGER, "ws_ship_hdemo_sk" INTEGER, "ws_ship_addr_sk" INTEGER, "ws_web_page_sk" INTEGER, "ws_web_site_sk" INTEGER, @@ -43,47 +43,47 @@ dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;creat "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))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE WEB_RETURNS ("wr_returned_date_sk" INTEGER, "wr_returned_time_sk" INTEGER, "wr_item_sk" INTEGER, "wr_refunded_customer_sk" INTEGER, "wr_refunded_cdemo_sk" INTEGER, "wr_refunded_hdemo_sk" INTEGER, "wr_refunded_addr_sk" INTEGER, "wr_returning_customer_sk" INTEGER, "wr_returning_cdemo_sk" INTEGER, "wr_returning_hdemo_sk" INTEGER, "wr_returning_addr_sk" INTEGER, "wr_web_page_sk" INTEGER, "wr_reason_sk" INTEGER, "wr_order_number" INTEGER, "wr_return_quantity" INTEGER, "wr_return_amt" DECIMAL(7,2), "wr_return_tax" DECIMAL(7,2), "wr_return_amt_inc_tax" DECIMAL(7,2), "wr_fee" DECIMAL(7,2), "wr_return_ship_cost" DECIMAL(7,2), "wr_refunded_cash" DECIMAL(7,2), "wr_reversed_charge" DECIMAL(7,2), "wr_account_credit" DECIMAL(7,2), "wr_net_loss" DECIMAL(7,2))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE CUSTOMER ("c_customer_sk" INTEGER, "c_customer_id" CHAR(16), "c_current_cdemo_sk" INTEGER, "c_current_hdemo_sk" INTEGER, "c_current_addr_sk" INTEGER, "c_first_shipto_date_sk" INTEGER, "c_first_sales_date_sk" INTEGER, "c_salutation" CHAR(10), "c_first_name" CHAR(20), "c_last_name" CHAR(30), "c_preferred_cust_flag" CHAR(1), "c_birth_day" INTEGER, "c_birth_month" INTEGER, "c_birth_year" INTEGER, "c_birth_country" VARCHAR(20), "c_login" CHAR(13), "c_email_address" CHAR(50), "c_last_review_date" CHAR(10))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE CUSTOMER_ADDRESS ("ca_address_sk" INTEGER, "ca_address_id" CHAR(16), "ca_street_number" CHAR(10), "ca_street_name" VARCHAR(60), "ca_street_type" CHAR(15), "ca_suite_number" CHAR(10), "ca_city" VARCHAR(60), "ca_county" VARCHAR(30), "ca_state" CHAR(2), "ca_zip" CHAR(10), "ca_country" VARCHAR(20), "ca_gmt_offset" DECIMAL(5,2), "ca_location_type" CHAR(20))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE CUSTOMER_DEMOGRAPHICS ("cd_demo_sk" INTEGER, "cd_gender" CHAR(1), "cd_marital_status" CHAR(1), "cd_education_status" CHAR(20), "cd_purchase_estimate" INTEGER, "cd_credit_rating" CHAR(10), "cd_dep_count" INTEGER, "cd_dep_employed_count" INTEGER, "cd_dep_college_count" INTEGER)' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE INVENTORY ("inv_date_sk" INTEGER, "inv_item_sk" INTEGER, "inv_warehouse_sk" INTEGER, "inv_quantity_on_hand" INTEGER)' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE ITEM ("i_item_sk" INTEGER, "i_item_id" CHAR(16), "i_rec_start_date" DATE, "i_rec_end_date" DATE, "i_item_desc" VARCHAR(200), "i_current_price" DECIMAL(7,2), "i_wholesale_cost" DECIMAL(7,2), "i_brand_id" INTEGER, "i_brand" CHAR(50), "i_class_id" INTEGER, "i_class" CHAR(50), "i_category_id" INTEGER, "i_category" CHAR(50), "i_manufact_id" INTEGER, "i_manufact" CHAR(50), "i_size" CHAR(20), "i_formulation" CHAR(20), "i_color" CHAR(20), "i_units" CHAR(10), "i_container" CHAR(10), "i_manager_id" INTEGER, "i_product_name" CHAR(50))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE WAREHOUSE ("w_warehouse_sk" INTEGER, "w_warehouse_id" CHAR(16), "w_warehouse_name" VARCHAR(20), "w_warehouse_sq_ft" INTEGER, "w_street_number" CHAR(10), "w_street_name" VARCHAR(60), "w_street_type" CHAR(15), "w_suite_number" CHAR(10), "w_city" VARCHAR(60), "w_county" VARCHAR(30), "w_state" CHAR(2), "w_zip" CHAR(10), "w_country" VARCHAR(20), "w_gmt_offset" DECIMAL(5,2))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE DATE_DIM ("d_date_sk" INTEGER, "d_date_id" CHAR(16), "d_date" DATE, "d_month_seq" INTEGER, "d_week_seq" INTEGER, "d_quarter_seq" INTEGER, "d_year" INTEGER, "d_dow" INTEGER, "d_moy" INTEGER, "d_dom" INTEGER, "d_qoy" INTEGER, "d_fy_year" INTEGER, "d_fy_quarter_seq" INTEGER, "d_fy_week_seq" INTEGER, "d_day_name" CHAR(9), "d_quarter_name" CHAR(6), "d_holiday" CHAR(1), "d_weekend" CHAR(1), "d_following_holiday" CHAR(1), "d_first_dom" INTEGER, "d_last_dom" INTEGER, "d_same_day_ly" INTEGER, "d_same_day_lq" INTEGER, "d_current_day" CHAR(1), "d_current_week" CHAR(1), "d_current_month" CHAR(1), "d_current_quarter" CHAR(1), "d_current_year" CHAR(1))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE STORE ("s_store_sk" INTEGER, "s_store_id" CHAR(16), "s_rec_start_date" DATE, "s_rec_end_date" DATE, "s_closed_date_sk" INTEGER, "s_store_name" VARCHAR(50), "s_number_employees" INTEGER, "s_floor_space" INTEGER, "s_hours" CHAR(20), "s_manager" VARCHAR(40), "s_market_id" INTEGER, "s_geography_class" VARCHAR(100), @@ -91,14 +91,14 @@ dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;creat "s_company_id" INTEGER, "s_company_name" VARCHAR(50), "s_street_number" VARCHAR(10), "s_street_name" VARCHAR(60), "s_street_type" CHAR(15), "s_suite_number" CHAR(10), "s_city" VARCHAR(60), "s_county" VARCHAR(30), "s_state" CHAR(2), "s_zip" CHAR(10), "s_country" VARCHAR(20), "s_gmt_offset" DECIMAL(5,2), "s_tax_precentage" DECIMAL(5,2))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE HOUSEHOLD_DEMOGRAPHICS ("hd_demo_sk" INTEGER, "hd_income_band_sk" INTEGER, "hd_buy_potential" CHAR(15), "hd_dep_count" INTEGER, "hd_vehicle_count" INTEGER)' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE TIME_DIM ("t_time_sk" INTEGER, "t_time_id" CHAR(16), "t_time" INTEGER, "t_hour" INTEGER, "t_minute" INTEGER, "t_second" INTEGER, "t_am_pm" CHAR(2), "t_shift" CHAR(20), "t_sub_shift" CHAR(20), "t_meal_time" CHAR(20))' ), -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;create=true','user1','passwd1', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'CREATE TABLE REASON ("r_reason_sk" INTEGER, "r_reason_id" CHAR(16), "r_reason_desc" CHAR(100))' ) limit 1; @@ -144,7 +144,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "CATALOG_SALES", @@ -185,7 +185,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "CATALOG_RETURNS", @@ -222,7 +222,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "STORE_SALES", @@ -256,7 +256,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "STORE_RETURNS", @@ -304,7 +304,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "WEB_SALES", @@ -342,7 +342,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "WEB_RETURNS", @@ -374,7 +374,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "CUSTOMER", @@ -401,7 +401,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "CUSTOMER_ADDRESS", @@ -424,7 +424,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "CUSTOMER_DEMOGRAPHICS", @@ -442,7 +442,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "INVENTORY", @@ -478,7 +478,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "ITEM", @@ -506,7 +506,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "WAREHOUSE", @@ -548,7 +548,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "DATE_DIM", @@ -591,7 +591,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "STORE", @@ -610,7 +610,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "HOUSEHOLD_DEMOGRAPHICS", @@ -634,7 +634,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "TIME_DIM", @@ -651,7 +651,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user1", "hive.sql.dbcp.password" = "passwd1", "hive.sql.table" = "REASON", @@ -1981,38 +1981,38 @@ DROP TABLE reason; FROM src SELECT -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE CATALOG_SALES' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE CATALOG_RETURNS' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE STORE_SALES' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE STORE_RETURNS' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE WEB_SALES' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE WEB_RETURNS' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE CUSTOMER' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE CUSTOMER_ADDRESS' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE CUSTOMER_DEMOGRAPHICS' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE INVENTORY' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE ITEM' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE WAREHOUSE' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE DATE_DIM' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE STORE' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE HOUSEHOLD_DEMOGRAPHICS' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE TIME_DIM' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_perf','user1','passwd1', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user1','passwd1', 'DROP TABLE REASON' ) limit 1; diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table_typeconversion.q b/ql/src/test/queries/clientpositive/external_jdbc_table_typeconversion.q index 9342aa325ba0..eac48611c8ff 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table_typeconversion.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table_typeconversion.q @@ -1,3 +1,4 @@ +--!qt:database:derby:qdb --! qt:dataset:src CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; @@ -5,17 +6,17 @@ CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf -- convert varchar to numeric/decimal/date/timestamp FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;create=true','user','passwd', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'CREATE TABLE EXTERNAL_JDBC_TYPE_CONVERSION_TABLE1 ("ikey" VARCHAR(20), "bkey" VARCHAR(20), "fkey" VARCHAR(20), "dkey" VARCHAR(20), "chkey" VARCHAR(20), "dekey" VARCHAR(20), "dtkey" VARCHAR(20), "tkey" VARCHAR(50))' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','1','1000','20.0','40.0','aaa','3.1415','2010-01-01','2018-01-01 12:00:00.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','5','9000',null,'10.0','bbb','2.7182','2018-01-01','2010-06-01 14:00:00.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','3','4000','120.0','25.4','hello','2.7182','2017-06-05','2011-11-10 18:00:08.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','8','3000','180.0','35.8','world','3.1415','2014-03-03','2016-07-04 13:00:00.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE1 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey") VALUES (?,?,?,?,?,?,?,?)','4','8000','120.4','31.3','ccc',null,'2014-03-04','2018-07-08 11:00:00.000000000') limit 1; @@ -34,7 +35,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE1", @@ -51,19 +52,19 @@ SELECT * FROM jdbc_type_conversion_table1; FROM src SELECT -dboutput ('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;create=true','user','passwd', +dboutput ('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'CREATE TABLE EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE, "chkey" VARCHAR(20), "dekey" DECIMAL(6,4), "dtkey" DATE, "tkey" TIMESTAMP, "mixkey" VARCHAR(50))' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey", "mixkey") VALUES (?,?,?,?,?,?,?,?,?)','1','1000','20.0','40.0','aaa','3.1415','2010-01-01','2018-01-01 12:00:00.000000000','10'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey", "mixkey") VALUES (?,?,?,?,?,?,?,?,?)','5','9000',null,'10.0','bbb','2.7182','2018-01-01','2010-06-01 14:00:00.000000000','100000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey", "mixkey") VALUES (?,?,?,?,?,?,?,?,?)','3','4000','120.0','25.4','hello','2.7182','2017-06-05','2011-11-10 18:00:08.000000000','10.582'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey", "mixkey") VALUES (?,?,?,?,?,?,?,?,?)','8','3000','180.0','35.8','world','3.1415','2014-03-03','2016-07-04 13:00:00.000000000','2024-03-03'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey", "mixkey") VALUES (?,?,?,?,?,?,?,?,?)','4','8000','120.4','31.3','ccc',null,'2014-03-04','2018-07-08 11:00:00.000000000','2018-07-08 11:00:00.000000000'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300','user','passwd', +dboutput('${system:hive.test.database.qdb.jdbc.url}','user','passwd', 'INSERT INTO EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2 ("ikey","bkey","fkey","dkey","chkey","dekey","dtkey","tkey", "mixkey") VALUES (?,?,?,?,?,?,?,?,?)','6','6000','80.4','5.3','ddd',null,'2024-05-31','2024-05-31 13:22:34.000000123','ddd') limit 1; @@ -83,7 +84,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -110,7 +111,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -137,7 +138,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -164,7 +165,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -191,7 +192,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -218,7 +219,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -245,7 +246,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -272,7 +273,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", @@ -299,7 +300,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby2_300;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "user", "hive.sql.dbcp.password" = "passwd", "hive.sql.table" = "EXTERNAL_JDBC_TYPE_CONVERSION_TABLE2", diff --git a/ql/src/test/queries/clientpositive/external_jdbc_view.q b/ql/src/test/queries/clientpositive/external_jdbc_view.q index 9575cabaac09..e254a792fb96 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_view.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_view.q @@ -1,15 +1,16 @@ +--!qt:database:derby:qdb CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_view;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE person ("id" INTEGER, "name" VARCHAR(25), "jid" INTEGER, "cid" INTEGER)' ); SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_view;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE country ("id" INTEGER, "name" VARCHAR(25))' ); SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_view;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE job ("id" INTEGER, "title" VARCHAR(20))' ); @@ -24,7 +25,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_view;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "PERSON", @@ -41,7 +42,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_view;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "COUNTRY", @@ -62,7 +63,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_jdbc_view;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.schema" = "APP", diff --git a/ql/src/test/queries/clientpositive/jdbc_handler.q b/ql/src/test/queries/clientpositive/jdbc_handler.q index 55de3bdefab0..b2ed0b095c4d 100644 --- a/ql/src/test/queries/clientpositive/jdbc_handler.q +++ b/ql/src/test/queries/clientpositive/jdbc_handler.q @@ -1,5 +1,5 @@ +--!qt:database:derby:qdb --! qt:dataset:src ---! qt:disabled:flaky HIVE-23709 set hive.strict.checks.cartesian.product= false; @@ -9,13 +9,13 @@ CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf FROM src -SELECT dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +SELECT dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE ("kkey" INTEGER NOT NULL )' ), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE ("kkey") VALUES (?)','20'), -dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput('${system:hive.test.database.qdb.jdbc.url}','','', 'INSERT INTO SIMPLE_DERBY_TABLE ("kkey") VALUES (?)','200') limit 1; @@ -28,7 +28,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE", @@ -97,7 +97,7 @@ describe tables; FROM src -SELECT dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_insert_derby_as_external_table_db;create=true','','', +SELECT dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE INSERT_TO_DERBY_TABLE (a BOOLEAN, b INTEGER, c BIGINT, d FLOAT, e DOUBLE, f DATE, g VARCHAR(27), h VARCHAR(27), i CHAR(2), j TIMESTAMP, k DECIMAL(5,4), l SMALLINT, m SMALLINT, b1 CHAR(10))' ) @@ -124,7 +124,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_insert_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "INSERT_TO_DERBY_TABLE", diff --git a/ql/src/test/queries/clientpositive/jdbc_split_filter.q b/ql/src/test/queries/clientpositive/jdbc_split_filter.q index 4ff19b01c1c8..d624f938d77d 100644 --- a/ql/src/test/queries/clientpositive/jdbc_split_filter.q +++ b/ql/src/test/queries/clientpositive/jdbc_split_filter.q @@ -1,16 +1,16 @@ ---! qt:disabled:flaky HIVE-25462 +--!qt:database:derby:qdb CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE1 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE)' ); SELECT -dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','', +dboutput ( '${system:hive.test.database.qdb.jdbc.url}','','', 'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, "dkey" DOUBLE, "datekey" DATE)' ); CREATE EXTERNAL TABLE ext_simple_derby_table1 @@ -24,7 +24,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE1", @@ -44,7 +44,7 @@ STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "DERBY", "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", - "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url};collation=TERRITORY_BASED:PRIMARY", "hive.sql.dbcp.username" = "APP", "hive.sql.dbcp.password" = "mine", "hive.sql.table" = "SIMPLE_DERBY_TABLE2", diff --git a/ql/src/test/queries/clientpositive/qt_database_derby.q b/ql/src/test/queries/clientpositive/qt_database_derby.q new file mode 100644 index 000000000000..80e93aa70dae --- /dev/null +++ b/ql/src/test/queries/clientpositive/qt_database_derby.q @@ -0,0 +1,17 @@ +--!qt:database:derby:qdb:q_test_country_table.sql +CREATE EXTERNAL TABLE country +( + id int, + name varchar(20) +) + STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' + TBLPROPERTIES ( + "hive.sql.database.type" = "DERBY", + "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", + "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url}", + "hive.sql.dbcp.username" = "${system:hive.test.database.qdb.jdbc.username}", + "hive.sql.dbcp.password" = "${system:hive.test.database.qdb.jdbc.password}", + "hive.sql.dbcp.maxActive" = "1", + "hive.sql.table" = "COUNTRY" + ); +SELECT * FROM country; diff --git a/ql/src/test/results/clientnegative/external_jdbc_negative.q.out b/ql/src/test/results/clientnegative/external_jdbc_negative.q.out index c9d296b0599b..485a742fa447 100644 --- a/ql/src/test/results/clientnegative/external_jdbc_negative.q.out +++ b/ql/src/test/results/clientnegative/external_jdbc_negative.q.out @@ -43,4 +43,4 @@ TBLPROPERTIES ( PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@db1_ext_negative1 -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask. java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException org.apache.hadoop.hive.serde2.SerDeException: Column numbers do not match. Remote table columns are [ikey] and declared table columns in Hive external table are [ikey, bkey]) +FAILED: Execution Error, return code 40000 from org.apache.hadoop.hive.ql.ddl.DDLTask. java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException Caught exception while initializing the SqlSerDe: Column numbers do not match. Remote table columns are [ikey] and declared table columns in Hive external table are [ikey, bkey]) diff --git a/ql/src/test/results/clientpositive/llap/dataconnector.q.out b/ql/src/test/results/clientpositive/llap/dataconnector.q.out index d6e162a4ab1f..3582a519ee56 100644 --- a/ql/src/test/results/clientpositive/llap/dataconnector.q.out +++ b/ql/src/test/results/clientpositive/llap/dataconnector.q.out @@ -50,7 +50,7 @@ POSTHOOK: type: SHOWDATACONNECTORS mysql_test PREHOOK: query: CREATE CONNECTOR IF NOT EXISTS derby_test TYPE 'derby' -URL 'jdbc:derby:./target/db_for_connectortest.db;create=true' +#### A masked pattern was here #### COMMENT 'test derby connector' WITH DCPROPERTIES ( "hive.sql.dbcp.username"="APP", @@ -59,7 +59,7 @@ PREHOOK: type: CREATEDATACONNECTOR PREHOOK: Output: connector:derby_test POSTHOOK: query: CREATE CONNECTOR IF NOT EXISTS derby_test TYPE 'derby' -URL 'jdbc:derby:./target/db_for_connectortest.db;create=true' +#### A masked pattern was here #### COMMENT 'test derby connector' WITH DCPROPERTIES ( "hive.sql.dbcp.username"="APP", @@ -138,8 +138,8 @@ PREHOOK: Input: database:db_derby POSTHOOK: query: SHOW TABLES POSTHOOK: type: SHOWTABLES POSTHOOK: Input: database:db_derby -TESTTABLE1 -TESTTABLE2 +AUTHOR +BOOK PREHOOK: query: alter connector mysql_test set URL 'jdbc:mysql://nightly1.apache.org:3306/hive2' PREHOOK: type: ALTERDATACONNECTOR_ PREHOOK: Output: connector:mysql_test diff --git a/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out b/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out index 5f8f9caa3131..ac99bb17dd50 100644 --- a/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out +++ b/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out @@ -319,7 +319,8 @@ STAGE PLANS: alias: ext_simple_derby_table1 properties: hive.sql.query SELECT "bkey" -FROM "SIMPLE_DERBY_TABLE1" +FROM (SELECT "ikey", "bkey" +FROM "SIMPLE_DERBY_TABLE1") AS "t" WHERE 100 < "ikey" hive.sql.query.fieldNames bkey hive.sql.query.fieldTypes bigint @@ -395,13 +396,15 @@ STAGE PLANS: TableScan alias: ext_simple_derby_table1 properties: - hive.sql.query SELECT "t0"."fkey", "t2"."dkey" + hive.sql.query SELECT "t1"."fkey", "t4"."dkey" FROM (SELECT "ikey", "fkey" -FROM "SIMPLE_DERBY_TABLE1" -WHERE "ikey" IS NOT NULL) AS "t0" +FROM (SELECT "ikey", "fkey" +FROM "SIMPLE_DERBY_TABLE1") AS "t" +WHERE "ikey" IS NOT NULL) AS "t1" INNER JOIN (SELECT "ikey", "dkey" -FROM "SIMPLE_DERBY_TABLE2" -WHERE "ikey" IS NOT NULL) AS "t2" ON "t0"."ikey" = "t2"."ikey" +FROM (SELECT "ikey", "dkey" +FROM "SIMPLE_DERBY_TABLE2") AS "t2" +WHERE "ikey" IS NOT NULL) AS "t4" ON "t1"."ikey" = "t4"."ikey" hive.sql.query.fieldNames fkey,dkey hive.sql.query.fieldTypes float,double hive.sql.query.split false @@ -476,7 +479,8 @@ STAGE PLANS: alias: ext_simple_derby_table2 properties: hive.sql.query SELECT "ikey", "dkey" -FROM "SIMPLE_DERBY_TABLE2" +FROM (SELECT "ikey", "dkey" +FROM "SIMPLE_DERBY_TABLE2") AS "t" WHERE "ikey" IS NOT NULL hive.sql.query.fieldNames ikey,dkey hive.sql.query.fieldTypes int,double @@ -572,10 +576,12 @@ CBO PLAN: HiveJdbcConverter(convention=[JDBC.DERBY]) JdbcProject(fkey=[$1], dkey=[$3]) JdbcJoin(condition=[=($0, $2)], joinType=[inner]) - JdbcProject(ikey=[$0], fkey=[$2]) + JdbcProject(ikey=[$0], fkey=[$1]) JdbcFilter(condition=[IS NOT NULL($0)]) - JdbcHiveTableScan(table=[[default, ext_simple_derby_table1]], table:alias=[ext_simple_derby_table1]) - JdbcProject(ikey=[$0], dkey=[$3]) + JdbcProject(ikey=[$0], fkey=[$2]) + JdbcHiveTableScan(table=[[default, ext_simple_derby_table1]], table:alias=[ext_simple_derby_table1]) + JdbcProject(ikey=[$0], dkey=[$1]) JdbcFilter(condition=[IS NOT NULL($0)]) - JdbcHiveTableScan(table=[[default, ext_simple_derby_table2]], table:alias=[ext_simple_derby_table2]) + JdbcProject(ikey=[$0], dkey=[$3]) + JdbcHiveTableScan(table=[[default, ext_simple_derby_table2]], table:alias=[ext_simple_derby_table2]) diff --git a/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out b/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out index cb078e66e921..183069a25b9e 100644 --- a/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out +++ b/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out @@ -1480,41 +1480,47 @@ STAGE PLANS: TableScan alias: inventory properties: - hive.sql.query SELECT "t23"."w_warehouse_sk", "t23"."i_item_sk", CAST(1 AS INTEGER) AS "d_moy", "t23"."mean", "t23"."cov", "t23"."w_warehouse_sk0" AS "w_warehouse_sk1", "t23"."i_item_sk0" AS "i_item_sk1", CAST(2 AS INTEGER) AS "d_moy1", "t23"."mean0" AS "mean1", "t23"."cov0" AS "cov1" -FROM (SELECT "t10"."w_warehouse_sk", "t10"."i_item_sk", "t10"."mean", "t10"."cov", "t22"."w_warehouse_sk" AS "w_warehouse_sk0", "t22"."i_item_sk" AS "i_item_sk0", "t22"."mean" AS "mean0", "t22"."cov" AS "cov0" + hive.sql.query SELECT "t29"."w_warehouse_sk", "t29"."i_item_sk", CAST(1 AS INTEGER) AS "d_moy", "t29"."mean", "t29"."cov", "t29"."w_warehouse_sk0" AS "w_warehouse_sk1", "t29"."i_item_sk0" AS "i_item_sk1", CAST(2 AS INTEGER) AS "d_moy1", "t29"."mean0" AS "mean1", "t29"."cov0" AS "cov1" +FROM (SELECT "t13"."w_warehouse_sk", "t13"."i_item_sk", "t13"."mean", "t13"."cov", "t28"."w_warehouse_sk" AS "w_warehouse_sk0", "t28"."i_item_sk" AS "i_item_sk0", "t28"."mean" AS "mean0", "t28"."cov" AS "cov0" FROM (SELECT "w_warehouse_sk", "i_item_sk", CAST("$f3" AS DOUBLE) / "$f4" AS "mean", CASE WHEN CAST("$f3" AS DOUBLE) / "$f4" = 0 THEN NULL ELSE CAST("$f3" AS DOUBLE) / (CAST("$f3" AS DOUBLE) / "$f4") END AS "cov" -FROM (SELECT "t6"."w_warehouse_name", "t6"."w_warehouse_sk", "t2"."i_item_sk", SUM("t0"."inv_quantity_on_hand") AS "$f3", COUNT("t0"."inv_quantity_on_hand") AS "$f4" +FROM (SELECT "t9"."w_warehouse_name", "t9"."w_warehouse_sk", "t3"."i_item_sk", SUM("t0"."inv_quantity_on_hand") AS "$f3", COUNT("t0"."inv_quantity_on_hand") AS "$f4" FROM (SELECT "inv_date_sk", "inv_item_sk", "inv_warehouse_sk", "inv_quantity_on_hand" FROM "INVENTORY" -WHERE "inv_item_sk" IS NOT NULL AND ("inv_warehouse_sk" IS NOT NULL AND "inv_date_sk" IS NOT NULL)) AS "t0" +WHERE "inv_item_sk" IS NOT NULL AND "inv_warehouse_sk" IS NOT NULL AND "inv_date_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "i_item_sk" -FROM "ITEM" -WHERE "i_item_sk" IS NOT NULL) AS "t2" ON "t0"."inv_item_sk" = "t2"."i_item_sk" +FROM (SELECT "i_item_sk" +FROM "ITEM") AS "t1" +WHERE "i_item_sk" IS NOT NULL) AS "t3" ON "t0"."inv_item_sk" = "t3"."i_item_sk" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 2001 AND ("d_moy" = 1 AND "d_date_sk" IS NOT NULL)) AS "t4" ON "t0"."inv_date_sk" = "t4"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t4" +WHERE "d_year" = 2001 AND "d_moy" = 1 AND "d_date_sk" IS NOT NULL) AS "t6" ON "t0"."inv_date_sk" = "t6"."d_date_sk" INNER JOIN (SELECT "w_warehouse_sk", "w_warehouse_name" -FROM "WAREHOUSE" -WHERE "w_warehouse_sk" IS NOT NULL) AS "t6" ON "t0"."inv_warehouse_sk" = "t6"."w_warehouse_sk" -GROUP BY "t2"."i_item_sk", "t6"."w_warehouse_sk", "t6"."w_warehouse_name") AS "t8" -WHERE CASE WHEN CAST("t8"."$f3" AS DOUBLE) / "t8"."$f4" = 0 THEN FALSE ELSE CAST("t8"."$f3" AS DOUBLE) / (CAST("t8"."$f3" AS DOUBLE) / "t8"."$f4") > 1 END) AS "t10" +FROM (SELECT "w_warehouse_sk", "w_warehouse_name" +FROM "WAREHOUSE") AS "t7" +WHERE "w_warehouse_sk" IS NOT NULL) AS "t9" ON "t0"."inv_warehouse_sk" = "t9"."w_warehouse_sk" +GROUP BY "t3"."i_item_sk", "t9"."w_warehouse_sk", "t9"."w_warehouse_name") AS "t11" +WHERE CASE WHEN CAST("t11"."$f3" AS DOUBLE) / "t11"."$f4" = 0 THEN FALSE ELSE CAST("t11"."$f3" AS DOUBLE) / (CAST("t11"."$f3" AS DOUBLE) / "t11"."$f4") > 1 END) AS "t13" INNER JOIN (SELECT "w_warehouse_sk", "i_item_sk", CAST("$f3" AS DOUBLE) / "$f4" AS "mean", CASE WHEN CAST("$f3" AS DOUBLE) / "$f4" = 0 THEN NULL ELSE CAST("$f3" AS DOUBLE) / (CAST("$f3" AS DOUBLE) / "$f4") END AS "cov" -FROM (SELECT "t18"."w_warehouse_name", "t18"."w_warehouse_sk", "t14"."i_item_sk", SUM("t12"."inv_quantity_on_hand") AS "$f3", COUNT("t12"."inv_quantity_on_hand") AS "$f4" +FROM (SELECT "t24"."w_warehouse_name", "t24"."w_warehouse_sk", "t18"."i_item_sk", SUM("t15"."inv_quantity_on_hand") AS "$f3", COUNT("t15"."inv_quantity_on_hand") AS "$f4" FROM (SELECT "inv_date_sk", "inv_item_sk", "inv_warehouse_sk", "inv_quantity_on_hand" FROM "INVENTORY" -WHERE "inv_item_sk" IS NOT NULL AND ("inv_warehouse_sk" IS NOT NULL AND "inv_date_sk" IS NOT NULL)) AS "t12" +WHERE "inv_item_sk" IS NOT NULL AND "inv_warehouse_sk" IS NOT NULL AND "inv_date_sk" IS NOT NULL) AS "t15" INNER JOIN (SELECT "i_item_sk" -FROM "ITEM" -WHERE "i_item_sk" IS NOT NULL) AS "t14" ON "t12"."inv_item_sk" = "t14"."i_item_sk" +FROM (SELECT "i_item_sk" +FROM "ITEM") AS "t16" +WHERE "i_item_sk" IS NOT NULL) AS "t18" ON "t15"."inv_item_sk" = "t18"."i_item_sk" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 2001 AND ("d_moy" = 2 AND "d_date_sk" IS NOT NULL)) AS "t16" ON "t12"."inv_date_sk" = "t16"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t19" +WHERE "d_year" = 2001 AND "d_moy" = 2 AND "d_date_sk" IS NOT NULL) AS "t21" ON "t15"."inv_date_sk" = "t21"."d_date_sk" INNER JOIN (SELECT "w_warehouse_sk", "w_warehouse_name" -FROM "WAREHOUSE" -WHERE "w_warehouse_sk" IS NOT NULL) AS "t18" ON "t12"."inv_warehouse_sk" = "t18"."w_warehouse_sk" -GROUP BY "t14"."i_item_sk", "t18"."w_warehouse_sk", "t18"."w_warehouse_name") AS "t20" -WHERE CASE WHEN CAST("t20"."$f3" AS DOUBLE) / "t20"."$f4" = 0 THEN FALSE ELSE CAST("t20"."$f3" AS DOUBLE) / (CAST("t20"."$f3" AS DOUBLE) / "t20"."$f4") > 1 END) AS "t22" ON "t10"."i_item_sk" = "t22"."i_item_sk" AND "t10"."w_warehouse_sk" = "t22"."w_warehouse_sk" -ORDER BY "t10"."w_warehouse_sk", "t10"."i_item_sk", "t10"."mean", "t10"."cov", "t22"."mean", "t22"."cov") AS "t23" +FROM (SELECT "w_warehouse_sk", "w_warehouse_name" +FROM "WAREHOUSE") AS "t22" +WHERE "w_warehouse_sk" IS NOT NULL) AS "t24" ON "t15"."inv_warehouse_sk" = "t24"."w_warehouse_sk" +GROUP BY "t18"."i_item_sk", "t24"."w_warehouse_sk", "t24"."w_warehouse_name") AS "t26" +WHERE CASE WHEN CAST("t26"."$f3" AS DOUBLE) / "t26"."$f4" = 0 THEN FALSE ELSE CAST("t26"."$f3" AS DOUBLE) / (CAST("t26"."$f3" AS DOUBLE) / "t26"."$f4") > 1 END) AS "t28" ON "t13"."i_item_sk" = "t28"."i_item_sk" AND "t13"."w_warehouse_sk" = "t28"."w_warehouse_sk" +ORDER BY "t13"."w_warehouse_sk", "t13"."i_item_sk", "t13"."mean", "t13"."cov", "t28"."mean", "t28"."cov") AS "t29" hive.sql.query.fieldNames w_warehouse_sk,i_item_sk,d_moy,mean,cov,w_warehouse_sk1,i_item_sk1,d_moy1,mean1,cov1 hive.sql.query.fieldTypes int,int,int,double,double,int,int,int,double,double hive.sql.query.split false @@ -1738,23 +1744,26 @@ STAGE PLANS: TableScan alias: c properties: - hive.sql.query SELECT "t0"."c_customer_sk", "t0"."c_customer_id", "t0"."c_current_cdemo_sk", "t0"."c_current_hdemo_sk", "t0"."c_current_addr_sk", "t0"."c_first_shipto_date_sk", "t0"."c_first_sales_date_sk", "t0"."c_salutation", "t0"."c_first_name", "t0"."c_last_name", "t0"."c_preferred_cust_flag", "t0"."c_birth_day", "t0"."c_birth_month", "t0"."c_birth_year", "t0"."c_birth_country", "t0"."c_login", "t0"."c_email_address", "t0"."c_last_review_date", "t4"."ca_address_sk", "t4"."ca_address_id", "t4"."ca_street_number", "t4"."ca_street_name", "t4"."ca_street_type", "t4"."ca_suite_number", "t4"."ca_city", "t4"."ca_county", "t4"."ca_state", "t4"."ca_zip", "t4"."ca_country", "t4"."ca_gmt_offset", "t4"."ca_location_type", "t2"."cd_demo_sk", "t2"."cd_gender", "t2"."cd_marital_status", "t2"."cd_education_status", "t2"."cd_purchase_estimate", "t2"."cd_credit_rating", "t2"."cd_dep_count", "t2"."cd_dep_employed_count", "t2"."cd_dep_college_count" -FROM (SELECT "c_customer_sk", "c_customer_id", "c_current_cdemo_sk", "c_current_hdemo_sk", "c_current_addr_sk", "c_first_shipto_date_sk", "c_first_sales_date_sk", "c_salutation", "c_first_name", "c_last_name", "c_preferred_cust_flag", "c_birth_day", "c_birth_month", "c_birth_year", "c_birth_country", "c_login", "c_email_address", "c_last_review_date" -FROM "CUSTOMER" -WHERE "c_current_addr_sk" IS NOT NULL AND ("c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating", "cd_dep_count", "cd_dep_employed_count", "cd_dep_college_count" -FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."c_current_cdemo_sk" = "t2"."cd_demo_sk" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t0"."c_current_addr_sk" = "t4"."ca_address_sk" - hive.sql.query.fieldNames c_customer_sk,c_customer_id,c_current_cdemo_sk,c_current_hdemo_sk,c_current_addr_sk,c_first_shipto_date_sk,c_first_sales_date_sk,c_salutation,c_first_name,c_last_name,c_preferred_cust_flag,c_birth_day,c_birth_month,c_birth_year,c_birth_country,c_login,c_email_address,c_last_review_date,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating,cd_dep_count,cd_dep_employed_count,cd_dep_college_count - hive.sql.query.fieldTypes int,char(16),int,int,int,int,int,char(10),char(20),char(30),char(1),int,int,int,varchar(20),char(13),char(50),char(10),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(1),char(1),char(20),int,char(10),int,int,int + hive.sql.query SELECT "t1"."c_customer_sk", "t1"."c_current_cdemo_sk", "t1"."c_current_addr_sk", "t4"."ca_address_sk", "t4"."ca_state", "t7"."cd_demo_sk", "t7"."cd_gender", "t7"."cd_marital_status", "t7"."cd_education_status", "t7"."cd_purchase_estimate", "t7"."cd_credit_rating" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM "CUSTOMER") AS "t" +WHERE "c_current_addr_sk" IS NOT NULL AND "c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_state" +FROM (SELECT "ca_address_sk", "ca_state" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."c_current_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM "CUSTOMER_DEMOGRAPHICS") AS "t5" +WHERE "cd_demo_sk" IS NOT NULL) AS "t7" ON "t1"."c_current_cdemo_sk" = "t7"."cd_demo_sk" + hive.sql.query.fieldNames c_customer_sk,c_current_cdemo_sk,c_current_addr_sk,ca_address_sk,ca_state,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating + hive.sql.query.fieldTypes int,int,int,int,char(2),int,char(1),char(1),char(20),int,char(10) hive.sql.query.split false Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c_customer_sk (type: int), cd_gender (type: char(1)), cd_marital_status (type: char(1)), cd_education_status (type: char(20)), cd_purchase_estimate (type: int), cd_credit_rating (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -1762,7 +1771,7 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Execution mode: vectorized, llap LLAP IO: no inputs Map 7 @@ -1770,13 +1779,15 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" TableScan alias: store_sales properties: - hive.sql.query SELECT "t0"."ss_customer_sk" + hive.sql.query SELECT "t1"."ss_customer_sk" FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" -FROM "STORE_SALES" -WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t0" +FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE "d_year" = 1999 AND "d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames ss_customer_sk hive.sql.query.fieldTypes int hive.sql.query.split false @@ -1804,13 +1815,15 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) TableScan alias: web_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."ws_bill_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."ws_bill_customer_sk" FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" -FROM "WEB_SALES" -WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t0" +FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" +FROM "WEB_SALES") AS "t" +WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ws_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE "d_year" = 1999 AND "d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames literalTrue,ws_bill_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -1833,13 +1846,15 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) TableScan alias: catalog_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."cs_ship_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."cs_ship_customer_sk" +FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" -FROM "CATALOG_SALES" -WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t0" +FROM "CATALOG_SALES") AS "t" +WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."cs_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE "d_year" = 1999 AND "d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames literalTrue,cs_ship_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -1871,7 +1886,7 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) keys: 0 _col0 (type: int) 1 _col0 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -1879,7 +1894,7 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 3 Execution mode: llap Reduce Operator Tree: @@ -1889,14 +1904,14 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) keys: 0 _col0 (type: int) 1 _col1 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36, _col40 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10, _col11 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: _col40 is null (type: boolean) + predicate: _col11 is null (type: boolean) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: int), _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + expressions: _col0 (type: int), _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -1904,7 +1919,7 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 4 Execution mode: llap Reduce Operator Tree: @@ -1914,17 +1929,17 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) keys: 0 _col0 (type: int) 1 _col0 (type: int) - outputColumnNames: _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Top N Key Operator sort order: +++++ - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) null sort order: zzzzz Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE top n: 100 Group By Operator aggregations: count() - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 @@ -2222,23 +2237,26 @@ STAGE PLANS: TableScan alias: c properties: - hive.sql.query SELECT "t0"."c_customer_sk", "t0"."c_customer_id", "t0"."c_current_cdemo_sk", "t0"."c_current_hdemo_sk", "t0"."c_current_addr_sk", "t0"."c_first_shipto_date_sk", "t0"."c_first_sales_date_sk", "t0"."c_salutation", "t0"."c_first_name", "t0"."c_last_name", "t0"."c_preferred_cust_flag", "t0"."c_birth_day", "t0"."c_birth_month", "t0"."c_birth_year", "t0"."c_birth_country", "t0"."c_login", "t0"."c_email_address", "t0"."c_last_review_date", "t4"."ca_address_sk", "t4"."ca_address_id", "t4"."ca_street_number", "t4"."ca_street_name", "t4"."ca_street_type", "t4"."ca_suite_number", "t4"."ca_city", "t4"."ca_county", "t4"."ca_state", "t4"."ca_zip", "t4"."ca_country", "t4"."ca_gmt_offset", "t4"."ca_location_type", "t2"."cd_demo_sk", "t2"."cd_gender", "t2"."cd_marital_status", "t2"."cd_education_status", "t2"."cd_purchase_estimate", "t2"."cd_credit_rating", "t2"."cd_dep_count", "t2"."cd_dep_employed_count", "t2"."cd_dep_college_count" -FROM (SELECT "c_customer_sk", "c_customer_id", "c_current_cdemo_sk", "c_current_hdemo_sk", "c_current_addr_sk", "c_first_shipto_date_sk", "c_first_sales_date_sk", "c_salutation", "c_first_name", "c_last_name", "c_preferred_cust_flag", "c_birth_day", "c_birth_month", "c_birth_year", "c_birth_country", "c_login", "c_email_address", "c_last_review_date" -FROM "CUSTOMER" -WHERE "c_current_addr_sk" IS NOT NULL AND ("c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating", "cd_dep_count", "cd_dep_employed_count", "cd_dep_college_count" -FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."c_current_cdemo_sk" = "t2"."cd_demo_sk" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t0"."c_current_addr_sk" = "t4"."ca_address_sk" - hive.sql.query.fieldNames c_customer_sk,c_customer_id,c_current_cdemo_sk,c_current_hdemo_sk,c_current_addr_sk,c_first_shipto_date_sk,c_first_sales_date_sk,c_salutation,c_first_name,c_last_name,c_preferred_cust_flag,c_birth_day,c_birth_month,c_birth_year,c_birth_country,c_login,c_email_address,c_last_review_date,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating,cd_dep_count,cd_dep_employed_count,cd_dep_college_count - hive.sql.query.fieldTypes int,char(16),int,int,int,int,int,char(10),char(20),char(30),char(1),int,int,int,varchar(20),char(13),char(50),char(10),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(1),char(1),char(20),int,char(10),int,int,int + hive.sql.query SELECT "t1"."c_customer_sk", "t1"."c_current_cdemo_sk", "t1"."c_current_addr_sk", "t4"."ca_address_sk", "t4"."ca_state", "t7"."cd_demo_sk", "t7"."cd_gender", "t7"."cd_marital_status", "t7"."cd_education_status", "t7"."cd_purchase_estimate", "t7"."cd_credit_rating" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM "CUSTOMER") AS "t" +WHERE "c_current_addr_sk" IS NOT NULL AND "c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_state" +FROM (SELECT "ca_address_sk", "ca_state" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."c_current_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM "CUSTOMER_DEMOGRAPHICS") AS "t5" +WHERE "cd_demo_sk" IS NOT NULL) AS "t7" ON "t1"."c_current_cdemo_sk" = "t7"."cd_demo_sk" + hive.sql.query.fieldNames c_customer_sk,c_current_cdemo_sk,c_current_addr_sk,ca_address_sk,ca_state,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating + hive.sql.query.fieldTypes int,int,int,int,char(2),int,char(1),char(1),char(20),int,char(10) hive.sql.query.split false Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c_customer_sk (type: int), cd_gender (type: char(1)), cd_marital_status (type: char(1)), cd_education_status (type: char(20)), cd_purchase_estimate (type: int), cd_credit_rating (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -2246,7 +2264,7 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Execution mode: vectorized, llap LLAP IO: no inputs Map 7 @@ -2254,13 +2272,15 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" TableScan alias: store_sales properties: - hive.sql.query SELECT "t0"."ss_customer_sk" + hive.sql.query SELECT "t1"."ss_customer_sk" FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" -FROM "STORE_SALES" -WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t0" +FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames ss_customer_sk hive.sql.query.fieldTypes int hive.sql.query.split false @@ -2288,13 +2308,15 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) TableScan alias: web_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."ws_bill_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."ws_bill_customer_sk" +FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" -FROM "WEB_SALES" -WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t0" +FROM "WEB_SALES") AS "t" +WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ws_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames literalTrue,ws_bill_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -2317,13 +2339,15 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) TableScan alias: catalog_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."cs_ship_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."cs_ship_customer_sk" FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" -FROM "CATALOG_SALES" -WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t0" +FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" +FROM "CATALOG_SALES") AS "t" +WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."cs_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames literalTrue,cs_ship_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -2355,7 +2379,7 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) keys: 0 _col0 (type: int) 1 _col0 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -2363,7 +2387,7 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 3 Execution mode: llap Reduce Operator Tree: @@ -2373,14 +2397,14 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) keys: 0 _col0 (type: int) 1 _col1 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36, _col40 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10, _col11 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: _col40 is null (type: boolean) + predicate: _col11 is null (type: boolean) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: int), _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + expressions: _col0 (type: int), _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -2388,7 +2412,7 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 4 Execution mode: llap Reduce Operator Tree: @@ -2398,17 +2422,17 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) keys: 0 _col0 (type: int) 1 _col0 (type: int) - outputColumnNames: _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Top N Key Operator sort order: +++++ - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) null sort order: zzzzz Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE top n: 100 Group By Operator aggregations: count() - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 @@ -3068,34 +3092,38 @@ STAGE PLANS: TableScan alias: store_sales properties: - hive.sql.query SELECT "t0"."ss_sold_date_sk", "t0"."ss_sold_time_sk", "t0"."ss_item_sk", "t0"."ss_customer_sk", "t0"."ss_cdemo_sk", "t0"."ss_hdemo_sk", "t0"."ss_addr_sk", "t0"."ss_store_sk", "t0"."ss_promo_sk", "t0"."ss_ticket_number", "t0"."ss_quantity", "t0"."ss_wholesale_cost", "t0"."ss_list_price", "t0"."ss_sales_price", "t0"."ss_ext_discount_amt", "t0"."ss_ext_sales_price", "t0"."ss_ext_wholesale_cost", "t0"."ss_ext_list_price", "t0"."ss_ext_tax", "t0"."ss_coupon_amt", "t0"."ss_net_paid", "t0"."ss_net_paid_inc_tax", "t0"."ss_net_profit", "t6"."d_date_sk", "t6"."d_date_id", "t6"."d_date", "t6"."d_month_seq", "t6"."d_week_seq", "t6"."d_quarter_seq", "t6"."d_year", "t6"."d_dow", "t6"."d_moy", "t6"."d_dom", "t6"."d_qoy", "t6"."d_fy_year", "t6"."d_fy_quarter_seq", "t6"."d_fy_week_seq", "t6"."d_day_name", "t6"."d_quarter_name", "t6"."d_holiday", "t6"."d_weekend", "t6"."d_following_holiday", "t6"."d_first_dom", "t6"."d_last_dom", "t6"."d_same_day_ly", "t6"."d_same_day_lq", "t6"."d_current_day", "t6"."d_current_week", "t6"."d_current_month", "t6"."d_current_quarter", "t6"."d_current_year", "t2"."ca_address_sk", "t2"."ca_address_id", "t2"."ca_street_number", "t2"."ca_street_name", "t2"."ca_street_type", "t2"."ca_suite_number", "t2"."ca_city", "t2"."ca_county", "t2"."ca_state", "t2"."ca_zip", "t2"."ca_country", "t2"."ca_gmt_offset", "t2"."ca_location_type", "t4"."i_item_sk", "t4"."i_item_id", "t4"."i_rec_start_date", "t4"."i_rec_end_date", "t4"."i_item_desc", "t4"."i_current_price", "t4"."i_wholesale_cost", "t4"."i_brand_id", "t4"."i_brand", "t4"."i_class_id", "t4"."i_class", "t4"."i_category_id", "t4"."i_category", "t4"."i_manufact_id", "t4"."i_manufact", "t4"."i_size", "t4"."i_formulation", "t4"."i_color", "t4"."i_units", "t4"."i_container", "t4"."i_manager_id", "t4"."i_product_name" -FROM (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" -WHERE "ss_sold_date_sk" IS NOT NULL AND ("ss_addr_sk" IS NOT NULL AND "ss_item_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_gmt_offset" = -8 AND "ca_address_sk" IS NOT NULL) AS "t2" ON "t0"."ss_addr_sk" = "t2"."ca_address_sk" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_item_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t4" ON "t0"."ss_item_sk" = "t4"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_year" = 2000 AND ("d_moy" = 1 AND "d_date_sk" IS NOT NULL)) AS "t6" ON "t0"."ss_sold_date_sk" = "t6"."d_date_sk" - hive.sql.query.fieldNames 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,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50) + hive.sql.query SELECT "t1"."ss_sold_date_sk", "t1"."ss_item_sk", "t1"."ss_addr_sk", "t1"."ss_ext_sales_price", "t10"."d_date_sk", "t10"."d_year", "t10"."d_moy", "t4"."ca_address_sk", "t4"."ca_gmt_offset", "t7"."i_item_sk", "t7"."i_item_id" +FROM (SELECT "ss_sold_date_sk", "ss_item_sk", "ss_addr_sk", "ss_ext_sales_price" +FROM (SELECT "ss_sold_date_sk", "ss_item_sk", "ss_addr_sk", "ss_ext_sales_price" +FROM "STORE_SALES") AS "t" +WHERE "ss_sold_date_sk" IS NOT NULL AND "ss_addr_sk" IS NOT NULL AND "ss_item_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_gmt_offset" +FROM (SELECT "ca_address_sk", "ca_gmt_offset" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_gmt_offset" = -8 AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."ss_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "i_item_sk", "i_item_id" +FROM (SELECT "i_item_sk", "i_item_id" +FROM "ITEM") AS "t5" +WHERE "i_item_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t7" ON "t1"."ss_item_sk" = "t7"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_year", "d_moy" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t8" +WHERE "d_year" = 2000 AND "d_moy" = 1 AND "d_date_sk" IS NOT NULL) AS "t10" ON "t1"."ss_sold_date_sk" = "t10"."d_date_sk" + hive.sql.query.fieldNames ss_sold_date_sk,ss_item_sk,ss_addr_sk,ss_ext_sales_price,d_date_sk,d_year,d_moy,ca_address_sk,ca_gmt_offset,i_item_sk,i_item_id + hive.sql.query.fieldTypes int,int,int,decimal(7,2),int,int,int,int,decimal(5,2),int,char(16) hive.sql.query.split false Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ss_ext_sales_price (type: decimal(7,2)), i_item_id (type: char(16)) - outputColumnNames: _col15, _col65 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col65 (type: char(16)) + key expressions: _col10 (type: char(16)) null sort order: z sort order: + - Map-reduce partition columns: _col65 (type: char(16)) + Map-reduce partition columns: _col10 (type: char(16)) Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE - value expressions: _col15 (type: decimal(7,2)) + value expressions: _col3 (type: decimal(7,2)) Execution mode: vectorized, llap LLAP IO: no inputs Map 12 @@ -3103,34 +3131,38 @@ WHERE "d_year" = 2000 AND ("d_moy" = 1 AND "d_date_sk" IS NOT NULL)) AS "t6" ON TableScan alias: catalog_sales properties: - hive.sql.query SELECT "t0"."cs_sold_date_sk", "t0"."cs_sold_time_sk", "t0"."cs_ship_date_sk", "t0"."cs_bill_customer_sk", "t0"."cs_bill_cdemo_sk", "t0"."cs_bill_hdemo_sk", "t0"."cs_bill_addr_sk", "t0"."cs_ship_customer_sk", "t0"."cs_ship_cdemo_sk", "t0"."cs_ship_hdemo_sk", "t0"."cs_ship_addr_sk", "t0"."cs_call_center_sk", "t0"."cs_catalog_page_sk", "t0"."cs_ship_mode_sk", "t0"."cs_warehouse_sk", "t0"."cs_item_sk", "t0"."cs_promo_sk", "t0"."cs_order_number", "t0"."cs_quantity", "t0"."cs_wholesale_cost", "t0"."cs_list_price", "t0"."cs_sales_price", "t0"."cs_ext_discount_amt", "t0"."cs_ext_sales_price", "t0"."cs_ext_wholesale_cost", "t0"."cs_ext_list_price", "t0"."cs_ext_tax", "t0"."cs_coupon_amt", "t0"."cs_ext_ship_cost", "t0"."cs_net_paid", "t0"."cs_net_paid_inc_tax", "t0"."cs_net_paid_inc_ship", "t0"."cs_net_paid_inc_ship_tax", "t0"."cs_net_profit", "t6"."d_date_sk", "t6"."d_date_id", "t6"."d_date", "t6"."d_month_seq", "t6"."d_week_seq", "t6"."d_quarter_seq", "t6"."d_year", "t6"."d_dow", "t6"."d_moy", "t6"."d_dom", "t6"."d_qoy", "t6"."d_fy_year", "t6"."d_fy_quarter_seq", "t6"."d_fy_week_seq", "t6"."d_day_name", "t6"."d_quarter_name", "t6"."d_holiday", "t6"."d_weekend", "t6"."d_following_holiday", "t6"."d_first_dom", "t6"."d_last_dom", "t6"."d_same_day_ly", "t6"."d_same_day_lq", "t6"."d_current_day", "t6"."d_current_week", "t6"."d_current_month", "t6"."d_current_quarter", "t6"."d_current_year", "t2"."ca_address_sk", "t2"."ca_address_id", "t2"."ca_street_number", "t2"."ca_street_name", "t2"."ca_street_type", "t2"."ca_suite_number", "t2"."ca_city", "t2"."ca_county", "t2"."ca_state", "t2"."ca_zip", "t2"."ca_country", "t2"."ca_gmt_offset", "t2"."ca_location_type", "t4"."i_item_sk", "t4"."i_item_id", "t4"."i_rec_start_date", "t4"."i_rec_end_date", "t4"."i_item_desc", "t4"."i_current_price", "t4"."i_wholesale_cost", "t4"."i_brand_id", "t4"."i_brand", "t4"."i_class_id", "t4"."i_class", "t4"."i_category_id", "t4"."i_category", "t4"."i_manufact_id", "t4"."i_manufact", "t4"."i_size", "t4"."i_formulation", "t4"."i_color", "t4"."i_units", "t4"."i_container", "t4"."i_manager_id", "t4"."i_product_name" -FROM (SELECT "cs_sold_date_sk", "cs_sold_time_sk", "cs_ship_date_sk", "cs_bill_customer_sk", "cs_bill_cdemo_sk", "cs_bill_hdemo_sk", "cs_bill_addr_sk", "cs_ship_customer_sk", "cs_ship_cdemo_sk", "cs_ship_hdemo_sk", "cs_ship_addr_sk", "cs_call_center_sk", "cs_catalog_page_sk", "cs_ship_mode_sk", "cs_warehouse_sk", "cs_item_sk", "cs_promo_sk", "cs_order_number", "cs_quantity", "cs_wholesale_cost", "cs_list_price", "cs_sales_price", "cs_ext_discount_amt", "cs_ext_sales_price", "cs_ext_wholesale_cost", "cs_ext_list_price", "cs_ext_tax", "cs_coupon_amt", "cs_ext_ship_cost", "cs_net_paid", "cs_net_paid_inc_tax", "cs_net_paid_inc_ship", "cs_net_paid_inc_ship_tax", "cs_net_profit" -FROM "CATALOG_SALES" -WHERE "cs_sold_date_sk" IS NOT NULL AND ("cs_bill_addr_sk" IS NOT NULL AND "cs_item_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_gmt_offset" = -8 AND "ca_address_sk" IS NOT NULL) AS "t2" ON "t0"."cs_bill_addr_sk" = "t2"."ca_address_sk" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_item_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t4" ON "t0"."cs_item_sk" = "t4"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_year" = 2000 AND ("d_moy" = 1 AND "d_date_sk" IS NOT NULL)) AS "t6" ON "t0"."cs_sold_date_sk" = "t6"."d_date_sk" - hive.sql.query.fieldNames cs_sold_date_sk,cs_sold_time_sk,cs_ship_date_sk,cs_bill_customer_sk,cs_bill_cdemo_sk,cs_bill_hdemo_sk,cs_bill_addr_sk,cs_ship_customer_sk,cs_ship_cdemo_sk,cs_ship_hdemo_sk,cs_ship_addr_sk,cs_call_center_sk,cs_catalog_page_sk,cs_ship_mode_sk,cs_warehouse_sk,cs_item_sk,cs_promo_sk,cs_order_number,cs_quantity,cs_wholesale_cost,cs_list_price,cs_sales_price,cs_ext_discount_amt,cs_ext_sales_price,cs_ext_wholesale_cost,cs_ext_list_price,cs_ext_tax,cs_coupon_amt,cs_ext_ship_cost,cs_net_paid,cs_net_paid_inc_tax,cs_net_paid_inc_ship,cs_net_paid_inc_ship_tax,cs_net_profit,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50) + hive.sql.query SELECT "t1"."cs_sold_date_sk", "t1"."cs_bill_addr_sk", "t1"."cs_item_sk", "t1"."cs_ext_sales_price", "t10"."d_date_sk", "t10"."d_year", "t10"."d_moy", "t4"."ca_address_sk", "t4"."ca_gmt_offset", "t7"."i_item_sk", "t7"."i_item_id" +FROM (SELECT "cs_sold_date_sk", "cs_bill_addr_sk", "cs_item_sk", "cs_ext_sales_price" +FROM (SELECT "cs_sold_date_sk", "cs_bill_addr_sk", "cs_item_sk", "cs_ext_sales_price" +FROM "CATALOG_SALES") AS "t" +WHERE "cs_sold_date_sk" IS NOT NULL AND "cs_bill_addr_sk" IS NOT NULL AND "cs_item_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_gmt_offset" +FROM (SELECT "ca_address_sk", "ca_gmt_offset" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_gmt_offset" = -8 AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."cs_bill_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "i_item_sk", "i_item_id" +FROM (SELECT "i_item_sk", "i_item_id" +FROM "ITEM") AS "t5" +WHERE "i_item_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t7" ON "t1"."cs_item_sk" = "t7"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_year", "d_moy" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t8" +WHERE "d_year" = 2000 AND "d_moy" = 1 AND "d_date_sk" IS NOT NULL) AS "t10" ON "t1"."cs_sold_date_sk" = "t10"."d_date_sk" + hive.sql.query.fieldNames cs_sold_date_sk,cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,d_date_sk,d_year,d_moy,ca_address_sk,ca_gmt_offset,i_item_sk,i_item_id + hive.sql.query.fieldTypes int,int,int,decimal(7,2),int,int,int,int,decimal(5,2),int,char(16) hive.sql.query.split false Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: cs_ext_sales_price (type: decimal(7,2)), i_item_id (type: char(16)) - outputColumnNames: _col23, _col76 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col76 (type: char(16)) + key expressions: _col10 (type: char(16)) null sort order: z sort order: + - Map-reduce partition columns: _col76 (type: char(16)) + Map-reduce partition columns: _col10 (type: char(16)) Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE - value expressions: _col23 (type: decimal(7,2)) + value expressions: _col3 (type: decimal(7,2)) Execution mode: vectorized, llap LLAP IO: no inputs Map 13 @@ -3138,34 +3170,38 @@ WHERE "d_year" = 2000 AND ("d_moy" = 1 AND "d_date_sk" IS NOT NULL)) AS "t6" ON TableScan alias: web_sales properties: - hive.sql.query SELECT "t0"."ws_sold_date_sk", "t0"."ws_sold_time_sk", "t0"."ws_ship_date_sk", "t0"."ws_item_sk", "t0"."ws_bill_customer_sk", "t0"."ws_bill_cdemo_sk", "t0"."ws_bill_hdemo_sk", "t0"."ws_bill_addr_sk", "t0"."ws_ship_customer_sk", "t0"."ws_ship_cdemo_sk", "t0"."ws_ship_hdemo_sk", "t0"."ws_ship_addr_sk", "t0"."ws_web_page_sk", "t0"."ws_web_site_sk", "t0"."ws_ship_mode_sk", "t0"."ws_warehouse_sk", "t0"."ws_promo_sk", "t0"."ws_order_number", "t0"."ws_quantity", "t0"."ws_wholesale_cost", "t0"."ws_list_price", "t0"."ws_sales_price", "t0"."ws_ext_discount_amt", "t0"."ws_ext_sales_price", "t0"."ws_ext_wholesale_cost", "t0"."ws_ext_list_price", "t0"."ws_ext_tax", "t0"."ws_coupon_amt", "t0"."ws_ext_ship_cost", "t0"."ws_net_paid", "t0"."ws_net_paid_inc_tax", "t0"."ws_net_paid_inc_ship", "t0"."ws_net_paid_inc_ship_tax", "t0"."ws_net_profit", "t6"."d_date_sk", "t6"."d_date_id", "t6"."d_date", "t6"."d_month_seq", "t6"."d_week_seq", "t6"."d_quarter_seq", "t6"."d_year", "t6"."d_dow", "t6"."d_moy", "t6"."d_dom", "t6"."d_qoy", "t6"."d_fy_year", "t6"."d_fy_quarter_seq", "t6"."d_fy_week_seq", "t6"."d_day_name", "t6"."d_quarter_name", "t6"."d_holiday", "t6"."d_weekend", "t6"."d_following_holiday", "t6"."d_first_dom", "t6"."d_last_dom", "t6"."d_same_day_ly", "t6"."d_same_day_lq", "t6"."d_current_day", "t6"."d_current_week", "t6"."d_current_month", "t6"."d_current_quarter", "t6"."d_current_year", "t2"."ca_address_sk", "t2"."ca_address_id", "t2"."ca_street_number", "t2"."ca_street_name", "t2"."ca_street_type", "t2"."ca_suite_number", "t2"."ca_city", "t2"."ca_county", "t2"."ca_state", "t2"."ca_zip", "t2"."ca_country", "t2"."ca_gmt_offset", "t2"."ca_location_type", "t4"."i_item_sk", "t4"."i_item_id", "t4"."i_rec_start_date", "t4"."i_rec_end_date", "t4"."i_item_desc", "t4"."i_current_price", "t4"."i_wholesale_cost", "t4"."i_brand_id", "t4"."i_brand", "t4"."i_class_id", "t4"."i_class", "t4"."i_category_id", "t4"."i_category", "t4"."i_manufact_id", "t4"."i_manufact", "t4"."i_size", "t4"."i_formulation", "t4"."i_color", "t4"."i_units", "t4"."i_container", "t4"."i_manager_id", "t4"."i_product_name" -FROM (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_web_site_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" -FROM "WEB_SALES" -WHERE "ws_sold_date_sk" IS NOT NULL AND ("ws_bill_addr_sk" IS NOT NULL AND "ws_item_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_gmt_offset" = -8 AND "ca_address_sk" IS NOT NULL) AS "t2" ON "t0"."ws_bill_addr_sk" = "t2"."ca_address_sk" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_item_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t4" ON "t0"."ws_item_sk" = "t4"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_year" = 2000 AND ("d_moy" = 1 AND "d_date_sk" IS NOT NULL)) AS "t6" ON "t0"."ws_sold_date_sk" = "t6"."d_date_sk" - hive.sql.query.fieldNames 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_web_site_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,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50) + hive.sql.query SELECT "t1"."ws_sold_date_sk", "t1"."ws_item_sk", "t1"."ws_bill_addr_sk", "t1"."ws_ext_sales_price", "t10"."d_date_sk", "t10"."d_year", "t10"."d_moy", "t4"."ca_address_sk", "t4"."ca_gmt_offset", "t7"."i_item_sk", "t7"."i_item_id" +FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_bill_addr_sk", "ws_ext_sales_price" +FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_bill_addr_sk", "ws_ext_sales_price" +FROM "WEB_SALES") AS "t" +WHERE "ws_sold_date_sk" IS NOT NULL AND "ws_bill_addr_sk" IS NOT NULL AND "ws_item_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_gmt_offset" +FROM (SELECT "ca_address_sk", "ca_gmt_offset" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_gmt_offset" = -8 AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."ws_bill_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "i_item_sk", "i_item_id" +FROM (SELECT "i_item_sk", "i_item_id" +FROM "ITEM") AS "t5" +WHERE "i_item_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t7" ON "t1"."ws_item_sk" = "t7"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_year", "d_moy" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t8" +WHERE "d_year" = 2000 AND "d_moy" = 1 AND "d_date_sk" IS NOT NULL) AS "t10" ON "t1"."ws_sold_date_sk" = "t10"."d_date_sk" + hive.sql.query.fieldNames ws_sold_date_sk,ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,d_date_sk,d_year,d_moy,ca_address_sk,ca_gmt_offset,i_item_sk,i_item_id + hive.sql.query.fieldTypes int,int,int,decimal(7,2),int,int,int,int,decimal(5,2),int,char(16) hive.sql.query.split false Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ws_ext_sales_price (type: decimal(7,2)), i_item_id (type: char(16)) - outputColumnNames: _col23, _col76 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col76 (type: char(16)) + key expressions: _col10 (type: char(16)) null sort order: z sort order: + - Map-reduce partition columns: _col76 (type: char(16)) + Map-reduce partition columns: _col10 (type: char(16)) Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE - value expressions: _col23 (type: decimal(7,2)) + value expressions: _col3 (type: decimal(7,2)) Execution mode: vectorized, llap LLAP IO: no inputs Map 7 @@ -3174,8 +3210,9 @@ WHERE "d_year" = 2000 AND ("d_moy" = 1 AND "d_date_sk" IS NOT NULL)) AS "t6" ON alias: item properties: hive.sql.query SELECT "i_item_id" -FROM "ITEM" -WHERE "i_color" IN ('orchid ', 'chiffon ', 'lace ') AND "i_item_id" IS NOT NULL +FROM (SELECT "i_item_id", "i_color" +FROM "ITEM") AS "t" +WHERE "i_color" IN ('chiffon', 'lace', 'orchid') AND "i_item_id" IS NOT NULL hive.sql.query.fieldNames i_item_id hive.sql.query.fieldTypes char(16) hive.sql.query.split true @@ -3217,13 +3254,13 @@ WHERE "i_color" IN ('orchid ', 'chiffon ', 'lace condition map: Left Semi Join 0 to 1 keys: - 0 _col76 (type: char(16)) + 0 _col10 (type: char(16)) 1 _col0 (type: char(16)) - outputColumnNames: _col23, _col76 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 233 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col23) - keys: _col76 (type: char(16)) + aggregations: sum(_col3) + keys: _col10 (type: char(16)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -3265,13 +3302,13 @@ WHERE "i_color" IN ('orchid ', 'chiffon ', 'lace condition map: Left Semi Join 0 to 1 keys: - 0 _col65 (type: char(16)) + 0 _col10 (type: char(16)) 1 _col0 (type: char(16)) - outputColumnNames: _col15, _col65 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 233 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col15) - keys: _col65 (type: char(16)) + aggregations: sum(_col3) + keys: _col10 (type: char(16)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -3351,13 +3388,13 @@ WHERE "i_color" IN ('orchid ', 'chiffon ', 'lace condition map: Left Semi Join 0 to 1 keys: - 0 _col76 (type: char(16)) + 0 _col10 (type: char(16)) 1 _col0 (type: char(16)) - outputColumnNames: _col23, _col76 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 233 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col23) - keys: _col76 (type: char(16)) + aggregations: sum(_col3) + keys: _col10 (type: char(16)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -3763,33 +3800,36 @@ STAGE PLANS: Map 1 Map Operator Tree: TableScan - alias: item + alias: store_returns properties: - hive.sql.query SELECT "t2"."sr_returned_date_sk", "t2"."sr_return_time_sk", "t2"."sr_item_sk", "t2"."sr_customer_sk", "t2"."sr_cdemo_sk", "t2"."sr_hdemo_sk", "t2"."sr_addr_sk", "t2"."sr_store_sk", "t2"."sr_reason_sk", "t2"."sr_ticket_number", "t2"."sr_return_quantity", "t2"."sr_return_amt", "t2"."sr_return_tax", "t2"."sr_return_amt_inc_tax", "t2"."sr_fee", "t2"."sr_return_ship_cost", "t2"."sr_refunded_cash", "t2"."sr_reversed_charge", "t2"."sr_store_credit", "t2"."sr_net_loss", "t0"."i_item_sk", "t0"."i_item_id", "t0"."i_rec_start_date", "t0"."i_rec_end_date", "t0"."i_item_desc", "t0"."i_current_price", "t0"."i_wholesale_cost", "t0"."i_brand_id", "t0"."i_brand", "t0"."i_class_id", "t0"."i_class", "t0"."i_category_id", "t0"."i_category", "t0"."i_manufact_id", "t0"."i_manufact", "t0"."i_size", "t0"."i_formulation", "t0"."i_color", "t0"."i_units", "t0"."i_container", "t0"."i_manager_id", "t0"."i_product_name", "t4"."d_date_sk", "t4"."d_date_id", "t4"."d_date", "t4"."d_month_seq", "t4"."d_week_seq", "t4"."d_quarter_seq", "t4"."d_year", "t4"."d_dow", "t4"."d_moy", "t4"."d_dom", "t4"."d_qoy", "t4"."d_fy_year", "t4"."d_fy_quarter_seq", "t4"."d_fy_week_seq", "t4"."d_day_name", "t4"."d_quarter_name", "t4"."d_holiday", "t4"."d_weekend", "t4"."d_following_holiday", "t4"."d_first_dom", "t4"."d_last_dom", "t4"."d_same_day_ly", "t4"."d_same_day_lq", "t4"."d_current_day", "t4"."d_current_week", "t4"."d_current_month", "t4"."d_current_quarter", "t4"."d_current_year" -FROM (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_item_sk" IS NOT NULL AND "i_item_id" IS NOT NULL) AS "t0" -INNER JOIN (SELECT "sr_returned_date_sk", "sr_return_time_sk", "sr_item_sk", "sr_customer_sk", "sr_cdemo_sk", "sr_hdemo_sk", "sr_addr_sk", "sr_store_sk", "sr_reason_sk", "sr_ticket_number", "sr_return_quantity", "sr_return_amt", "sr_return_tax", "sr_return_amt_inc_tax", "sr_fee", "sr_return_ship_cost", "sr_refunded_cash", "sr_reversed_charge", "sr_store_credit", "sr_net_loss" -FROM "STORE_RETURNS" -WHERE "sr_item_sk" IS NOT NULL AND "sr_returned_date_sk" IS NOT NULL) AS "t2" ON "t0"."i_item_sk" = "t2"."sr_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t4" ON "t2"."sr_returned_date_sk" = "t4"."d_date_sk" - hive.sql.query.fieldNames sr_returned_date_sk,sr_return_time_sk,sr_item_sk,sr_customer_sk,sr_cdemo_sk,sr_hdemo_sk,sr_addr_sk,sr_store_sk,sr_reason_sk,sr_ticket_number,sr_return_quantity,sr_return_amt,sr_return_tax,sr_return_amt_inc_tax,sr_fee,sr_return_ship_cost,sr_refunded_cash,sr_reversed_charge,sr_store_credit,sr_net_loss,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1) + hive.sql.query SELECT "t1"."sr_returned_date_sk", "t1"."sr_item_sk", "t1"."sr_return_quantity", "t4"."i_item_sk", "t4"."i_item_id", "t7"."d_date_sk", "t7"."d_date" +FROM (SELECT "sr_returned_date_sk", "sr_item_sk", "sr_return_quantity" +FROM (SELECT "sr_returned_date_sk", "sr_item_sk", "sr_return_quantity" +FROM "STORE_RETURNS") AS "t" +WHERE "sr_item_sk" IS NOT NULL AND "sr_returned_date_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "i_item_sk", "i_item_id" +FROM (SELECT "i_item_sk", "i_item_id" +FROM "ITEM") AS "t2" +WHERE "i_item_sk" IS NOT NULL AND "i_item_id" IS NOT NULL) AS "t4" ON "t1"."sr_item_sk" = "t4"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_date" +FROM (SELECT "d_date_sk", "d_date" +FROM "DATE_DIM") AS "t5" +WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t7" ON "t1"."sr_returned_date_sk" = "t7"."d_date_sk" + hive.sql.query.fieldNames sr_returned_date_sk,sr_item_sk,sr_return_quantity,i_item_sk,i_item_id,d_date_sk,d_date + hive.sql.query.fieldTypes int,int,int,int,char(16),int,date hive.sql.query.split false Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: sr_return_quantity (type: int), i_item_id (type: char(16)), d_date (type: date) - outputColumnNames: _col10, _col21, _col44 + outputColumnNames: _col2, _col4, _col6 Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col44 (type: date) + key expressions: _col6 (type: date) null sort order: z sort order: + - Map-reduce partition columns: _col44 (type: date) + Map-reduce partition columns: _col6 (type: date) Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE - value expressions: _col10 (type: int), _col21 (type: char(16)) + value expressions: _col2 (type: int), _col4 (type: char(16)) Execution mode: vectorized, llap LLAP IO: no inputs Map 13 @@ -3798,7 +3838,8 @@ WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t4" ON "t2"."sr_retu alias: date_dim properties: hive.sql.query SELECT "d_week_seq" -FROM "DATE_DIM" +FROM (SELECT "d_date", "d_week_seq" +FROM "DATE_DIM") AS "t" WHERE "d_date" IN (DATE '1998-01-02', DATE '1998-10-15', DATE '1998-11-10') AND "d_week_seq" IS NOT NULL hive.sql.query.fieldNames d_week_seq hive.sql.query.fieldTypes int @@ -3827,31 +3868,34 @@ WHERE "d_date" IN (DATE '1998-01-02', DATE '1998-10-15', DATE '1998-11-10') AND TableScan alias: catalog_returns properties: - hive.sql.query SELECT "t0"."cr_returned_date_sk", "t0"."cr_returned_time_sk", "t0"."cr_item_sk", "t0"."cr_refunded_customer_sk", "t0"."cr_refunded_cdemo_sk", "t0"."cr_refunded_hdemo_sk", "t0"."cr_refunded_addr_sk", "t0"."cr_returning_customer_sk", "t0"."cr_returning_cdemo_sk", "t0"."cr_returning_hdemo_sk", "t0"."cr_returning_addr_sk", "t0"."cr_call_center_sk", "t0"."cr_catalog_page_sk", "t0"."cr_ship_mode_sk", "t0"."cr_warehouse_sk", "t0"."cr_reason_sk", "t0"."cr_order_number", "t0"."cr_return_quantity", "t0"."cr_return_amount", "t0"."cr_return_tax", "t0"."cr_return_amt_inc_tax", "t0"."cr_fee", "t0"."cr_return_ship_cost", "t0"."cr_refunded_cash", "t0"."cr_reversed_charge", "t0"."cr_store_credit", "t0"."cr_net_loss", "t2"."i_item_sk", "t2"."i_item_id", "t2"."i_rec_start_date", "t2"."i_rec_end_date", "t2"."i_item_desc", "t2"."i_current_price", "t2"."i_wholesale_cost", "t2"."i_brand_id", "t2"."i_brand", "t2"."i_class_id", "t2"."i_class", "t2"."i_category_id", "t2"."i_category", "t2"."i_manufact_id", "t2"."i_manufact", "t2"."i_size", "t2"."i_formulation", "t2"."i_color", "t2"."i_units", "t2"."i_container", "t2"."i_manager_id", "t2"."i_product_name", "t4"."d_date_sk", "t4"."d_date_id", "t4"."d_date", "t4"."d_month_seq", "t4"."d_week_seq", "t4"."d_quarter_seq", "t4"."d_year", "t4"."d_dow", "t4"."d_moy", "t4"."d_dom", "t4"."d_qoy", "t4"."d_fy_year", "t4"."d_fy_quarter_seq", "t4"."d_fy_week_seq", "t4"."d_day_name", "t4"."d_quarter_name", "t4"."d_holiday", "t4"."d_weekend", "t4"."d_following_holiday", "t4"."d_first_dom", "t4"."d_last_dom", "t4"."d_same_day_ly", "t4"."d_same_day_lq", "t4"."d_current_day", "t4"."d_current_week", "t4"."d_current_month", "t4"."d_current_quarter", "t4"."d_current_year" -FROM (SELECT "cr_returned_date_sk", "cr_returned_time_sk", "cr_item_sk", "cr_refunded_customer_sk", "cr_refunded_cdemo_sk", "cr_refunded_hdemo_sk", "cr_refunded_addr_sk", "cr_returning_customer_sk", "cr_returning_cdemo_sk", "cr_returning_hdemo_sk", "cr_returning_addr_sk", "cr_call_center_sk", "cr_catalog_page_sk", "cr_ship_mode_sk", "cr_warehouse_sk", "cr_reason_sk", "cr_order_number", "cr_return_quantity", "cr_return_amount", "cr_return_tax", "cr_return_amt_inc_tax", "cr_fee", "cr_return_ship_cost", "cr_refunded_cash", "cr_reversed_charge", "cr_store_credit", "cr_net_loss" -FROM "CATALOG_RETURNS" -WHERE "cr_item_sk" IS NOT NULL AND "cr_returned_date_sk" IS NOT NULL) AS "t0" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_item_sk" IS NOT NULL AND "i_item_id" IS NOT NULL) AS "t2" ON "t0"."cr_item_sk" = "t2"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t4" ON "t0"."cr_returned_date_sk" = "t4"."d_date_sk" - hive.sql.query.fieldNames cr_returned_date_sk,cr_returned_time_sk,cr_item_sk,cr_refunded_customer_sk,cr_refunded_cdemo_sk,cr_refunded_hdemo_sk,cr_refunded_addr_sk,cr_returning_customer_sk,cr_returning_cdemo_sk,cr_returning_hdemo_sk,cr_returning_addr_sk,cr_call_center_sk,cr_catalog_page_sk,cr_ship_mode_sk,cr_warehouse_sk,cr_reason_sk,cr_order_number,cr_return_quantity,cr_return_amount,cr_return_tax,cr_return_amt_inc_tax,cr_fee,cr_return_ship_cost,cr_refunded_cash,cr_reversed_charge,cr_store_credit,cr_net_loss,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1) + hive.sql.query SELECT "t1"."cr_returned_date_sk", "t1"."cr_item_sk", "t1"."cr_return_quantity", "t4"."i_item_sk", "t4"."i_item_id", "t7"."d_date_sk", "t7"."d_date" +FROM (SELECT "cr_returned_date_sk", "cr_item_sk", "cr_return_quantity" +FROM (SELECT "cr_returned_date_sk", "cr_item_sk", "cr_return_quantity" +FROM "CATALOG_RETURNS") AS "t" +WHERE "cr_item_sk" IS NOT NULL AND "cr_returned_date_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "i_item_sk", "i_item_id" +FROM (SELECT "i_item_sk", "i_item_id" +FROM "ITEM") AS "t2" +WHERE "i_item_sk" IS NOT NULL AND "i_item_id" IS NOT NULL) AS "t4" ON "t1"."cr_item_sk" = "t4"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_date" +FROM (SELECT "d_date_sk", "d_date" +FROM "DATE_DIM") AS "t5" +WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t7" ON "t1"."cr_returned_date_sk" = "t7"."d_date_sk" + hive.sql.query.fieldNames cr_returned_date_sk,cr_item_sk,cr_return_quantity,i_item_sk,i_item_id,d_date_sk,d_date + hive.sql.query.fieldTypes int,int,int,int,char(16),int,date hive.sql.query.split false Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: cr_return_quantity (type: int), i_item_id (type: char(16)), d_date (type: date) - outputColumnNames: _col17, _col28, _col51 + outputColumnNames: _col2, _col4, _col6 Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col51 (type: date) + key expressions: _col6 (type: date) null sort order: z sort order: + - Map-reduce partition columns: _col51 (type: date) + Map-reduce partition columns: _col6 (type: date) Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE - value expressions: _col17 (type: int), _col28 (type: char(16)) + value expressions: _col2 (type: int), _col4 (type: char(16)) Execution mode: vectorized, llap LLAP IO: no inputs Map 15 @@ -3859,31 +3903,34 @@ WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t4" ON "t0"."cr_retu TableScan alias: web_returns properties: - hive.sql.query SELECT "t0"."wr_returned_date_sk", "t0"."wr_returned_time_sk", "t0"."wr_item_sk", "t0"."wr_refunded_customer_sk", "t0"."wr_refunded_cdemo_sk", "t0"."wr_refunded_hdemo_sk", "t0"."wr_refunded_addr_sk", "t0"."wr_returning_customer_sk", "t0"."wr_returning_cdemo_sk", "t0"."wr_returning_hdemo_sk", "t0"."wr_returning_addr_sk", "t0"."wr_web_page_sk", "t0"."wr_reason_sk", "t0"."wr_order_number", "t0"."wr_return_quantity", "t0"."wr_return_amt", "t0"."wr_return_tax", "t0"."wr_return_amt_inc_tax", "t0"."wr_fee", "t0"."wr_return_ship_cost", "t0"."wr_refunded_cash", "t0"."wr_reversed_charge", "t0"."wr_account_credit", "t0"."wr_net_loss", "t2"."i_item_sk", "t2"."i_item_id", "t2"."i_rec_start_date", "t2"."i_rec_end_date", "t2"."i_item_desc", "t2"."i_current_price", "t2"."i_wholesale_cost", "t2"."i_brand_id", "t2"."i_brand", "t2"."i_class_id", "t2"."i_class", "t2"."i_category_id", "t2"."i_category", "t2"."i_manufact_id", "t2"."i_manufact", "t2"."i_size", "t2"."i_formulation", "t2"."i_color", "t2"."i_units", "t2"."i_container", "t2"."i_manager_id", "t2"."i_product_name", "t4"."d_date_sk", "t4"."d_date_id", "t4"."d_date", "t4"."d_month_seq", "t4"."d_week_seq", "t4"."d_quarter_seq", "t4"."d_year", "t4"."d_dow", "t4"."d_moy", "t4"."d_dom", "t4"."d_qoy", "t4"."d_fy_year", "t4"."d_fy_quarter_seq", "t4"."d_fy_week_seq", "t4"."d_day_name", "t4"."d_quarter_name", "t4"."d_holiday", "t4"."d_weekend", "t4"."d_following_holiday", "t4"."d_first_dom", "t4"."d_last_dom", "t4"."d_same_day_ly", "t4"."d_same_day_lq", "t4"."d_current_day", "t4"."d_current_week", "t4"."d_current_month", "t4"."d_current_quarter", "t4"."d_current_year" -FROM (SELECT "wr_returned_date_sk", "wr_returned_time_sk", "wr_item_sk", "wr_refunded_customer_sk", "wr_refunded_cdemo_sk", "wr_refunded_hdemo_sk", "wr_refunded_addr_sk", "wr_returning_customer_sk", "wr_returning_cdemo_sk", "wr_returning_hdemo_sk", "wr_returning_addr_sk", "wr_web_page_sk", "wr_reason_sk", "wr_order_number", "wr_return_quantity", "wr_return_amt", "wr_return_tax", "wr_return_amt_inc_tax", "wr_fee", "wr_return_ship_cost", "wr_refunded_cash", "wr_reversed_charge", "wr_account_credit", "wr_net_loss" -FROM "WEB_RETURNS" -WHERE "wr_item_sk" IS NOT NULL AND "wr_returned_date_sk" IS NOT NULL) AS "t0" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_item_sk" IS NOT NULL AND "i_item_id" IS NOT NULL) AS "t2" ON "t0"."wr_item_sk" = "t2"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t4" ON "t0"."wr_returned_date_sk" = "t4"."d_date_sk" - hive.sql.query.fieldNames wr_returned_date_sk,wr_returned_time_sk,wr_item_sk,wr_refunded_customer_sk,wr_refunded_cdemo_sk,wr_refunded_hdemo_sk,wr_refunded_addr_sk,wr_returning_customer_sk,wr_returning_cdemo_sk,wr_returning_hdemo_sk,wr_returning_addr_sk,wr_web_page_sk,wr_reason_sk,wr_order_number,wr_return_quantity,wr_return_amt,wr_return_tax,wr_return_amt_inc_tax,wr_fee,wr_return_ship_cost,wr_refunded_cash,wr_reversed_charge,wr_account_credit,wr_net_loss,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1) + hive.sql.query SELECT "t1"."wr_returned_date_sk", "t1"."wr_item_sk", "t1"."wr_return_quantity", "t4"."i_item_sk", "t4"."i_item_id", "t7"."d_date_sk", "t7"."d_date" +FROM (SELECT "wr_returned_date_sk", "wr_item_sk", "wr_return_quantity" +FROM (SELECT "wr_returned_date_sk", "wr_item_sk", "wr_return_quantity" +FROM "WEB_RETURNS") AS "t" +WHERE "wr_item_sk" IS NOT NULL AND "wr_returned_date_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "i_item_sk", "i_item_id" +FROM (SELECT "i_item_sk", "i_item_id" +FROM "ITEM") AS "t2" +WHERE "i_item_sk" IS NOT NULL AND "i_item_id" IS NOT NULL) AS "t4" ON "t1"."wr_item_sk" = "t4"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_date" +FROM (SELECT "d_date_sk", "d_date" +FROM "DATE_DIM") AS "t5" +WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t7" ON "t1"."wr_returned_date_sk" = "t7"."d_date_sk" + hive.sql.query.fieldNames wr_returned_date_sk,wr_item_sk,wr_return_quantity,i_item_sk,i_item_id,d_date_sk,d_date + hive.sql.query.fieldTypes int,int,int,int,char(16),int,date hive.sql.query.split false Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: wr_return_quantity (type: int), i_item_id (type: char(16)), d_date (type: date) - outputColumnNames: _col14, _col25, _col48 + outputColumnNames: _col2, _col4, _col6 Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col48 (type: date) + key expressions: _col6 (type: date) null sort order: z sort order: + - Map-reduce partition columns: _col48 (type: date) + Map-reduce partition columns: _col6 (type: date) Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE Column stats: NONE - value expressions: _col14 (type: int), _col25 (type: char(16)) + value expressions: _col2 (type: int), _col4 (type: char(16)) Execution mode: vectorized, llap LLAP IO: no inputs Map 7 @@ -3891,24 +3938,25 @@ WHERE "d_date" IS NOT NULL AND "d_date_sk" IS NOT NULL) AS "t4" ON "t0"."wr_retu TableScan alias: date_dim properties: - hive.sql.query SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" + hive.sql.query SELECT "d_date", "d_week_seq" +FROM (SELECT "d_date", "d_week_seq" +FROM "DATE_DIM") AS "t" WHERE "d_week_seq" IS NOT NULL AND "d_date" IS NOT NULL - hive.sql.query.fieldNames d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year - hive.sql.query.fieldTypes int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1) + hive.sql.query.fieldNames d_date,d_week_seq + hive.sql.query.fieldTypes date,int hive.sql.query.split true Statistics: Num rows: 1 Data size: 60 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: d_date (type: date), d_week_seq (type: int) - outputColumnNames: _col2, _col4 + outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 60 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: int) + key expressions: _col1 (type: int) null sort order: z sort order: + - Map-reduce partition columns: _col4 (type: int) + Map-reduce partition columns: _col1 (type: int) Statistics: Num rows: 1 Data size: 60 Basic stats: COMPLETE Column stats: NONE - value expressions: _col2 (type: date) + value expressions: _col0 (type: date) Execution mode: vectorized, llap LLAP IO: no inputs Reducer 10 @@ -3938,13 +3986,13 @@ WHERE "d_week_seq" IS NOT NULL AND "d_date" IS NOT NULL condition map: Left Semi Join 0 to 1 keys: - 0 _col48 (type: date) + 0 _col6 (type: date) 1 _col0 (type: date) - outputColumnNames: _col14, _col25 + outputColumnNames: _col2, _col4 Statistics: Num rows: 1 Data size: 176 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col14) - keys: _col25 (type: char(16)) + aggregations: sum(_col2) + keys: _col4 (type: char(16)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -3983,13 +4031,13 @@ WHERE "d_week_seq" IS NOT NULL AND "d_date" IS NOT NULL condition map: Left Semi Join 0 to 1 keys: - 0 _col44 (type: date) + 0 _col6 (type: date) 1 _col0 (type: date) - outputColumnNames: _col10, _col21 + outputColumnNames: _col2, _col4 Statistics: Num rows: 1 Data size: 176 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col10) - keys: _col21 (type: char(16)) + aggregations: sum(_col2) + keys: _col4 (type: char(16)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -4090,38 +4138,34 @@ WHERE "d_week_seq" IS NOT NULL AND "d_date" IS NOT NULL condition map: Left Semi Join 0 to 1 keys: - 0 _col4 (type: int) + 0 _col1 (type: int) 1 _col0 (type: int) - outputColumnNames: _col2 + outputColumnNames: _col0 Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col2 (type: date) + Group By Operator + keys: _col0 (type: date) + minReductionHashAggr: 0.99 + mode: hash outputColumnNames: _col0 Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE - Group By Operator - keys: _col0 (type: date) - minReductionHashAggr: 0.99 - mode: hash - outputColumnNames: _col0 + Reduce Output Operator + key expressions: _col0 (type: date) + null sort order: z + sort order: + + Map-reduce partition columns: _col0 (type: date) + Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + null sort order: z + sort order: + + Map-reduce partition columns: _col0 (type: date) + Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + null sort order: z + sort order: + + Map-reduce partition columns: _col0 (type: date) Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: date) - null sort order: z - sort order: + - Map-reduce partition columns: _col0 (type: date) - Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: date) - null sort order: z - sort order: + - Map-reduce partition columns: _col0 (type: date) - Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: date) - null sort order: z - sort order: + - Map-reduce partition columns: _col0 (type: date) - Statistics: Num rows: 1 Data size: 66 Basic stats: COMPLETE Column stats: NONE Reducer 9 Execution mode: llap Reduce Operator Tree: @@ -4129,13 +4173,13 @@ WHERE "d_week_seq" IS NOT NULL AND "d_date" IS NOT NULL condition map: Left Semi Join 0 to 1 keys: - 0 _col51 (type: date) + 0 _col6 (type: date) 1 _col0 (type: date) - outputColumnNames: _col17, _col28 + outputColumnNames: _col2, _col4 Statistics: Num rows: 1 Data size: 176 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col17) - keys: _col28 (type: char(16)) + aggregations: sum(_col2) + keys: _col4 (type: char(16)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -4340,34 +4384,38 @@ STAGE PLANS: TableScan alias: store_sales properties: - hive.sql.query SELECT "t0"."ss_sold_date_sk", "t0"."ss_sold_time_sk", "t0"."ss_item_sk", "t0"."ss_customer_sk", "t0"."ss_cdemo_sk", "t0"."ss_hdemo_sk", "t0"."ss_addr_sk", "t0"."ss_store_sk", "t0"."ss_promo_sk", "t0"."ss_ticket_number", "t0"."ss_quantity", "t0"."ss_wholesale_cost", "t0"."ss_list_price", "t0"."ss_sales_price", "t0"."ss_ext_discount_amt", "t0"."ss_ext_sales_price", "t0"."ss_ext_wholesale_cost", "t0"."ss_ext_list_price", "t0"."ss_ext_tax", "t0"."ss_coupon_amt", "t0"."ss_net_paid", "t0"."ss_net_paid_inc_tax", "t0"."ss_net_profit", "t6"."d_date_sk", "t6"."d_date_id", "t6"."d_date", "t6"."d_month_seq", "t6"."d_week_seq", "t6"."d_quarter_seq", "t6"."d_year", "t6"."d_dow", "t6"."d_moy", "t6"."d_dom", "t6"."d_qoy", "t6"."d_fy_year", "t6"."d_fy_quarter_seq", "t6"."d_fy_week_seq", "t6"."d_day_name", "t6"."d_quarter_name", "t6"."d_holiday", "t6"."d_weekend", "t6"."d_following_holiday", "t6"."d_first_dom", "t6"."d_last_dom", "t6"."d_same_day_ly", "t6"."d_same_day_lq", "t6"."d_current_day", "t6"."d_current_week", "t6"."d_current_month", "t6"."d_current_quarter", "t6"."d_current_year", "t2"."ca_address_sk", "t2"."ca_address_id", "t2"."ca_street_number", "t2"."ca_street_name", "t2"."ca_street_type", "t2"."ca_suite_number", "t2"."ca_city", "t2"."ca_county", "t2"."ca_state", "t2"."ca_zip", "t2"."ca_country", "t2"."ca_gmt_offset", "t2"."ca_location_type", "t4"."i_item_sk", "t4"."i_item_id", "t4"."i_rec_start_date", "t4"."i_rec_end_date", "t4"."i_item_desc", "t4"."i_current_price", "t4"."i_wholesale_cost", "t4"."i_brand_id", "t4"."i_brand", "t4"."i_class_id", "t4"."i_class", "t4"."i_category_id", "t4"."i_category", "t4"."i_manufact_id", "t4"."i_manufact", "t4"."i_size", "t4"."i_formulation", "t4"."i_color", "t4"."i_units", "t4"."i_container", "t4"."i_manager_id", "t4"."i_product_name" -FROM (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" -WHERE "ss_sold_date_sk" IS NOT NULL AND ("ss_addr_sk" IS NOT NULL AND "ss_item_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_gmt_offset" = -6 AND "ca_address_sk" IS NOT NULL) AS "t2" ON "t0"."ss_addr_sk" = "t2"."ca_address_sk" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_manufact_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t4" ON "t0"."ss_item_sk" = "t4"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" = 3 AND "d_date_sk" IS NOT NULL)) AS "t6" ON "t0"."ss_sold_date_sk" = "t6"."d_date_sk" - hive.sql.query.fieldNames 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,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50) + hive.sql.query SELECT "t1"."ss_sold_date_sk", "t1"."ss_item_sk", "t1"."ss_addr_sk", "t1"."ss_ext_sales_price", "t10"."d_date_sk", "t10"."d_year", "t10"."d_moy", "t4"."ca_address_sk", "t4"."ca_gmt_offset", "t7"."i_item_sk", "t7"."i_manufact_id" +FROM (SELECT "ss_sold_date_sk", "ss_item_sk", "ss_addr_sk", "ss_ext_sales_price" +FROM (SELECT "ss_sold_date_sk", "ss_item_sk", "ss_addr_sk", "ss_ext_sales_price" +FROM "STORE_SALES") AS "t" +WHERE "ss_sold_date_sk" IS NOT NULL AND "ss_addr_sk" IS NOT NULL AND "ss_item_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_gmt_offset" +FROM (SELECT "ca_address_sk", "ca_gmt_offset" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_gmt_offset" = -6 AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."ss_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "i_item_sk", "i_manufact_id" +FROM (SELECT "i_item_sk", "i_manufact_id" +FROM "ITEM") AS "t5" +WHERE "i_manufact_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t7" ON "t1"."ss_item_sk" = "t7"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_year", "d_moy" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t8" +WHERE "d_year" = 1999 AND "d_moy" = 3 AND "d_date_sk" IS NOT NULL) AS "t10" ON "t1"."ss_sold_date_sk" = "t10"."d_date_sk" + hive.sql.query.fieldNames ss_sold_date_sk,ss_item_sk,ss_addr_sk,ss_ext_sales_price,d_date_sk,d_year,d_moy,ca_address_sk,ca_gmt_offset,i_item_sk,i_manufact_id + hive.sql.query.fieldTypes int,int,int,decimal(7,2),int,int,int,int,decimal(5,2),int,int hive.sql.query.split false Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ss_ext_sales_price (type: decimal(7,2)), i_manufact_id (type: int) - outputColumnNames: _col15, _col77 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col77 (type: int) + key expressions: _col10 (type: int) null sort order: z sort order: + - Map-reduce partition columns: _col77 (type: int) + Map-reduce partition columns: _col10 (type: int) Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE - value expressions: _col15 (type: decimal(7,2)) + value expressions: _col3 (type: decimal(7,2)) Execution mode: vectorized, llap LLAP IO: no inputs Map 12 @@ -4375,34 +4423,38 @@ WHERE "d_year" = 1999 AND ("d_moy" = 3 AND "d_date_sk" IS NOT NULL)) AS "t6" ON TableScan alias: catalog_sales properties: - hive.sql.query SELECT "t0"."cs_sold_date_sk", "t0"."cs_sold_time_sk", "t0"."cs_ship_date_sk", "t0"."cs_bill_customer_sk", "t0"."cs_bill_cdemo_sk", "t0"."cs_bill_hdemo_sk", "t0"."cs_bill_addr_sk", "t0"."cs_ship_customer_sk", "t0"."cs_ship_cdemo_sk", "t0"."cs_ship_hdemo_sk", "t0"."cs_ship_addr_sk", "t0"."cs_call_center_sk", "t0"."cs_catalog_page_sk", "t0"."cs_ship_mode_sk", "t0"."cs_warehouse_sk", "t0"."cs_item_sk", "t0"."cs_promo_sk", "t0"."cs_order_number", "t0"."cs_quantity", "t0"."cs_wholesale_cost", "t0"."cs_list_price", "t0"."cs_sales_price", "t0"."cs_ext_discount_amt", "t0"."cs_ext_sales_price", "t0"."cs_ext_wholesale_cost", "t0"."cs_ext_list_price", "t0"."cs_ext_tax", "t0"."cs_coupon_amt", "t0"."cs_ext_ship_cost", "t0"."cs_net_paid", "t0"."cs_net_paid_inc_tax", "t0"."cs_net_paid_inc_ship", "t0"."cs_net_paid_inc_ship_tax", "t0"."cs_net_profit", "t6"."d_date_sk", "t6"."d_date_id", "t6"."d_date", "t6"."d_month_seq", "t6"."d_week_seq", "t6"."d_quarter_seq", "t6"."d_year", "t6"."d_dow", "t6"."d_moy", "t6"."d_dom", "t6"."d_qoy", "t6"."d_fy_year", "t6"."d_fy_quarter_seq", "t6"."d_fy_week_seq", "t6"."d_day_name", "t6"."d_quarter_name", "t6"."d_holiday", "t6"."d_weekend", "t6"."d_following_holiday", "t6"."d_first_dom", "t6"."d_last_dom", "t6"."d_same_day_ly", "t6"."d_same_day_lq", "t6"."d_current_day", "t6"."d_current_week", "t6"."d_current_month", "t6"."d_current_quarter", "t6"."d_current_year", "t2"."ca_address_sk", "t2"."ca_address_id", "t2"."ca_street_number", "t2"."ca_street_name", "t2"."ca_street_type", "t2"."ca_suite_number", "t2"."ca_city", "t2"."ca_county", "t2"."ca_state", "t2"."ca_zip", "t2"."ca_country", "t2"."ca_gmt_offset", "t2"."ca_location_type", "t4"."i_item_sk", "t4"."i_item_id", "t4"."i_rec_start_date", "t4"."i_rec_end_date", "t4"."i_item_desc", "t4"."i_current_price", "t4"."i_wholesale_cost", "t4"."i_brand_id", "t4"."i_brand", "t4"."i_class_id", "t4"."i_class", "t4"."i_category_id", "t4"."i_category", "t4"."i_manufact_id", "t4"."i_manufact", "t4"."i_size", "t4"."i_formulation", "t4"."i_color", "t4"."i_units", "t4"."i_container", "t4"."i_manager_id", "t4"."i_product_name" -FROM (SELECT "cs_sold_date_sk", "cs_sold_time_sk", "cs_ship_date_sk", "cs_bill_customer_sk", "cs_bill_cdemo_sk", "cs_bill_hdemo_sk", "cs_bill_addr_sk", "cs_ship_customer_sk", "cs_ship_cdemo_sk", "cs_ship_hdemo_sk", "cs_ship_addr_sk", "cs_call_center_sk", "cs_catalog_page_sk", "cs_ship_mode_sk", "cs_warehouse_sk", "cs_item_sk", "cs_promo_sk", "cs_order_number", "cs_quantity", "cs_wholesale_cost", "cs_list_price", "cs_sales_price", "cs_ext_discount_amt", "cs_ext_sales_price", "cs_ext_wholesale_cost", "cs_ext_list_price", "cs_ext_tax", "cs_coupon_amt", "cs_ext_ship_cost", "cs_net_paid", "cs_net_paid_inc_tax", "cs_net_paid_inc_ship", "cs_net_paid_inc_ship_tax", "cs_net_profit" -FROM "CATALOG_SALES" -WHERE "cs_sold_date_sk" IS NOT NULL AND ("cs_bill_addr_sk" IS NOT NULL AND "cs_item_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_gmt_offset" = -6 AND "ca_address_sk" IS NOT NULL) AS "t2" ON "t0"."cs_bill_addr_sk" = "t2"."ca_address_sk" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_manufact_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t4" ON "t0"."cs_item_sk" = "t4"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" = 3 AND "d_date_sk" IS NOT NULL)) AS "t6" ON "t0"."cs_sold_date_sk" = "t6"."d_date_sk" - hive.sql.query.fieldNames cs_sold_date_sk,cs_sold_time_sk,cs_ship_date_sk,cs_bill_customer_sk,cs_bill_cdemo_sk,cs_bill_hdemo_sk,cs_bill_addr_sk,cs_ship_customer_sk,cs_ship_cdemo_sk,cs_ship_hdemo_sk,cs_ship_addr_sk,cs_call_center_sk,cs_catalog_page_sk,cs_ship_mode_sk,cs_warehouse_sk,cs_item_sk,cs_promo_sk,cs_order_number,cs_quantity,cs_wholesale_cost,cs_list_price,cs_sales_price,cs_ext_discount_amt,cs_ext_sales_price,cs_ext_wholesale_cost,cs_ext_list_price,cs_ext_tax,cs_coupon_amt,cs_ext_ship_cost,cs_net_paid,cs_net_paid_inc_tax,cs_net_paid_inc_ship,cs_net_paid_inc_ship_tax,cs_net_profit,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50) + hive.sql.query SELECT "t1"."cs_sold_date_sk", "t1"."cs_bill_addr_sk", "t1"."cs_item_sk", "t1"."cs_ext_sales_price", "t10"."d_date_sk", "t10"."d_year", "t10"."d_moy", "t4"."ca_address_sk", "t4"."ca_gmt_offset", "t7"."i_item_sk", "t7"."i_manufact_id" +FROM (SELECT "cs_sold_date_sk", "cs_bill_addr_sk", "cs_item_sk", "cs_ext_sales_price" +FROM (SELECT "cs_sold_date_sk", "cs_bill_addr_sk", "cs_item_sk", "cs_ext_sales_price" +FROM "CATALOG_SALES") AS "t" +WHERE "cs_sold_date_sk" IS NOT NULL AND "cs_bill_addr_sk" IS NOT NULL AND "cs_item_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_gmt_offset" +FROM (SELECT "ca_address_sk", "ca_gmt_offset" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_gmt_offset" = -6 AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."cs_bill_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "i_item_sk", "i_manufact_id" +FROM (SELECT "i_item_sk", "i_manufact_id" +FROM "ITEM") AS "t5" +WHERE "i_manufact_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t7" ON "t1"."cs_item_sk" = "t7"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_year", "d_moy" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t8" +WHERE "d_year" = 1999 AND "d_moy" = 3 AND "d_date_sk" IS NOT NULL) AS "t10" ON "t1"."cs_sold_date_sk" = "t10"."d_date_sk" + hive.sql.query.fieldNames cs_sold_date_sk,cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,d_date_sk,d_year,d_moy,ca_address_sk,ca_gmt_offset,i_item_sk,i_manufact_id + hive.sql.query.fieldTypes int,int,int,decimal(7,2),int,int,int,int,decimal(5,2),int,int hive.sql.query.split false Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: cs_ext_sales_price (type: decimal(7,2)), i_manufact_id (type: int) - outputColumnNames: _col23, _col88 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col88 (type: int) + key expressions: _col10 (type: int) null sort order: z sort order: + - Map-reduce partition columns: _col88 (type: int) + Map-reduce partition columns: _col10 (type: int) Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE - value expressions: _col23 (type: decimal(7,2)) + value expressions: _col3 (type: decimal(7,2)) Execution mode: vectorized, llap LLAP IO: no inputs Map 13 @@ -4410,34 +4462,38 @@ WHERE "d_year" = 1999 AND ("d_moy" = 3 AND "d_date_sk" IS NOT NULL)) AS "t6" ON TableScan alias: web_sales properties: - hive.sql.query SELECT "t0"."ws_sold_date_sk", "t0"."ws_sold_time_sk", "t0"."ws_ship_date_sk", "t0"."ws_item_sk", "t0"."ws_bill_customer_sk", "t0"."ws_bill_cdemo_sk", "t0"."ws_bill_hdemo_sk", "t0"."ws_bill_addr_sk", "t0"."ws_ship_customer_sk", "t0"."ws_ship_cdemo_sk", "t0"."ws_ship_hdemo_sk", "t0"."ws_ship_addr_sk", "t0"."ws_web_page_sk", "t0"."ws_web_site_sk", "t0"."ws_ship_mode_sk", "t0"."ws_warehouse_sk", "t0"."ws_promo_sk", "t0"."ws_order_number", "t0"."ws_quantity", "t0"."ws_wholesale_cost", "t0"."ws_list_price", "t0"."ws_sales_price", "t0"."ws_ext_discount_amt", "t0"."ws_ext_sales_price", "t0"."ws_ext_wholesale_cost", "t0"."ws_ext_list_price", "t0"."ws_ext_tax", "t0"."ws_coupon_amt", "t0"."ws_ext_ship_cost", "t0"."ws_net_paid", "t0"."ws_net_paid_inc_tax", "t0"."ws_net_paid_inc_ship", "t0"."ws_net_paid_inc_ship_tax", "t0"."ws_net_profit", "t6"."d_date_sk", "t6"."d_date_id", "t6"."d_date", "t6"."d_month_seq", "t6"."d_week_seq", "t6"."d_quarter_seq", "t6"."d_year", "t6"."d_dow", "t6"."d_moy", "t6"."d_dom", "t6"."d_qoy", "t6"."d_fy_year", "t6"."d_fy_quarter_seq", "t6"."d_fy_week_seq", "t6"."d_day_name", "t6"."d_quarter_name", "t6"."d_holiday", "t6"."d_weekend", "t6"."d_following_holiday", "t6"."d_first_dom", "t6"."d_last_dom", "t6"."d_same_day_ly", "t6"."d_same_day_lq", "t6"."d_current_day", "t6"."d_current_week", "t6"."d_current_month", "t6"."d_current_quarter", "t6"."d_current_year", "t2"."ca_address_sk", "t2"."ca_address_id", "t2"."ca_street_number", "t2"."ca_street_name", "t2"."ca_street_type", "t2"."ca_suite_number", "t2"."ca_city", "t2"."ca_county", "t2"."ca_state", "t2"."ca_zip", "t2"."ca_country", "t2"."ca_gmt_offset", "t2"."ca_location_type", "t4"."i_item_sk", "t4"."i_item_id", "t4"."i_rec_start_date", "t4"."i_rec_end_date", "t4"."i_item_desc", "t4"."i_current_price", "t4"."i_wholesale_cost", "t4"."i_brand_id", "t4"."i_brand", "t4"."i_class_id", "t4"."i_class", "t4"."i_category_id", "t4"."i_category", "t4"."i_manufact_id", "t4"."i_manufact", "t4"."i_size", "t4"."i_formulation", "t4"."i_color", "t4"."i_units", "t4"."i_container", "t4"."i_manager_id", "t4"."i_product_name" -FROM (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_web_site_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" -FROM "WEB_SALES" -WHERE "ws_sold_date_sk" IS NOT NULL AND ("ws_bill_addr_sk" IS NOT NULL AND "ws_item_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_gmt_offset" = -6 AND "ca_address_sk" IS NOT NULL) AS "t2" ON "t0"."ws_bill_addr_sk" = "t2"."ca_address_sk" -INNER JOIN (SELECT "i_item_sk", "i_item_id", "i_rec_start_date", "i_rec_end_date", "i_item_desc", "i_current_price", "i_wholesale_cost", "i_brand_id", "i_brand", "i_class_id", "i_class", "i_category_id", "i_category", "i_manufact_id", "i_manufact", "i_size", "i_formulation", "i_color", "i_units", "i_container", "i_manager_id", "i_product_name" -FROM "ITEM" -WHERE "i_manufact_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t4" ON "t0"."ws_item_sk" = "t4"."i_item_sk" -INNER JOIN (SELECT "d_date_sk", "d_date_id", "d_date", "d_month_seq", "d_week_seq", "d_quarter_seq", "d_year", "d_dow", "d_moy", "d_dom", "d_qoy", "d_fy_year", "d_fy_quarter_seq", "d_fy_week_seq", "d_day_name", "d_quarter_name", "d_holiday", "d_weekend", "d_following_holiday", "d_first_dom", "d_last_dom", "d_same_day_ly", "d_same_day_lq", "d_current_day", "d_current_week", "d_current_month", "d_current_quarter", "d_current_year" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" = 3 AND "d_date_sk" IS NOT NULL)) AS "t6" ON "t0"."ws_sold_date_sk" = "t6"."d_date_sk" - hive.sql.query.fieldNames 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_web_site_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,d_date_sk,d_date_id,d_date,d_month_seq,d_week_seq,d_quarter_seq,d_year,d_dow,d_moy,d_dom,d_qoy,d_fy_year,d_fy_quarter_seq,d_fy_week_seq,d_day_name,d_quarter_name,d_holiday,d_weekend,d_following_holiday,d_first_dom,d_last_dom,d_same_day_ly,d_same_day_lq,d_current_day,d_current_week,d_current_month,d_current_quarter,d_current_year,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,i_item_sk,i_item_id,i_rec_start_date,i_rec_end_date,i_item_desc,i_current_price,i_wholesale_cost,i_brand_id,i_brand,i_class_id,i_class,i_category_id,i_category,i_manufact_id,i_manufact,i_size,i_formulation,i_color,i_units,i_container,i_manager_id,i_product_name - hive.sql.query.fieldTypes int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),decimal(7,2),int,char(16),date,int,int,int,int,int,int,int,int,int,int,int,char(9),char(6),char(1),char(1),char(1),int,int,int,int,char(1),char(1),char(1),char(1),char(1),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(16),date,date,varchar(200),decimal(7,2),decimal(7,2),int,char(50),int,char(50),int,char(50),int,char(50),char(20),char(20),char(20),char(10),char(10),int,char(50) + hive.sql.query SELECT "t1"."ws_sold_date_sk", "t1"."ws_item_sk", "t1"."ws_bill_addr_sk", "t1"."ws_ext_sales_price", "t10"."d_date_sk", "t10"."d_year", "t10"."d_moy", "t4"."ca_address_sk", "t4"."ca_gmt_offset", "t7"."i_item_sk", "t7"."i_manufact_id" +FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_bill_addr_sk", "ws_ext_sales_price" +FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_bill_addr_sk", "ws_ext_sales_price" +FROM "WEB_SALES") AS "t" +WHERE "ws_sold_date_sk" IS NOT NULL AND "ws_bill_addr_sk" IS NOT NULL AND "ws_item_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_gmt_offset" +FROM (SELECT "ca_address_sk", "ca_gmt_offset" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_gmt_offset" = -6 AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."ws_bill_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "i_item_sk", "i_manufact_id" +FROM (SELECT "i_item_sk", "i_manufact_id" +FROM "ITEM") AS "t5" +WHERE "i_manufact_id" IS NOT NULL AND "i_item_sk" IS NOT NULL) AS "t7" ON "t1"."ws_item_sk" = "t7"."i_item_sk" +INNER JOIN (SELECT "d_date_sk", "d_year", "d_moy" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t8" +WHERE "d_year" = 1999 AND "d_moy" = 3 AND "d_date_sk" IS NOT NULL) AS "t10" ON "t1"."ws_sold_date_sk" = "t10"."d_date_sk" + hive.sql.query.fieldNames ws_sold_date_sk,ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,d_date_sk,d_year,d_moy,ca_address_sk,ca_gmt_offset,i_item_sk,i_manufact_id + hive.sql.query.fieldTypes int,int,int,decimal(7,2),int,int,int,int,decimal(5,2),int,int hive.sql.query.split false Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ws_ext_sales_price (type: decimal(7,2)), i_manufact_id (type: int) - outputColumnNames: _col23, _col88 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col88 (type: int) + key expressions: _col10 (type: int) null sort order: z sort order: + - Map-reduce partition columns: _col88 (type: int) + Map-reduce partition columns: _col10 (type: int) Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE - value expressions: _col23 (type: decimal(7,2)) + value expressions: _col3 (type: decimal(7,2)) Execution mode: vectorized, llap LLAP IO: no inputs Map 7 @@ -4446,7 +4502,8 @@ WHERE "d_year" = 1999 AND ("d_moy" = 3 AND "d_date_sk" IS NOT NULL)) AS "t6" ON alias: item properties: hive.sql.query SELECT "i_manufact_id" -FROM "ITEM" +FROM (SELECT "i_category", "i_manufact_id" +FROM "ITEM") AS "t" WHERE "i_category" = 'Books ' AND "i_manufact_id" IS NOT NULL hive.sql.query.fieldNames i_manufact_id hive.sql.query.fieldTypes int @@ -4489,13 +4546,13 @@ WHERE "i_category" = 'Books ' AND "i condition map: Left Semi Join 0 to 1 keys: - 0 _col88 (type: int) + 0 _col10 (type: int) 1 _col0 (type: int) - outputColumnNames: _col23, _col88 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 127 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col23) - keys: _col88 (type: int) + aggregations: sum(_col3) + keys: _col10 (type: int) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -4537,13 +4594,13 @@ WHERE "i_category" = 'Books ' AND "i condition map: Left Semi Join 0 to 1 keys: - 0 _col77 (type: int) + 0 _col10 (type: int) 1 _col0 (type: int) - outputColumnNames: _col15, _col77 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 127 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col15) - keys: _col77 (type: int) + aggregations: sum(_col3) + keys: _col10 (type: int) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -4623,13 +4680,13 @@ WHERE "i_category" = 'Books ' AND "i condition map: Left Semi Join 0 to 1 keys: - 0 _col88 (type: int) + 0 _col10 (type: int) 1 _col0 (type: int) - outputColumnNames: _col23, _col88 + outputColumnNames: _col3, _col10 Statistics: Num rows: 1 Data size: 127 Basic stats: COMPLETE Column stats: NONE Group By Operator - aggregations: sum(_col23) - keys: _col88 (type: int) + aggregations: sum(_col3) + keys: _col10 (type: int) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 @@ -4833,13 +4890,13 @@ POSTHOOK: Input: default@item POSTHOOK: Input: default@store_sales POSTHOOK: Input: default@web_sales #### A masked pattern was here #### -Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product -Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product -Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3]] in Stage 'Reducer 4' is a cross product -Warning: Shuffle Join MERGEJOIN[43][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4]] in Stage 'Reducer 5' is a cross product -Warning: Shuffle Join MERGEJOIN[44][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5]] in Stage 'Reducer 6' is a cross product -Warning: Shuffle Join MERGEJOIN[45][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6]] in Stage 'Reducer 7' is a cross product -Warning: Shuffle Join MERGEJOIN[46][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6, $hdt$_7]] in Stage 'Reducer 8' is a cross product +Warning: Shuffle Join MERGEJOIN[39][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product +Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product +Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3]] in Stage 'Reducer 4' is a cross product +Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4]] in Stage 'Reducer 5' is a cross product +Warning: Shuffle Join MERGEJOIN[43][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5]] in Stage 'Reducer 6' is a cross product +Warning: Shuffle Join MERGEJOIN[44][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6]] in Stage 'Reducer 7' is a cross product +Warning: Shuffle Join MERGEJOIN[45][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6, $hdt$_7]] in Stage 'Reducer 8' is a cross product PREHOOK: query: explain select * from (select count(*) as h8_30_to_9 @@ -5153,17 +5210,21 @@ STAGE PLANS: properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" >= 30 AND ("t_hour" = 8 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" >= 30 AND "t_hour" = 8 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5186,17 +5247,21 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" >= 30 AND ("t_hour" = 11 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" >= 30 AND "t_hour" = 11 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5219,17 +5284,21 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" < 30 AND ("t_hour" = 11 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" < 30 AND "t_hour" = 11 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5252,17 +5321,21 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" >= 30 AND ("t_hour" = 10 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" >= 30 AND "t_hour" = 10 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5285,17 +5358,21 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" < 30 AND ("t_hour" = 10 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" < 30 AND "t_hour" = 10 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5318,17 +5395,21 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" >= 30 AND ("t_hour" = 9 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" >= 30 AND "t_hour" = 9 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5351,17 +5432,21 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" < 30 AND ("t_hour" = 9 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" < 30 AND "t_hour" = 9 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5384,17 +5469,21 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s properties: hive.sql.query SELECT COUNT(*) AS "$f0" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" -FROM "STORE_SALES" -WHERE "ss_hdemo_sk" IS NOT NULL AND ("ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL)) AS "t0" +FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "hd_demo_sk" -FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE ("hd_vehicle_count" <= 5 OR ("hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3)) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR ("hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3)) AND ("hd_dep_count" IN (4, 2, 0) AND "hd_demo_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +FROM (SELECT "hd_demo_sk", "hd_dep_count", "hd_vehicle_count" +FROM "HOUSEHOLD_DEMOGRAPHICS") AS "t2" +WHERE "hd_vehicle_count" <= 5 AND ("hd_dep_count" = 4 AND "hd_vehicle_count" IS NOT NULL OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_dep_count" IN (0, 2, 4) AND "hd_demo_sk" IS NOT NULL) AS "t4" ON "t1"."ss_hdemo_sk" = "t4"."hd_demo_sk" INNER JOIN (SELECT "t_time_sk" -FROM "TIME_DIM" -WHERE "t_minute" < 30 AND ("t_hour" = 12 AND "t_time_sk" IS NOT NULL)) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +FROM (SELECT "t_time_sk", "t_hour", "t_minute" +FROM "TIME_DIM") AS "t5" +WHERE "t_minute" < 30 AND "t_hour" = 12 AND "t_time_sk" IS NOT NULL) AS "t7" ON "t1"."ss_sold_time_sk" = "t7"."t_time_sk" INNER JOIN (SELECT "s_store_sk" -FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +FROM (SELECT "s_store_sk", "s_store_name" +FROM "STORE") AS "t8" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t10" ON "t1"."ss_store_sk" = "t10"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5535,13 +5624,13 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s Processor Tree: ListSink -Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product -Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product -Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3]] in Stage 'Reducer 4' is a cross product -Warning: Shuffle Join MERGEJOIN[43][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4]] in Stage 'Reducer 5' is a cross product -Warning: Shuffle Join MERGEJOIN[44][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5]] in Stage 'Reducer 6' is a cross product -Warning: Shuffle Join MERGEJOIN[45][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6]] in Stage 'Reducer 7' is a cross product -Warning: Shuffle Join MERGEJOIN[46][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6, $hdt$_7]] in Stage 'Reducer 8' is a cross product +Warning: Shuffle Join MERGEJOIN[39][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product +Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product +Warning: Shuffle Join MERGEJOIN[41][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3]] in Stage 'Reducer 4' is a cross product +Warning: Shuffle Join MERGEJOIN[42][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4]] in Stage 'Reducer 5' is a cross product +Warning: Shuffle Join MERGEJOIN[43][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5]] in Stage 'Reducer 6' is a cross product +Warning: Shuffle Join MERGEJOIN[44][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6]] in Stage 'Reducer 7' is a cross product +Warning: Shuffle Join MERGEJOIN[45][tables = [$hdt$_0, $hdt$_1, $hdt$_2, $hdt$_3, $hdt$_4, $hdt$_5, $hdt$_6, $hdt$_7]] in Stage 'Reducer 8' is a cross product PREHOOK: query: select * from (select count(*) as h8_30_to_9 from store_sales @@ -5964,30 +6053,37 @@ STAGE PLANS: TableScan alias: web_returns properties: - hive.sql.query SELECT "t2"."r_reason_desc", SUM("t13"."ws_quantity") AS "$f1", COUNT("t13"."ws_quantity") AS "$f2", SUM("t0"."wr_refunded_cash") AS "$f3", COUNT("t0"."wr_refunded_cash") AS "$f4", SUM("t0"."wr_fee") AS "$f5", COUNT("t0"."wr_fee") AS "$f6" + hive.sql.query SELECT "t4"."r_reason_desc", SUM("t20"."ws_quantity") AS "$f1", COUNT("t20"."ws_quantity") AS "$f2", SUM("t1"."wr_refunded_cash") AS "$f3", COUNT("t1"."wr_refunded_cash") AS "$f4", SUM("t1"."wr_fee") AS "$f5", COUNT("t1"."wr_fee") AS "$f6" +FROM (SELECT "wr_item_sk", "wr_refunded_cdemo_sk", "wr_refunded_addr_sk", "wr_returning_cdemo_sk", "wr_reason_sk", "wr_order_number", "wr_fee", "wr_refunded_cash" FROM (SELECT "wr_item_sk", "wr_refunded_cdemo_sk", "wr_refunded_addr_sk", "wr_returning_cdemo_sk", "wr_reason_sk", "wr_order_number", "wr_fee", "wr_refunded_cash" -FROM "WEB_RETURNS" -WHERE "wr_item_sk" IS NOT NULL AND ("wr_order_number" IS NOT NULL AND "wr_refunded_cdemo_sk" IS NOT NULL) AND ("wr_returning_cdemo_sk" IS NOT NULL AND ("wr_refunded_addr_sk" IS NOT NULL AND "wr_reason_sk" IS NOT NULL))) AS "t0" +FROM "WEB_RETURNS") AS "t" +WHERE "wr_item_sk" IS NOT NULL AND ("wr_order_number" IS NOT NULL AND "wr_refunded_cdemo_sk" IS NOT NULL) AND ("wr_returning_cdemo_sk" IS NOT NULL AND ("wr_refunded_addr_sk" IS NOT NULL AND "wr_reason_sk" IS NOT NULL))) AS "t1" INNER JOIN (SELECT "r_reason_sk", "r_reason_desc" -FROM "REASON" -WHERE "r_reason_sk" IS NOT NULL) AS "t2" ON "t0"."wr_reason_sk" = "t2"."r_reason_sk" -INNER JOIN (SELECT "ca_address_sk", "ca_state" IN ('IN', 'OH', 'NJ') AS "IN", "ca_state" IN ('WI', 'CT', 'KY') AS "IN2", "ca_state" IN ('LA', 'IA', 'AR') AS "IN3" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_state" IN ('IN', 'OH', 'NJ', 'WI', 'CT', 'KY', 'LA', 'IA', 'AR') AND ("ca_country" = 'United States' AND "ca_address_sk" IS NOT NULL)) AS "t4" ON "t0"."wr_refunded_addr_sk" = "t4"."ca_address_sk" -INNER JOIN (SELECT "cd_demo_sk", "cd_marital_status", "cd_education_status", "cd_marital_status" = 'M' AS "=", "cd_education_status" = 'Advanced Degree ' AS "=4", "cd_marital_status" = 'S' AS "=5", "cd_education_status" = 'College ' AS "=6", "cd_marital_status" = 'W' AS "=7", "cd_education_status" = '2 yr Degree ' AS "=8" -FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_marital_status" IN ('M', 'S', 'W') AND ("cd_education_status" IN ('Advanced Degree ', 'College ', '2 yr Degree ') AND "cd_demo_sk" IS NOT NULL)) AS "t6" ON "t0"."wr_refunded_cdemo_sk" = "t6"."cd_demo_sk" +FROM (SELECT "r_reason_sk", "r_reason_desc" +FROM "REASON") AS "t2" +WHERE "r_reason_sk" IS NOT NULL) AS "t4" ON "t1"."wr_reason_sk" = "t4"."r_reason_sk" +INNER JOIN (SELECT "ca_address_sk", "ca_state" IN ('IN', 'NJ', 'OH') AS "EXPR$0", "ca_state" IN ('CT', 'KY', 'WI') AS "EXPR$1", "ca_state" IN ('AR', 'IA', 'LA') AS "EXPR$2" +FROM (SELECT "ca_address_sk", "ca_state", "ca_country" +FROM "CUSTOMER_ADDRESS") AS "t5" +WHERE "ca_state" IN ('AR', 'CT', 'IA', 'IN', 'KY', 'LA', 'NJ', 'OH', 'WI') AND "ca_country" = 'United States' AND "ca_address_sk" IS NOT NULL) AS "t7" ON "t1"."wr_refunded_addr_sk" = "t7"."ca_address_sk" +INNER JOIN (SELECT "cd_demo_sk", "cd_marital_status", "cd_education_status", "cd_marital_status" = 'M' AS "EXPR$0", "cd_education_status" = 'Advanced Degree' AS "EXPR$1", "cd_marital_status" = 'S' AS "EXPR$2", "cd_education_status" = 'College' AS "EXPR$3", "cd_marital_status" = 'W' AS "EXPR$4", "cd_education_status" = '2 yr Degree' AS "EXPR$5" +FROM (SELECT "cd_demo_sk", "cd_marital_status", "cd_education_status" +FROM "CUSTOMER_DEMOGRAPHICS") AS "t8" +WHERE "cd_marital_status" IN ('M', 'S', 'W') AND "cd_education_status" IN ('2 yr Degree', 'Advanced Degree', 'College') AND "cd_demo_sk" IS NOT NULL) AS "t10" ON "t1"."wr_refunded_cdemo_sk" = "t10"."cd_demo_sk" INNER JOIN (SELECT "cd_demo_sk", "cd_marital_status", "cd_education_status" -FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_marital_status" IN ('M', 'S', 'W') AND ("cd_education_status" IN ('Advanced Degree ', 'College ', '2 yr Degree ') AND "cd_demo_sk" IS NOT NULL)) AS "t8" ON "t0"."wr_returning_cdemo_sk" = "t8"."cd_demo_sk" AND "t6"."cd_marital_status" = "t8"."cd_marital_status" AND "t6"."cd_education_status" = "t8"."cd_education_status" -INNER JOIN (SELECT "t10"."ws_sold_date_sk", "t10"."ws_item_sk", "t10"."ws_order_number", "t10"."ws_quantity", "t10"."BETWEEN", "t10"."BETWEEN5", "t10"."BETWEEN6", "t10"."BETWEEN7", "t10"."BETWEEN8", "t10"."BETWEEN9", "t12"."d_date_sk" -FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_order_number", "ws_quantity", "ws_net_profit" BETWEEN 100 AND 200 AS "BETWEEN", "ws_net_profit" BETWEEN 150 AND 300 AS "BETWEEN5", "ws_net_profit" BETWEEN 50 AND 250 AS "BETWEEN6", "ws_sales_price" BETWEEN 100 AND 150 AS "BETWEEN7", "ws_sales_price" BETWEEN 50 AND 100 AS "BETWEEN8", "ws_sales_price" BETWEEN 150 AND 200 AS "BETWEEN9" -FROM "WEB_SALES" -WHERE (100 <= "ws_sales_price" OR ("ws_sales_price" <= 150 OR 50 <= "ws_sales_price") OR ("ws_sales_price" <= 100 OR (150 <= "ws_sales_price" OR "ws_sales_price" <= 200))) AND (100 <= "ws_net_profit" OR ("ws_net_profit" <= 200 OR 150 <= "ws_net_profit") OR ("ws_net_profit" <= 300 OR (50 <= "ws_net_profit" OR "ws_net_profit" <= 250))) AND ("ws_item_sk" IS NOT NULL AND ("ws_order_number" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL))) AS "t10" +FROM (SELECT "cd_demo_sk", "cd_marital_status", "cd_education_status" +FROM "CUSTOMER_DEMOGRAPHICS") AS "t11" +WHERE "cd_marital_status" IN ('M', 'S', 'W') AND "cd_education_status" IN ('2 yr Degree', 'Advanced Degree', 'College') AND "cd_demo_sk" IS NOT NULL) AS "t13" ON "t1"."wr_returning_cdemo_sk" = "t13"."cd_demo_sk" AND "t10"."cd_marital_status" = "t13"."cd_marital_status" AND "t10"."cd_education_status" = "t13"."cd_education_status" +INNER JOIN (SELECT "t16"."ws_sold_date_sk", "t16"."ws_item_sk", "t16"."ws_order_number", "t16"."ws_quantity", "t16"."EXPR$0", "t16"."EXPR$1", "t16"."EXPR$2", "t16"."EXPR$3", "t16"."EXPR$4", "t16"."EXPR$5", "t19"."d_date_sk" +FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_order_number", "ws_quantity", "ws_net_profit" BETWEEN 100 AND 200 AS "EXPR$0", "ws_net_profit" BETWEEN 150 AND 300 AS "EXPR$1", "ws_net_profit" BETWEEN 50 AND 250 AS "EXPR$2", "ws_sales_price" BETWEEN 100 AND 150 AS "EXPR$3", "ws_sales_price" BETWEEN 50 AND 100 AS "EXPR$4", "ws_sales_price" BETWEEN 150 AND 200 AS "EXPR$5" +FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_order_number", "ws_quantity", "ws_sales_price", "ws_net_profit" +FROM "WEB_SALES") AS "t14" +WHERE "ws_item_sk" IS NOT NULL AND "ws_order_number" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL AND "ws_sales_price" IS NOT NULL AND "ws_net_profit" IS NOT NULL) AS "t16" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 2000 AND "d_date_sk" IS NOT NULL) AS "t12" ON "t10"."ws_sold_date_sk" = "t12"."d_date_sk") AS "t13" ON "t0"."wr_item_sk" = "t13"."ws_item_sk" AND "t0"."wr_order_number" = "t13"."ws_order_number" AND ("t6"."=" AND "t6"."=4" AND "t13"."BETWEEN7" OR "t6"."=5" AND "t6"."=6" AND "t13"."BETWEEN8" OR "t6"."=7" AND "t6"."=8" AND "t13"."BETWEEN9") AND ("t4"."IN" AND "t13"."BETWEEN" OR "t4"."IN2" AND "t13"."BETWEEN5" OR "t4"."IN3" AND "t13"."BETWEEN6") -GROUP BY "t2"."r_reason_desc" +FROM (SELECT "d_date_sk", "d_year" +FROM "DATE_DIM") AS "t17" +WHERE "d_year" = 2000 AND "d_date_sk" IS NOT NULL) AS "t19" ON "t16"."ws_sold_date_sk" = "t19"."d_date_sk") AS "t20" ON "t1"."wr_item_sk" = "t20"."ws_item_sk" AND "t1"."wr_order_number" = "t20"."ws_order_number" AND ("t10"."EXPR$0" AND "t10"."EXPR$1" AND "t20"."EXPR$3" OR "t10"."EXPR$2" AND "t10"."EXPR$3" AND "t20"."EXPR$4" OR "t10"."EXPR$4" AND "t10"."EXPR$5" AND "t20"."EXPR$5") AND ("t7"."EXPR$0" AND "t20"."EXPR$0" OR "t7"."EXPR$1" AND "t20"."EXPR$1" OR "t7"."EXPR$2" AND "t20"."EXPR$2") +GROUP BY "t4"."r_reason_desc" hive.sql.query.fieldNames r_reason_desc,$f1,$f2,$f3,$f4,$f5,$f6 hive.sql.query.fieldTypes char(100),bigint,bigint,decimal(17,2),bigint,decimal(17,2),bigint hive.sql.query.split false @@ -6282,23 +6378,26 @@ STAGE PLANS: TableScan alias: c properties: - hive.sql.query SELECT "t0"."c_customer_sk", "t0"."c_customer_id", "t0"."c_current_cdemo_sk", "t0"."c_current_hdemo_sk", "t0"."c_current_addr_sk", "t0"."c_first_shipto_date_sk", "t0"."c_first_sales_date_sk", "t0"."c_salutation", "t0"."c_first_name", "t0"."c_last_name", "t0"."c_preferred_cust_flag", "t0"."c_birth_day", "t0"."c_birth_month", "t0"."c_birth_year", "t0"."c_birth_country", "t0"."c_login", "t0"."c_email_address", "t0"."c_last_review_date", "t4"."ca_address_sk", "t4"."ca_address_id", "t4"."ca_street_number", "t4"."ca_street_name", "t4"."ca_street_type", "t4"."ca_suite_number", "t4"."ca_city", "t4"."ca_county", "t4"."ca_state", "t4"."ca_zip", "t4"."ca_country", "t4"."ca_gmt_offset", "t4"."ca_location_type", "t2"."cd_demo_sk", "t2"."cd_gender", "t2"."cd_marital_status", "t2"."cd_education_status", "t2"."cd_purchase_estimate", "t2"."cd_credit_rating", "t2"."cd_dep_count", "t2"."cd_dep_employed_count", "t2"."cd_dep_college_count" -FROM (SELECT "c_customer_sk", "c_customer_id", "c_current_cdemo_sk", "c_current_hdemo_sk", "c_current_addr_sk", "c_first_shipto_date_sk", "c_first_sales_date_sk", "c_salutation", "c_first_name", "c_last_name", "c_preferred_cust_flag", "c_birth_day", "c_birth_month", "c_birth_year", "c_birth_country", "c_login", "c_email_address", "c_last_review_date" -FROM "CUSTOMER" -WHERE "c_current_addr_sk" IS NOT NULL AND ("c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating", "cd_dep_count", "cd_dep_employed_count", "cd_dep_college_count" -FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."c_current_cdemo_sk" = "t2"."cd_demo_sk" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t0"."c_current_addr_sk" = "t4"."ca_address_sk" - hive.sql.query.fieldNames c_customer_sk,c_customer_id,c_current_cdemo_sk,c_current_hdemo_sk,c_current_addr_sk,c_first_shipto_date_sk,c_first_sales_date_sk,c_salutation,c_first_name,c_last_name,c_preferred_cust_flag,c_birth_day,c_birth_month,c_birth_year,c_birth_country,c_login,c_email_address,c_last_review_date,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating,cd_dep_count,cd_dep_employed_count,cd_dep_college_count - hive.sql.query.fieldTypes int,char(16),int,int,int,int,int,char(10),char(20),char(30),char(1),int,int,int,varchar(20),char(13),char(50),char(10),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(1),char(1),char(20),int,char(10),int,int,int + hive.sql.query SELECT "t1"."c_customer_sk", "t1"."c_current_cdemo_sk", "t1"."c_current_addr_sk", "t4"."ca_address_sk", "t4"."ca_state", "t7"."cd_demo_sk", "t7"."cd_gender", "t7"."cd_marital_status", "t7"."cd_education_status", "t7"."cd_purchase_estimate", "t7"."cd_credit_rating" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM "CUSTOMER") AS "t" +WHERE "c_current_addr_sk" IS NOT NULL AND "c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_state" +FROM (SELECT "ca_address_sk", "ca_state" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."c_current_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM "CUSTOMER_DEMOGRAPHICS") AS "t5" +WHERE "cd_demo_sk" IS NOT NULL) AS "t7" ON "t1"."c_current_cdemo_sk" = "t7"."cd_demo_sk" + hive.sql.query.fieldNames c_customer_sk,c_current_cdemo_sk,c_current_addr_sk,ca_address_sk,ca_state,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating + hive.sql.query.fieldTypes int,int,int,int,char(2),int,char(1),char(1),char(20),int,char(10) hive.sql.query.split false Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c_customer_sk (type: int), cd_gender (type: char(1)), cd_marital_status (type: char(1)), cd_education_status (type: char(20)), cd_purchase_estimate (type: int), cd_credit_rating (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -6306,7 +6405,7 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Execution mode: vectorized, llap LLAP IO: no inputs Map 7 @@ -6314,13 +6413,15 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" TableScan alias: store_sales properties: - hive.sql.query SELECT "t0"."ss_customer_sk" + hive.sql.query SELECT "t1"."ss_customer_sk" FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" -FROM "STORE_SALES" -WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t0" +FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE "d_year" = 1999 AND "d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames ss_customer_sk hive.sql.query.fieldTypes int hive.sql.query.split false @@ -6348,14 +6449,16 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) TableScan alias: web_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."ws_bill_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."ws_bill_customer_sk" +FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" -FROM "WEB_SALES" -WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t0" +FROM "WEB_SALES") AS "t" +WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ws_sold_date_sk" = "t2"."d_date_sk" -GROUP BY "t0"."ws_bill_customer_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE "d_year" = 1999 AND "d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk" +GROUP BY "t1"."ws_bill_customer_sk" hive.sql.query.fieldNames literalTrue,ws_bill_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -6378,14 +6481,16 @@ GROUP BY "t0"."ws_bill_customer_sk" TableScan alias: catalog_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."cs_ship_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."cs_ship_customer_sk" +FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" -FROM "CATALOG_SALES" -WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t0" +FROM "CATALOG_SALES") AS "t" +WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."cs_sold_date_sk" = "t2"."d_date_sk" -GROUP BY "t0"."cs_ship_customer_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE "d_year" = 1999 AND "d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk" +GROUP BY "t1"."cs_ship_customer_sk" hive.sql.query.fieldNames literalTrue,cs_ship_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -6412,7 +6517,7 @@ GROUP BY "t0"."cs_ship_customer_sk" keys: 0 _col0 (type: int) 1 _col0 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -6420,7 +6525,7 @@ GROUP BY "t0"."cs_ship_customer_sk" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 3 Execution mode: llap Reduce Operator Tree: @@ -6430,14 +6535,14 @@ GROUP BY "t0"."cs_ship_customer_sk" keys: 0 _col0 (type: int) 1 _col1 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36, _col40 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10, _col11 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: _col40 is null (type: boolean) + predicate: _col11 is null (type: boolean) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: int), _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + expressions: _col0 (type: int), _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -6445,7 +6550,7 @@ GROUP BY "t0"."cs_ship_customer_sk" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 4 Execution mode: llap Reduce Operator Tree: @@ -6455,24 +6560,24 @@ GROUP BY "t0"."cs_ship_customer_sk" keys: 0 _col0 (type: int) 1 _col1 (type: int) - outputColumnNames: _col32, _col33, _col34, _col35, _col36, _col42 + outputColumnNames: _col6, _col7, _col8, _col9, _col10, _col13 Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: _col42 is null (type: boolean) + predicate: _col13 is null (type: boolean) Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Top N Key Operator sort order: +++++ - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) null sort order: zzzzz Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE top n: 100 Select Operator - expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) - outputColumnNames: _col32, _col33, _col34, _col35, _col36 + expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) + outputColumnNames: _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 @@ -6770,23 +6875,26 @@ STAGE PLANS: TableScan alias: c properties: - hive.sql.query SELECT "t0"."c_customer_sk", "t0"."c_customer_id", "t0"."c_current_cdemo_sk", "t0"."c_current_hdemo_sk", "t0"."c_current_addr_sk", "t0"."c_first_shipto_date_sk", "t0"."c_first_sales_date_sk", "t0"."c_salutation", "t0"."c_first_name", "t0"."c_last_name", "t0"."c_preferred_cust_flag", "t0"."c_birth_day", "t0"."c_birth_month", "t0"."c_birth_year", "t0"."c_birth_country", "t0"."c_login", "t0"."c_email_address", "t0"."c_last_review_date", "t4"."ca_address_sk", "t4"."ca_address_id", "t4"."ca_street_number", "t4"."ca_street_name", "t4"."ca_street_type", "t4"."ca_suite_number", "t4"."ca_city", "t4"."ca_county", "t4"."ca_state", "t4"."ca_zip", "t4"."ca_country", "t4"."ca_gmt_offset", "t4"."ca_location_type", "t2"."cd_demo_sk", "t2"."cd_gender", "t2"."cd_marital_status", "t2"."cd_education_status", "t2"."cd_purchase_estimate", "t2"."cd_credit_rating", "t2"."cd_dep_count", "t2"."cd_dep_employed_count", "t2"."cd_dep_college_count" -FROM (SELECT "c_customer_sk", "c_customer_id", "c_current_cdemo_sk", "c_current_hdemo_sk", "c_current_addr_sk", "c_first_shipto_date_sk", "c_first_sales_date_sk", "c_salutation", "c_first_name", "c_last_name", "c_preferred_cust_flag", "c_birth_day", "c_birth_month", "c_birth_year", "c_birth_country", "c_login", "c_email_address", "c_last_review_date" -FROM "CUSTOMER" -WHERE "c_current_addr_sk" IS NOT NULL AND ("c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL)) AS "t0" -INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating", "cd_dep_count", "cd_dep_employed_count", "cd_dep_college_count" -FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."c_current_cdemo_sk" = "t2"."cd_demo_sk" -INNER JOIN (SELECT "ca_address_sk", "ca_address_id", "ca_street_number", "ca_street_name", "ca_street_type", "ca_suite_number", "ca_city", "ca_county", "ca_state", "ca_zip", "ca_country", "ca_gmt_offset", "ca_location_type" -FROM "CUSTOMER_ADDRESS" -WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t0"."c_current_addr_sk" = "t4"."ca_address_sk" - hive.sql.query.fieldNames c_customer_sk,c_customer_id,c_current_cdemo_sk,c_current_hdemo_sk,c_current_addr_sk,c_first_shipto_date_sk,c_first_sales_date_sk,c_salutation,c_first_name,c_last_name,c_preferred_cust_flag,c_birth_day,c_birth_month,c_birth_year,c_birth_country,c_login,c_email_address,c_last_review_date,ca_address_sk,ca_address_id,ca_street_number,ca_street_name,ca_street_type,ca_suite_number,ca_city,ca_county,ca_state,ca_zip,ca_country,ca_gmt_offset,ca_location_type,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating,cd_dep_count,cd_dep_employed_count,cd_dep_college_count - hive.sql.query.fieldTypes int,char(16),int,int,int,int,int,char(10),char(20),char(30),char(1),int,int,int,varchar(20),char(13),char(50),char(10),int,char(16),char(10),varchar(60),char(15),char(10),varchar(60),varchar(30),char(2),char(10),varchar(20),decimal(5,2),char(20),int,char(1),char(1),char(20),int,char(10),int,int,int + hive.sql.query SELECT "t1"."c_customer_sk", "t1"."c_current_cdemo_sk", "t1"."c_current_addr_sk", "t4"."ca_address_sk", "t4"."ca_state", "t7"."cd_demo_sk", "t7"."cd_gender", "t7"."cd_marital_status", "t7"."cd_education_status", "t7"."cd_purchase_estimate", "t7"."cd_credit_rating" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM (SELECT "c_customer_sk", "c_current_cdemo_sk", "c_current_addr_sk" +FROM "CUSTOMER") AS "t" +WHERE "c_current_addr_sk" IS NOT NULL AND "c_current_cdemo_sk" IS NOT NULL AND "c_customer_sk" IS NOT NULL) AS "t1" +INNER JOIN (SELECT "ca_address_sk", "ca_state" +FROM (SELECT "ca_address_sk", "ca_state" +FROM "CUSTOMER_ADDRESS") AS "t2" +WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" ON "t1"."c_current_addr_sk" = "t4"."ca_address_sk" +INNER JOIN (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM (SELECT "cd_demo_sk", "cd_gender", "cd_marital_status", "cd_education_status", "cd_purchase_estimate", "cd_credit_rating" +FROM "CUSTOMER_DEMOGRAPHICS") AS "t5" +WHERE "cd_demo_sk" IS NOT NULL) AS "t7" ON "t1"."c_current_cdemo_sk" = "t7"."cd_demo_sk" + hive.sql.query.fieldNames c_customer_sk,c_current_cdemo_sk,c_current_addr_sk,ca_address_sk,ca_state,cd_demo_sk,cd_gender,cd_marital_status,cd_education_status,cd_purchase_estimate,cd_credit_rating + hive.sql.query.fieldTypes int,int,int,int,char(2),int,char(1),char(1),char(20),int,char(10) hive.sql.query.split false Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c_customer_sk (type: int), cd_gender (type: char(1)), cd_marital_status (type: char(1)), cd_education_status (type: char(20)), cd_purchase_estimate (type: int), cd_credit_rating (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -6794,7 +6902,7 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Execution mode: vectorized, llap LLAP IO: no inputs Map 7 @@ -6802,13 +6910,15 @@ WHERE "ca_state" IN ('CO', 'IL', 'MN') AND "ca_address_sk" IS NOT NULL) AS "t4" TableScan alias: store_sales properties: - hive.sql.query SELECT "t0"."ss_customer_sk" + hive.sql.query SELECT "t1"."ss_customer_sk" FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" -FROM "STORE_SALES" -WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t0" +FROM (SELECT "ss_sold_date_sk", "ss_customer_sk" +FROM "STORE_SALES") AS "t" +WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ss_sold_date_sk" = "t2"."d_date_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk" hive.sql.query.fieldNames ss_customer_sk hive.sql.query.fieldTypes int hive.sql.query.split false @@ -6836,14 +6946,16 @@ WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) TableScan alias: web_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."ws_bill_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."ws_bill_customer_sk" FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" -FROM "WEB_SALES" -WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t0" +FROM (SELECT "ws_sold_date_sk", "ws_bill_customer_sk" +FROM "WEB_SALES") AS "t" +WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."ws_sold_date_sk" = "t2"."d_date_sk" -GROUP BY "t0"."ws_bill_customer_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk" +GROUP BY "t1"."ws_bill_customer_sk" hive.sql.query.fieldNames literalTrue,ws_bill_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -6866,14 +6978,16 @@ GROUP BY "t0"."ws_bill_customer_sk" TableScan alias: catalog_sales properties: - hive.sql.query SELECT TRUE AS "literalTrue", "t0"."cs_ship_customer_sk" + hive.sql.query SELECT TRUE AS "literalTrue", "t1"."cs_ship_customer_sk" +FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" FROM (SELECT "cs_sold_date_sk", "cs_ship_customer_sk" -FROM "CATALOG_SALES" -WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t0" +FROM "CATALOG_SALES") AS "t" +WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t1" INNER JOIN (SELECT "d_date_sk" -FROM "DATE_DIM" -WHERE "d_year" = 1999 AND ("d_moy" BETWEEN 1 AND 3 AND "d_date_sk" IS NOT NULL)) AS "t2" ON "t0"."cs_sold_date_sk" = "t2"."d_date_sk" -GROUP BY "t0"."cs_ship_customer_sk" +FROM (SELECT "d_date_sk", "d_year", "d_moy" +FROM "DATE_DIM") AS "t2" +WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk" +GROUP BY "t1"."cs_ship_customer_sk" hive.sql.query.fieldNames literalTrue,cs_ship_customer_sk hive.sql.query.fieldTypes boolean,int hive.sql.query.split false @@ -6900,7 +7014,7 @@ GROUP BY "t0"."cs_ship_customer_sk" keys: 0 _col0 (type: int) 1 _col0 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -6908,7 +7022,7 @@ GROUP BY "t0"."cs_ship_customer_sk" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 413 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 3 Execution mode: llap Reduce Operator Tree: @@ -6918,14 +7032,14 @@ GROUP BY "t0"."cs_ship_customer_sk" keys: 0 _col0 (type: int) 1 _col1 (type: int) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36, _col40 + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10, _col11 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: _col40 is null (type: boolean) + predicate: _col11 is null (type: boolean) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: int), _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) - outputColumnNames: _col0, _col32, _col33, _col34, _col35, _col36 + expressions: _col0 (type: int), _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) + outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) @@ -6933,7 +7047,7 @@ GROUP BY "t0"."cs_ship_customer_sk" sort order: + Map-reduce partition columns: _col0 (type: int) Statistics: Num rows: 1 Data size: 454 Basic stats: COMPLETE Column stats: NONE - value expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + value expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) Reducer 4 Execution mode: llap Reduce Operator Tree: @@ -6943,24 +7057,24 @@ GROUP BY "t0"."cs_ship_customer_sk" keys: 0 _col0 (type: int) 1 _col1 (type: int) - outputColumnNames: _col32, _col33, _col34, _col35, _col36, _col42 + outputColumnNames: _col6, _col7, _col8, _col9, _col10, _col13 Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: _col42 is null (type: boolean) + predicate: _col13 is null (type: boolean) Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Top N Key Operator sort order: +++++ - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) null sort order: zzzzz Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE top n: 100 Select Operator - expressions: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) - outputColumnNames: _col32, _col33, _col34, _col35, _col36 + expressions: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) + outputColumnNames: _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1 Data size: 499 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() - keys: _col32 (type: char(1)), _col33 (type: char(1)), _col34 (type: char(20)), _col35 (type: int), _col36 (type: char(10)) + keys: _col6 (type: char(1)), _col7 (type: char(1)), _col8 (type: char(20)), _col9 (type: int), _col10 (type: char(10)) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 @@ -7262,138 +7376,172 @@ POSTHOOK: Input: default@store_sales PREHOOK: query: DROP TABLE catalog_sales PREHOOK: type: DROPTABLE PREHOOK: Input: default@catalog_sales +PREHOOK: Output: database:default PREHOOK: Output: default@catalog_sales POSTHOOK: query: DROP TABLE catalog_sales POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@catalog_sales +POSTHOOK: Output: database:default POSTHOOK: Output: default@catalog_sales PREHOOK: query: DROP TABLE catalog_returns PREHOOK: type: DROPTABLE PREHOOK: Input: default@catalog_returns +PREHOOK: Output: database:default PREHOOK: Output: default@catalog_returns POSTHOOK: query: DROP TABLE catalog_returns POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@catalog_returns +POSTHOOK: Output: database:default POSTHOOK: Output: default@catalog_returns PREHOOK: query: DROP TABLE store_sales PREHOOK: type: DROPTABLE PREHOOK: Input: default@store_sales +PREHOOK: Output: database:default PREHOOK: Output: default@store_sales POSTHOOK: query: DROP TABLE store_sales POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@store_sales +POSTHOOK: Output: database:default POSTHOOK: Output: default@store_sales PREHOOK: query: DROP TABLE store_returns PREHOOK: type: DROPTABLE PREHOOK: Input: default@store_returns +PREHOOK: Output: database:default PREHOOK: Output: default@store_returns POSTHOOK: query: DROP TABLE store_returns POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@store_returns +POSTHOOK: Output: database:default POSTHOOK: Output: default@store_returns PREHOOK: query: DROP TABLE web_sales PREHOOK: type: DROPTABLE PREHOOK: Input: default@web_sales +PREHOOK: Output: database:default PREHOOK: Output: default@web_sales POSTHOOK: query: DROP TABLE web_sales POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@web_sales +POSTHOOK: Output: database:default POSTHOOK: Output: default@web_sales PREHOOK: query: DROP TABLE web_returns PREHOOK: type: DROPTABLE PREHOOK: Input: default@web_returns +PREHOOK: Output: database:default PREHOOK: Output: default@web_returns POSTHOOK: query: DROP TABLE web_returns POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@web_returns +POSTHOOK: Output: database:default POSTHOOK: Output: default@web_returns PREHOOK: query: DROP TABLE customer PREHOOK: type: DROPTABLE PREHOOK: Input: default@customer +PREHOOK: Output: database:default PREHOOK: Output: default@customer POSTHOOK: query: DROP TABLE customer POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@customer +POSTHOOK: Output: database:default POSTHOOK: Output: default@customer PREHOOK: query: DROP TABLE customer_address PREHOOK: type: DROPTABLE PREHOOK: Input: default@customer_address +PREHOOK: Output: database:default PREHOOK: Output: default@customer_address POSTHOOK: query: DROP TABLE customer_address POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@customer_address +POSTHOOK: Output: database:default POSTHOOK: Output: default@customer_address PREHOOK: query: DROP TABLE customer_demographics PREHOOK: type: DROPTABLE PREHOOK: Input: default@customer_demographics +PREHOOK: Output: database:default PREHOOK: Output: default@customer_demographics POSTHOOK: query: DROP TABLE customer_demographics POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@customer_demographics +POSTHOOK: Output: database:default POSTHOOK: Output: default@customer_demographics PREHOOK: query: DROP TABLE inventory PREHOOK: type: DROPTABLE PREHOOK: Input: default@inventory +PREHOOK: Output: database:default PREHOOK: Output: default@inventory POSTHOOK: query: DROP TABLE inventory POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@inventory +POSTHOOK: Output: database:default POSTHOOK: Output: default@inventory PREHOOK: query: DROP TABLE item PREHOOK: type: DROPTABLE PREHOOK: Input: default@item +PREHOOK: Output: database:default PREHOOK: Output: default@item POSTHOOK: query: DROP TABLE item POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@item +POSTHOOK: Output: database:default POSTHOOK: Output: default@item PREHOOK: query: DROP TABLE warehouse PREHOOK: type: DROPTABLE PREHOOK: Input: default@warehouse +PREHOOK: Output: database:default PREHOOK: Output: default@warehouse POSTHOOK: query: DROP TABLE warehouse POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@warehouse +POSTHOOK: Output: database:default POSTHOOK: Output: default@warehouse PREHOOK: query: DROP TABLE date_dim PREHOOK: type: DROPTABLE PREHOOK: Input: default@date_dim +PREHOOK: Output: database:default PREHOOK: Output: default@date_dim POSTHOOK: query: DROP TABLE date_dim POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@date_dim +POSTHOOK: Output: database:default POSTHOOK: Output: default@date_dim PREHOOK: query: DROP TABLE store PREHOOK: type: DROPTABLE PREHOOK: Input: default@store +PREHOOK: Output: database:default PREHOOK: Output: default@store POSTHOOK: query: DROP TABLE store POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@store +POSTHOOK: Output: database:default POSTHOOK: Output: default@store PREHOOK: query: DROP TABLE household_demographics PREHOOK: type: DROPTABLE PREHOOK: Input: default@household_demographics +PREHOOK: Output: database:default PREHOOK: Output: default@household_demographics POSTHOOK: query: DROP TABLE household_demographics POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@household_demographics +POSTHOOK: Output: database:default POSTHOOK: Output: default@household_demographics PREHOOK: query: DROP TABLE time_dim PREHOOK: type: DROPTABLE PREHOOK: Input: default@time_dim +PREHOOK: Output: database:default PREHOOK: Output: default@time_dim POSTHOOK: query: DROP TABLE time_dim POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@time_dim +POSTHOOK: Output: database:default POSTHOOK: Output: default@time_dim PREHOOK: query: DROP TABLE reason PREHOOK: type: DROPTABLE PREHOOK: Input: default@reason +PREHOOK: Output: database:default PREHOOK: Output: default@reason POSTHOOK: query: DROP TABLE reason POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@reason +POSTHOOK: Output: database:default POSTHOOK: Output: default@reason PREHOOK: query: FROM src SELECT diff --git a/ql/src/test/results/clientpositive/llap/jdbc_handler.q.out b/ql/src/test/results/clientpositive/llap/jdbc_handler.q.out index 75b884b0198c..f4f596006aaa 100644 --- a/ql/src/test/results/clientpositive/llap/jdbc_handler.q.out +++ b/ql/src/test/results/clientpositive/llap/jdbc_handler.q.out @@ -261,18 +261,18 @@ STAGE PLANS: Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE Group By Operator keys: key (type: string) - minReductionHashAggr: 0.5 + minReductionHashAggr: 0.4 mode: hash outputColumnNames: _col0 - Statistics: Num rows: 125 Data size: 10875 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) null sort order: z sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 125 Data size: 10875 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE Execution mode: vectorized, llap - LLAP IO: no inputs + LLAP IO: all inputs Reducer 2 Execution mode: llap Reduce Operator Tree: @@ -283,22 +283,22 @@ STAGE PLANS: 0 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 125 Data size: 34000 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 68000 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) null sort order: zz sort order: ++ - Statistics: Num rows: 125 Data size: 34000 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 68000 Basic stats: COMPLETE Column stats: NONE Reducer 3 Execution mode: vectorized, llap Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 125 Data size: 34000 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 68000 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 125 Data size: 34000 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 68000 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -310,11 +310,11 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 125 Data size: 10875 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator null sort order: sort order: - Statistics: Num rows: 125 Data size: 10875 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE value expressions: _col0 (type: string) Stage: Stage-0 diff --git a/ql/src/test/results/clientpositive/llap/jdbc_split_filter.q.out b/ql/src/test/results/clientpositive/llap/jdbc_split_filter.q.out index 97cf6f586a7a..ad9605391d5d 100644 --- a/ql/src/test/results/clientpositive/llap/jdbc_split_filter.q.out +++ b/ql/src/test/results/clientpositive/llap/jdbc_split_filter.q.out @@ -146,9 +146,10 @@ HiveJdbcConverter(convention=[JDBC.DERBY]) JdbcAggregate(group=[{0, 4, 5}], agg#0=[sum($1)]) JdbcFilter(condition=[IS NULL($2)]) JdbcJoin(condition=[AND(=($1, $3), =($0, $2))], joinType=[left]) - JdbcProject(fkey=[$2], ikey=[$0]) + HiveProject(fkey=[$2], ikey=[$0]) JdbcHiveTableScan(table=[[default, ext_simple_derby_table1]], table:alias=[ext_simple_derby_table1]) - JdbcProject(fkey=[$2], ikey=[$0], datekey=[$4], dkey=[$3]) - JdbcFilter(condition=[AND(IS NOT NULL($0), IS NOT NULL($2))]) - JdbcHiveTableScan(table=[[default, ext_simple_derby_table2]], table:alias=[ext_simple_derby_table2]) + JdbcProject(fkey=[$1], ikey=[$0], datekey=[$3], dkey=[$2]) + JdbcFilter(condition=[AND(IS NOT NULL($0), IS NOT NULL($1))]) + JdbcProject(ikey=[$0], fkey=[$2], dkey=[$3], datekey=[$4]) + JdbcHiveTableScan(table=[[default, ext_simple_derby_table2]], table:alias=[ext_simple_derby_table2]) diff --git a/ql/src/test/results/clientpositive/llap/qt_database_derby.q.out b/ql/src/test/results/clientpositive/llap/qt_database_derby.q.out new file mode 100644 index 000000000000..da56622c061d --- /dev/null +++ b/ql/src/test/results/clientpositive/llap/qt_database_derby.q.out @@ -0,0 +1,47 @@ +PREHOOK: query: CREATE EXTERNAL TABLE country +( + id int, + name varchar(20) +) + STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' + TBLPROPERTIES ( + "hive.sql.database.type" = "DERBY", + "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", +#### A masked pattern was here #### + "hive.sql.dbcp.username" = "qtestuser", + "hive.sql.dbcp.password" = "qtestpassword", + "hive.sql.dbcp.maxActive" = "1", + "hive.sql.table" = "COUNTRY" + ) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@country +POSTHOOK: query: CREATE EXTERNAL TABLE country +( + id int, + name varchar(20) +) + STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' + TBLPROPERTIES ( + "hive.sql.database.type" = "DERBY", + "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", +#### A masked pattern was here #### + "hive.sql.dbcp.username" = "qtestuser", + "hive.sql.dbcp.password" = "qtestpassword", + "hive.sql.dbcp.maxActive" = "1", + "hive.sql.table" = "COUNTRY" + ) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@country +PREHOOK: query: SELECT * FROM country +PREHOOK: type: QUERY +PREHOOK: Input: default@country +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM country +POSTHOOK: type: QUERY +POSTHOOK: Input: default@country +#### A masked pattern was here #### +1 India +2 Russia +3 USA