Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id D98F8200C87 for ; Wed, 17 May 2017 17:14:21 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id D8071160BBA; Wed, 17 May 2017 15:14:21 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 57886160BB5 for ; Wed, 17 May 2017 17:14:20 +0200 (CEST) Received: (qmail 59061 invoked by uid 500); 17 May 2017 15:14:19 -0000 Mailing-List: contact commits-help@hive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hive-dev@hive.apache.org Delivered-To: mailing list commits@hive.apache.org Received: (qmail 59050 invoked by uid 99); 17 May 2017 15:14:19 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 May 2017 15:14:19 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 5F6E4DFE34; Wed, 17 May 2017 15:14:19 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: spena@apache.org To: commits@hive.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: hive git commit: HIVE-16664: Add join related Hive blobstore tests (Rentao Wu, reviewed by Sergio Pena) Date: Wed, 17 May 2017 15:14:19 +0000 (UTC) archived-at: Wed, 17 May 2017 15:14:22 -0000 Repository: hive Updated Branches: refs/heads/branch-2 812e78956 -> 3472d4876 HIVE-16664: Add join related Hive blobstore tests (Rentao Wu, reviewed by Sergio Pena) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3472d487 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3472d487 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3472d487 Branch: refs/heads/branch-2 Commit: 3472d4876b032d7b4cabd37be231c325e15bd110 Parents: 812e789 Author: Rentao Wu Authored: Wed May 17 10:13:21 2017 -0500 Committer: Sergio Pena Committed: Wed May 17 10:14:10 2017 -0500 ---------------------------------------------------------------------- data/files/4col_data.txt | 7 + data/files/5col_data.txt | 3 + .../src/test/queries/clientpositive/join.q | 66 +++ .../src/test/queries/clientpositive/join2.q | 19 + .../src/test/queries/clientpositive/map_join.q | 24 + .../queries/clientpositive/map_join_on_filter.q | 16 + .../queries/clientpositive/nested_outer_join.q | 25 + .../src/test/results/clientpositive/join.q.out | 198 +++++++ .../src/test/results/clientpositive/join2.q.out | 64 +++ .../test/results/clientpositive/map_join.q.out | 563 +++++++++++++++++++ .../clientpositive/map_join_on_filter.q.out | 50 ++ .../clientpositive/nested_outer_join.q.out | 76 +++ 12 files changed, 1111 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/data/files/4col_data.txt ---------------------------------------------------------------------- diff --git a/data/files/4col_data.txt b/data/files/4col_data.txt new file mode 100644 index 0000000..a67ebc6 --- /dev/null +++ b/data/files/4col_data.txt @@ -0,0 +1,7 @@ +101 1 1 3 +102 2 2 4 +102 3 3 9 +103 1 3 7 +103 2 2 2 +101 3 1 3 +101 1 1 4 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/data/files/5col_data.txt ---------------------------------------------------------------------- diff --git a/data/files/5col_data.txt b/data/files/5col_data.txt new file mode 100644 index 0000000..cb10b09 --- /dev/null +++ b/data/files/5col_data.txt @@ -0,0 +1,3 @@ +101 1 1 3 url1 +102 2 2 4 url2 +102 3 3 9 url3 http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/queries/clientpositive/join.q ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/queries/clientpositive/join.q b/itests/hive-blobstore/src/test/queries/clientpositive/join.q new file mode 100644 index 0000000..640c0ff --- /dev/null +++ b/itests/hive-blobstore/src/test/queries/clientpositive/join.q @@ -0,0 +1,66 @@ +-- Test inner join query + +DROP TABLE events; +DROP TABLE profiled_users; +DROP TABLE page_profiles_latest; +DROP TABLE page_profiles_out; +CREATE TABLE events ( + userUid string, + trackingId string, + eventType string, + action string, + url string) +PARTITIONED BY (dt string) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LOCATION '${hiveconf:test.blobstore.path.unique}/join/page-profiles'; + +LOAD DATA LOCAL INPATH '../../data/files/5col_data.txt' OVERWRITE INTO TABLE events +PARTITION (dt='2010-12-08'); + +CREATE TABLE profiled_users ( + userUid string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +LOCATION '${hiveconf:test.blobstore.path.unique}/join/measured-profiles'; + +LOAD DATA LOCAL INPATH '../../data/files/4col_data.txt' OVERWRITE INTO TABLE profiled_users; + +CREATE EXTERNAL TABLE page_profiles_latest ( + url string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +LOCATION '${hiveconf:test.blobstore.path.unique}/join/page-profiles/dt=2010-12-08'; + +CREATE TABLE page_profiles_out ( + url string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +LOCATION '${hiveconf:test.blobstore.path.unique}/join/page_profiles_out'; + +INSERT OVERWRITE TABLE page_profiles_out +SELECT url, categoryId, SUM(score) as score, SUM(count) AS count +FROM ( + SELECT + e.url AS url, + u.categoryId AS categoryId, + ROUND(SUM(IF(u.score > 0, log2(u.score + 2), 0))) AS score, + SUM(u.count) AS count + FROM events e + JOIN profiled_users u ON (e.userUid = u.userUid) + WHERE e.userUid != "0" + GROUP BY e.url, u.categoryId + UNION ALL + SELECT * FROM page_profiles_latest +) page_profiles +GROUP BY url, categoryId; + +SELECT * FROM page_profiles_out; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/queries/clientpositive/join2.q ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/queries/clientpositive/join2.q b/itests/hive-blobstore/src/test/queries/clientpositive/join2.q new file mode 100644 index 0000000..c5152d0 --- /dev/null +++ b/itests/hive-blobstore/src/test/queries/clientpositive/join2.q @@ -0,0 +1,19 @@ +-- Test left and right outer join +-- SORT_QUERY_RESULTS + +DROP TABLE join_src; +CREATE TABLE join_src ( + key int, + value string) +STORED AS TEXTFILE +LOCATION '${hiveconf:test.blobstore.path.unique}/join2/join_src'; + +LOAD DATA LOCAL INPATH '../../data/files/smbbucket_1.txt' INTO TABLE join_src; + +SELECT * +FROM join_src a +LEFT OUTER JOIN join_src b ON (a.key=b.key AND a.key < 10); + +SELECT * +FROM join_src a +RIGHT OUTER JOIN join_src b ON (a.key=b.key AND a.key < 10); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/queries/clientpositive/map_join.q ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/queries/clientpositive/map_join.q b/itests/hive-blobstore/src/test/queries/clientpositive/map_join.q new file mode 100644 index 0000000..63a6c8a --- /dev/null +++ b/itests/hive-blobstore/src/test/queries/clientpositive/map_join.q @@ -0,0 +1,24 @@ +-- Test MAPJOIN hint + +DROP TABLE keyval1; +DROP TABLE keyval2; + +CREATE TABLE keyval1 ( + key int, + value string) +STORED AS TEXTFILE +LOCATION '${hiveconf:test.blobstore.path.unique}/map_join/keyval1'; + +LOAD DATA LOCAL INPATH '../../data/files/srcbucket1.txt' INTO TABLE keyval1; + +CREATE TABLE keyval2 ( + key int, + value string) +STORED AS TEXTFILE +LOCATION '${hiveconf:test.blobstore.path.unique}/map_join/keyval2'; + +LOAD DATA LOCAL INPATH '../../data/files/srcbucket0.txt' INTO TABLE keyval2; + +SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM keyval1 x +JOIN keyval2 y ON (x.value = y.value); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/queries/clientpositive/map_join_on_filter.q ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/queries/clientpositive/map_join_on_filter.q b/itests/hive-blobstore/src/test/queries/clientpositive/map_join_on_filter.q new file mode 100644 index 0000000..55b366d --- /dev/null +++ b/itests/hive-blobstore/src/test/queries/clientpositive/map_join_on_filter.q @@ -0,0 +1,16 @@ +-- Test MAPJOIN with filters in the ON condition + +DROP TABLE src_a_data; +CREATE TABLE src_a_data ( + key int, + value string) +STORED AS TEXTFILE +LOCATION '${hiveconf:test.blobstore.path.unique}/map_join_on_filter/src_a_data'; + +LOAD DATA LOCAL INPATH '../../data/files/smbbucket_1.txt' INTO TABLE src_a_data; + +SELECT /*+ MAPJOIN(src1, src2) */ * +FROM src_a_data src1 +RIGHT OUTER JOIN src_a_data src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) +JOIN src_a_data src3 ON (src2.key = src3.key AND src3.key < 10) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/queries/clientpositive/nested_outer_join.q ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/queries/clientpositive/nested_outer_join.q b/itests/hive-blobstore/src/test/queries/clientpositive/nested_outer_join.q new file mode 100644 index 0000000..512b459 --- /dev/null +++ b/itests/hive-blobstore/src/test/queries/clientpositive/nested_outer_join.q @@ -0,0 +1,25 @@ +-- Test nested outer join queries + +DROP TABLE src_a_data; +CREATE TABLE src_a_data ( + key int, + value string) +STORED AS TEXTFILE +LOCATION '${hiveconf:test.blobstore.path.unique}/nested_outer_join/src_a_data'; + +LOAD DATA LOCAL INPATH '../../data/files/smbbucket_3.txt' INTO TABLE src_a_data; + +SELECT s.keya, s.keyb, c.key keyc +FROM ( + SELECT a.key keya, b.key keyb + FROM src_a_data a + LEFT OUTER JOIN src_a_data b ON (a.key=b.key) +) s +LEFT OUTER JOIN src_a_data c ON (s.keyb=c.key AND s.keyb<10) +WHERE s.keya<20; + +SELECT a.key keya, b.key keyb, c.key keyc +FROM src_a_data a +LEFT OUTER JOIN src_a_data b ON (a.key=b.key) +LEFT OUTER JOIN src_a_data c ON (b.key=c.key AND b.key<10) +WHERE a.key<20; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/results/clientpositive/join.q.out ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/results/clientpositive/join.q.out b/itests/hive-blobstore/src/test/results/clientpositive/join.q.out new file mode 100644 index 0000000..c049185 --- /dev/null +++ b/itests/hive-blobstore/src/test/results/clientpositive/join.q.out @@ -0,0 +1,198 @@ +PREHOOK: query: DROP TABLE events +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE events +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE profiled_users +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE profiled_users +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE page_profiles_latest +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE page_profiles_latest +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE page_profiles_out +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE page_profiles_out +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE events ( + userUid string, + trackingId string, + eventType string, + action string, + url string) +PARTITIONED BY (dt string) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/join/page-profiles +PREHOOK: Output: database:default +PREHOOK: Output: default@events +POSTHOOK: query: CREATE TABLE events ( + userUid string, + trackingId string, + eventType string, + action string, + url string) +PARTITIONED BY (dt string) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/join/page-profiles +POSTHOOK: Output: database:default +POSTHOOK: Output: default@events +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/5col_data.txt' OVERWRITE INTO TABLE events +PARTITION (dt='2010-12-08') +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@events +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/5col_data.txt' OVERWRITE INTO TABLE events +PARTITION (dt='2010-12-08') +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@events +POSTHOOK: Output: default@events@dt=2010-12-08 +PREHOOK: query: CREATE TABLE profiled_users ( + userUid string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/join/measured-profiles +PREHOOK: Output: database:default +PREHOOK: Output: default@profiled_users +POSTHOOK: query: CREATE TABLE profiled_users ( + userUid string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/join/measured-profiles +POSTHOOK: Output: database:default +POSTHOOK: Output: default@profiled_users +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/4col_data.txt' OVERWRITE INTO TABLE profiled_users +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@profiled_users +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/4col_data.txt' OVERWRITE INTO TABLE profiled_users +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@profiled_users +PREHOOK: query: CREATE EXTERNAL TABLE page_profiles_latest ( + url string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/join/page-profiles/dt=2010-12-08 +PREHOOK: Output: database:default +PREHOOK: Output: default@page_profiles_latest +POSTHOOK: query: CREATE EXTERNAL TABLE page_profiles_latest ( + url string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/join/page-profiles/dt=2010-12-08 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@page_profiles_latest +PREHOOK: query: CREATE TABLE page_profiles_out ( + url string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/join/page_profiles_out +PREHOOK: Output: database:default +PREHOOK: Output: default@page_profiles_out +POSTHOOK: query: CREATE TABLE page_profiles_out ( + url string, + categoryId int, + score bigint, + count bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' +LINES TERMINATED BY '\n' +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/join/page_profiles_out +POSTHOOK: Output: database:default +POSTHOOK: Output: default@page_profiles_out +PREHOOK: query: INSERT OVERWRITE TABLE page_profiles_out +SELECT url, categoryId, SUM(score) as score, SUM(count) AS count +FROM ( + SELECT + e.url AS url, + u.categoryId AS categoryId, + ROUND(SUM(IF(u.score > 0, log2(u.score + 2), 0))) AS score, + SUM(u.count) AS count + FROM events e + JOIN profiled_users u ON (e.userUid = u.userUid) + WHERE e.userUid != "0" + GROUP BY e.url, u.categoryId + UNION ALL + SELECT * FROM page_profiles_latest +) page_profiles +GROUP BY url, categoryId +PREHOOK: type: QUERY +PREHOOK: Input: default@events +PREHOOK: Input: default@events@dt=2010-12-08 +PREHOOK: Input: default@page_profiles_latest +PREHOOK: Input: default@profiled_users +PREHOOK: Output: default@page_profiles_out +POSTHOOK: query: INSERT OVERWRITE TABLE page_profiles_out +SELECT url, categoryId, SUM(score) as score, SUM(count) AS count +FROM ( + SELECT + e.url AS url, + u.categoryId AS categoryId, + ROUND(SUM(IF(u.score > 0, log2(u.score + 2), 0))) AS score, + SUM(u.count) AS count + FROM events e + JOIN profiled_users u ON (e.userUid = u.userUid) + WHERE e.userUid != "0" + GROUP BY e.url, u.categoryId + UNION ALL + SELECT * FROM page_profiles_latest +) page_profiles +GROUP BY url, categoryId +POSTHOOK: type: QUERY +POSTHOOK: Input: default@events +POSTHOOK: Input: default@events@dt=2010-12-08 +POSTHOOK: Input: default@page_profiles_latest +POSTHOOK: Input: default@profiled_users +POSTHOOK: Output: default@page_profiles_out +POSTHOOK: Lineage: page_profiles_out.categoryid EXPRESSION [(profiled_users)u.FieldSchema(name:categoryid, type:int, comment:null), (page_profiles_latest)page_profiles_latest.FieldSchema(name:categoryid, type:int, comment:null), ] +POSTHOOK: Lineage: page_profiles_out.count EXPRESSION [(profiled_users)u.FieldSchema(name:count, type:bigint, comment:null), (page_profiles_latest)page_profiles_latest.FieldSchema(name:count, type:bigint, comment:null), ] +POSTHOOK: Lineage: page_profiles_out.score EXPRESSION [(profiled_users)u.FieldSchema(name:score, type:bigint, comment:null), (page_profiles_latest)page_profiles_latest.FieldSchema(name:score, type:bigint, comment:null), ] +POSTHOOK: Lineage: page_profiles_out.url EXPRESSION [(events)e.FieldSchema(name:url, type:string, comment:null), (page_profiles_latest)page_profiles_latest.FieldSchema(name:url, type:string, comment:null), ] +PREHOOK: query: SELECT * FROM page_profiles_out +PREHOOK: type: QUERY +PREHOOK: Input: default@page_profiles_out +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM page_profiles_out +POSTHOOK: type: QUERY +POSTHOOK: Input: default@page_profiles_out +#### A masked pattern was here #### +101 1 1 3 +102 2 2 4 +102 3 3 9 +url1 1 3 7 +url1 3 2 3 +url2 2 2 4 +url2 3 2 9 +url3 2 2 4 +url3 3 2 9 http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/results/clientpositive/join2.q.out ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/results/clientpositive/join2.q.out b/itests/hive-blobstore/src/test/results/clientpositive/join2.q.out new file mode 100644 index 0000000..f5b9e3c --- /dev/null +++ b/itests/hive-blobstore/src/test/results/clientpositive/join2.q.out @@ -0,0 +1,64 @@ +PREHOOK: query: DROP TABLE join_src +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE join_src +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE join_src ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/join2/join_src +PREHOOK: Output: database:default +PREHOOK: Output: default@join_src +POSTHOOK: query: CREATE TABLE join_src ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/join2/join_src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@join_src +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/smbbucket_1.txt' INTO TABLE join_src +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@join_src +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/smbbucket_1.txt' INTO TABLE join_src +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@join_src +PREHOOK: query: SELECT * +FROM join_src a +LEFT OUTER JOIN join_src b ON (a.key=b.key AND a.key < 10) +PREHOOK: type: QUERY +PREHOOK: Input: default@join_src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * +FROM join_src a +LEFT OUTER JOIN join_src b ON (a.key=b.key AND a.key < 10) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@join_src +#### A masked pattern was here #### +1 val_1 1 val_1 +10 val_10 NULL NULL +3 val_3 3 val_3 +4 val_4 4 val_4 +5 val_5 5 val_5 +PREHOOK: query: SELECT * +FROM join_src a +RIGHT OUTER JOIN join_src b ON (a.key=b.key AND a.key < 10) +PREHOOK: type: QUERY +PREHOOK: Input: default@join_src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * +FROM join_src a +RIGHT OUTER JOIN join_src b ON (a.key=b.key AND a.key < 10) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@join_src +#### A masked pattern was here #### +1 val_1 1 val_1 +3 val_3 3 val_3 +4 val_4 4 val_4 +5 val_5 5 val_5 +NULL NULL 10 val_10 http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/results/clientpositive/map_join.q.out ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/results/clientpositive/map_join.q.out b/itests/hive-blobstore/src/test/results/clientpositive/map_join.q.out new file mode 100644 index 0000000..268bb52 --- /dev/null +++ b/itests/hive-blobstore/src/test/results/clientpositive/map_join.q.out @@ -0,0 +1,563 @@ +PREHOOK: query: DROP TABLE keyval1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE keyval1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE keyval2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE keyval2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE keyval1 ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/map_join/keyval1 +PREHOOK: Output: database:default +PREHOOK: Output: default@keyval1 +POSTHOOK: query: CREATE TABLE keyval1 ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/map_join/keyval1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@keyval1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/srcbucket1.txt' INTO TABLE keyval1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@keyval1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/srcbucket1.txt' INTO TABLE keyval1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@keyval1 +PREHOOK: query: CREATE TABLE keyval2 ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/map_join/keyval2 +PREHOOK: Output: database:default +PREHOOK: Output: default@keyval2 +POSTHOOK: query: CREATE TABLE keyval2 ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/map_join/keyval2 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@keyval2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/srcbucket0.txt' INTO TABLE keyval2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@keyval2 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/srcbucket0.txt' INTO TABLE keyval2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@keyval2 +PREHOOK: query: SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM keyval1 x +JOIN keyval2 y ON (x.value = y.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@keyval1 +PREHOOK: Input: default@keyval2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM keyval1 x +JOIN keyval2 y ON (x.value = y.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@keyval1 +POSTHOOK: Input: default@keyval2 +#### A masked pattern was here #### +99 val_100 val_100 +99 val_100 val_100 +103 val_103 val_103 +103 val_103 val_103 +105 val_105 val_105 +105 val_105 val_105 +105 val_105 val_105 +11 val_11 val_11 +111 val_111 val_111 +117 val_118 val_118 +117 val_118 val_118 +117 val_118 val_118 +117 val_118 val_118 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +11 val_12 val_12 +11 val_12 val_12 +11 val_12 val_12 +11 val_12 val_12 +11 val_12 val_12 +11 val_12 val_12 +119 val_120 val_120 +119 val_120 val_120 +119 val_120 val_120 +119 val_120 val_120 +119 val_120 val_120 +119 val_120 val_120 +125 val_126 val_126 +129 val_129 val_129 +129 val_129 val_129 +129 val_129 val_129 +129 val_129 val_129 +133 val_133 val_133 +133 val_133 val_133 +133 val_134 val_134 +133 val_134 val_134 +135 val_136 val_136 +135 val_136 val_136 +135 val_136 val_136 +137 val_137 val_137 +137 val_137 val_137 +137 val_138 val_138 +137 val_138 val_138 +137 val_138 val_138 +137 val_138 val_138 +145 val_145 val_145 +149 val_150 val_150 +151 val_152 val_152 +151 val_152 val_152 +151 val_152 val_152 +151 val_152 val_152 +153 val_153 val_153 +153 val_153 val_153 +153 val_153 val_153 +157 val_157 val_157 +157 val_157 val_157 +157 val_158 val_158 +157 val_158 val_158 +161 val_162 val_162 +161 val_162 val_162 +161 val_162 val_162 +161 val_162 val_162 +163 val_163 val_163 +165 val_165 val_165 +165 val_165 val_165 +165 val_165 val_165 +165 val_165 val_165 +165 val_166 val_166 +167 val_168 val_168 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +17 val_17 val_17 +17 val_17 val_17 +175 val_175 val_175 +175 val_175 val_175 +175 val_175 val_175 +175 val_175 val_175 +175 val_176 val_176 +175 val_176 val_176 +175 val_176 val_176 +175 val_176 val_176 +177 val_178 val_178 +177 val_178 val_178 +179 val_179 val_179 +179 val_179 val_179 +179 val_179 val_179 +179 val_179 val_179 +179 val_180 val_180 +183 val_183 val_183 +185 val_186 val_186 +189 val_190 val_190 +191 val_192 val_192 +193 val_193 val_193 +193 val_193 val_193 +193 val_193 val_193 +197 val_197 val_197 +197 val_197 val_197 +197 val_197 val_197 +197 val_197 val_197 +197 val_197 val_197 +197 val_197 val_197 +1 val_2 val_2 +19 val_20 val_20 +199 val_200 val_200 +199 val_200 val_200 +205 val_205 val_205 +205 val_205 val_205 +207 val_207 val_207 +207 val_207 val_207 +207 val_207 val_207 +207 val_207 val_207 +207 val_207 val_207 +207 val_207 val_207 +213 val_213 val_213 +213 val_213 val_213 +213 val_214 val_214 +215 val_216 val_216 +215 val_216 val_216 +217 val_217 val_217 +217 val_217 val_217 +217 val_218 val_218 +217 val_218 val_218 +223 val_223 val_223 +223 val_223 val_223 +227 val_228 val_228 +229 val_229 val_229 +229 val_229 val_229 +239 val_239 val_239 +239 val_239 val_239 +23 val_24 val_24 +23 val_24 val_24 +241 val_241 val_241 +241 val_242 val_242 +241 val_242 val_242 +241 val_242 val_242 +241 val_242 val_242 +241 val_242 val_242 +241 val_242 val_242 +241 val_242 val_242 +241 val_242 val_242 +243 val_244 val_244 +243 val_244 val_244 +247 val_247 val_247 +247 val_247 val_247 +249 val_249 val_249 +255 val_255 val_255 +255 val_255 val_255 +257 val_257 val_257 +257 val_258 val_258 +257 val_258 val_258 +259 val_260 val_260 +259 val_260 val_260 +261 val_262 val_262 +263 val_263 val_263 +263 val_263 val_263 +265 val_265 val_265 +265 val_265 val_265 +265 val_265 val_265 +265 val_265 val_265 +265 val_266 val_266 +271 val_272 val_272 +271 val_272 val_272 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_274 val_274 +275 val_275 val_275 +277 val_277 val_277 +277 val_277 val_277 +277 val_277 val_277 +277 val_277 val_277 +277 val_278 val_278 +277 val_278 val_278 +277 val_278 val_278 +277 val_278 val_278 +281 val_282 val_282 +281 val_282 val_282 +281 val_282 val_282 +281 val_282 val_282 +281 val_282 val_282 +281 val_282 val_282 +285 val_285 val_285 +285 val_285 val_285 +285 val_286 val_286 +287 val_287 val_287 +287 val_288 val_288 +287 val_288 val_288 +287 val_288 val_288 +287 val_288 val_288 +291 val_292 val_292 +291 val_292 val_292 +295 val_296 val_296 +295 val_296 val_296 +29 val_30 val_30 +29 val_30 val_30 +305 val_305 val_305 +305 val_306 val_306 +307 val_307 val_307 +307 val_307 val_307 +309 val_309 val_309 +309 val_309 val_309 +309 val_309 val_309 +309 val_309 val_309 +309 val_310 val_310 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +315 val_315 val_315 +317 val_318 val_318 +317 val_318 val_318 +317 val_318 val_318 +323 val_323 val_323 +325 val_325 val_325 +325 val_325 val_325 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +33 val_33 val_33 +331 val_331 val_331 +331 val_331 val_331 +331 val_332 val_332 +331 val_332 val_332 +335 val_335 val_335 +335 val_336 val_336 +335 val_336 val_336 +337 val_338 val_338 +339 val_339 val_339 +33 val_34 val_34 +341 val_341 val_341 +341 val_342 val_342 +341 val_342 val_342 +341 val_342 val_342 +341 val_342 val_342 +341 val_342 val_342 +341 val_342 val_342 +343 val_344 val_344 +343 val_344 val_344 +345 val_345 val_345 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +347 val_348 val_348 +353 val_353 val_353 +353 val_353 val_353 +353 val_353 val_353 +353 val_353 val_353 +355 val_356 val_356 +355 val_356 val_356 +363 val_364 val_364 +363 val_364 val_364 +363 val_364 val_364 +365 val_365 val_365 +367 val_368 val_368 +367 val_368 val_368 +373 val_374 val_374 +375 val_375 val_375 +377 val_377 val_377 +379 val_379 val_379 +381 val_382 val_382 +381 val_382 val_382 +385 val_386 val_386 +385 val_386 val_386 +389 val_389 val_389 +391 val_392 val_392 +391 val_392 val_392 +393 val_393 val_393 +393 val_393 val_393 +393 val_394 val_394 +393 val_394 val_394 +395 val_396 val_396 +395 val_396 val_396 +395 val_396 val_396 +395 val_396 val_396 +395 val_396 val_396 +395 val_396 val_396 +399 val_399 val_399 +399 val_399 val_399 +3 val_4 val_4 +399 val_400 val_400 +399 val_400 val_400 +401 val_402 val_402 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +405 val_406 val_406 +405 val_406 val_406 +405 val_406 val_406 +405 val_406 val_406 +407 val_407 val_407 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +41 val_41 val_41 +41 val_41 val_41 +411 val_411 val_411 +413 val_413 val_413 +413 val_413 val_413 +413 val_413 val_413 +413 val_413 val_413 +413 val_414 val_414 +413 val_414 val_414 +417 val_417 val_417 +417 val_417 val_417 +417 val_417 val_417 +423 val_424 val_424 +423 val_424 val_424 +427 val_427 val_427 +429 val_429 val_429 +429 val_429 val_429 +43 val_43 val_43 +43 val_43 val_43 +43 val_43 val_43 +429 val_430 val_430 +429 val_430 val_430 +429 val_430 val_430 +429 val_430 val_430 +429 val_430 val_430 +429 val_430 val_430 +431 val_431 val_431 +431 val_431 val_431 +431 val_431 val_431 +431 val_432 val_432 +435 val_436 val_436 +437 val_437 val_437 +437 val_438 val_438 +437 val_438 val_438 +437 val_438 val_438 +439 val_439 val_439 +439 val_439 val_439 +439 val_439 val_439 +439 val_439 val_439 +443 val_443 val_443 +443 val_444 val_444 +443 val_444 val_444 +443 val_444 val_444 +447 val_448 val_448 +449 val_449 val_449 +451 val_452 val_452 +453 val_454 val_454 +453 val_454 val_454 +453 val_454 val_454 +455 val_455 val_455 +455 val_455 val_455 +457 val_458 val_458 +457 val_458 val_458 +457 val_458 val_458 +457 val_458 val_458 +459 val_460 val_460 +461 val_462 val_462 +461 val_462 val_462 +463 val_463 val_463 +463 val_463 val_463 +467 val_468 val_468 +467 val_468 val_468 +467 val_468 val_468 +467 val_468 val_468 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +47 val_47 val_47 +469 val_470 val_470 +475 val_475 val_475 +475 val_475 val_475 +477 val_477 val_477 +477 val_477 val_477 +477 val_478 val_478 +477 val_478 val_478 +479 val_479 val_479 +479 val_479 val_479 +481 val_481 val_481 +481 val_481 val_481 +481 val_482 val_482 +483 val_483 val_483 +485 val_485 val_485 +487 val_487 val_487 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_490 val_490 +491 val_491 val_491 +491 val_492 val_492 +491 val_492 val_492 +491 val_492 val_492 +491 val_492 val_492 +493 val_493 val_493 +493 val_493 val_493 +495 val_495 val_495 +495 val_495 val_495 +495 val_496 val_496 +497 val_497 val_497 +497 val_498 val_498 +497 val_498 val_498 +497 val_498 val_498 +497 val_498 val_498 +497 val_498 val_498 +497 val_498 val_498 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +51 val_51 val_51 +51 val_51 val_51 +53 val_53 val_53 +53 val_53 val_53 +53 val_53 val_53 +53 val_53 val_53 +53 val_54 val_54 +57 val_57 val_57 +63 val_64 val_64 +65 val_66 val_66 +65 val_66 val_66 +69 val_69 val_69 +69 val_70 val_70 +69 val_70 val_70 +69 val_70 val_70 +71 val_72 val_72 +71 val_72 val_72 +75 val_76 val_76 +75 val_76 val_76 +77 val_77 val_77 +77 val_77 val_77 +77 val_77 val_77 +77 val_78 val_78 +77 val_78 val_78 +83 val_83 val_83 +83 val_83 val_83 +83 val_83 val_83 +83 val_83 val_83 +85 val_86 val_86 +87 val_87 val_87 +9 val_9 val_9 +89 val_90 val_90 +89 val_90 val_90 +89 val_90 val_90 +89 val_90 val_90 +89 val_90 val_90 +89 val_90 val_90 +89 val_90 val_90 +89 val_90 val_90 +89 val_90 val_90 +91 val_92 val_92 +95 val_95 val_95 +95 val_95 val_95 +97 val_98 val_98 +97 val_98 val_98 +97 val_98 val_98 +97 val_98 val_98 http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/results/clientpositive/map_join_on_filter.q.out ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/results/clientpositive/map_join_on_filter.q.out b/itests/hive-blobstore/src/test/results/clientpositive/map_join_on_filter.q.out new file mode 100644 index 0000000..653faab --- /dev/null +++ b/itests/hive-blobstore/src/test/results/clientpositive/map_join_on_filter.q.out @@ -0,0 +1,50 @@ +PREHOOK: query: DROP TABLE src_a_data +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE src_a_data +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE src_a_data ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/map_join_on_filter/src_a_data +PREHOOK: Output: database:default +PREHOOK: Output: default@src_a_data +POSTHOOK: query: CREATE TABLE src_a_data ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/map_join_on_filter/src_a_data +POSTHOOK: Output: database:default +POSTHOOK: Output: default@src_a_data +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/smbbucket_1.txt' INTO TABLE src_a_data +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@src_a_data +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/smbbucket_1.txt' INTO TABLE src_a_data +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@src_a_data +PREHOOK: query: SELECT /*+ MAPJOIN(src1, src2) */ * +FROM src_a_data src1 +RIGHT OUTER JOIN src_a_data src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) +JOIN src_a_data src3 ON (src2.key = src3.key AND src3.key < 10) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src_a_data +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(src1, src2) */ * +FROM src_a_data src1 +RIGHT OUTER JOIN src_a_data src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) +JOIN src_a_data src3 ON (src2.key = src3.key AND src3.key < 10) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_a_data +#### A masked pattern was here #### +NULL NULL 1 val_1 1 val_1 +NULL NULL 3 val_3 3 val_3 +NULL NULL 4 val_4 4 val_4 +NULL NULL 5 val_5 5 val_5 http://git-wip-us.apache.org/repos/asf/hive/blob/3472d487/itests/hive-blobstore/src/test/results/clientpositive/nested_outer_join.q.out ---------------------------------------------------------------------- diff --git a/itests/hive-blobstore/src/test/results/clientpositive/nested_outer_join.q.out b/itests/hive-blobstore/src/test/results/clientpositive/nested_outer_join.q.out new file mode 100644 index 0000000..f06c0ee --- /dev/null +++ b/itests/hive-blobstore/src/test/results/clientpositive/nested_outer_join.q.out @@ -0,0 +1,76 @@ +PREHOOK: query: DROP TABLE src_a_data +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE src_a_data +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE src_a_data ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Input: ### test.blobstore.path ###/nested_outer_join/src_a_data +PREHOOK: Output: database:default +PREHOOK: Output: default@src_a_data +POSTHOOK: query: CREATE TABLE src_a_data ( + key int, + value string) +STORED AS TEXTFILE +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Input: ### test.blobstore.path ###/nested_outer_join/src_a_data +POSTHOOK: Output: database:default +POSTHOOK: Output: default@src_a_data +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/smbbucket_3.txt' INTO TABLE src_a_data +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@src_a_data +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/smbbucket_3.txt' INTO TABLE src_a_data +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@src_a_data +PREHOOK: query: SELECT s.keya, s.keyb, c.key keyc +FROM ( + SELECT a.key keya, b.key keyb + FROM src_a_data a + LEFT OUTER JOIN src_a_data b ON (a.key=b.key) +) s +LEFT OUTER JOIN src_a_data c ON (s.keyb=c.key AND s.keyb<10) +WHERE s.keya<20 +PREHOOK: type: QUERY +PREHOOK: Input: default@src_a_data +#### A masked pattern was here #### +POSTHOOK: query: SELECT s.keya, s.keyb, c.key keyc +FROM ( + SELECT a.key keya, b.key keyb + FROM src_a_data a + LEFT OUTER JOIN src_a_data b ON (a.key=b.key) +) s +LEFT OUTER JOIN src_a_data c ON (s.keyb=c.key AND s.keyb<10) +WHERE s.keya<20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_a_data +#### A masked pattern was here #### +4 4 4 +10 10 NULL +17 17 NULL +19 19 NULL +PREHOOK: query: SELECT a.key keya, b.key keyb, c.key keyc +FROM src_a_data a +LEFT OUTER JOIN src_a_data b ON (a.key=b.key) +LEFT OUTER JOIN src_a_data c ON (b.key=c.key AND b.key<10) +WHERE a.key<20 +PREHOOK: type: QUERY +PREHOOK: Input: default@src_a_data +#### A masked pattern was here #### +POSTHOOK: query: SELECT a.key keya, b.key keyb, c.key keyc +FROM src_a_data a +LEFT OUTER JOIN src_a_data b ON (a.key=b.key) +LEFT OUTER JOIN src_a_data c ON (b.key=c.key AND b.key<10) +WHERE a.key<20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_a_data +#### A masked pattern was here #### +4 4 4 +10 10 NULL +17 17 NULL +19 19 NULL