PHOENIX-4246 Breakup join related tests into several integration tests so as not to create too many tables in one test
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/834133a1 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/834133a1 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/834133a1 Branch: refs/heads/master Commit: 834133a194a75c9231f9773b0bd89fd752dcf5dc Parents: ee20a8c Author: James Taylor <[email protected]> Authored: Thu Sep 28 15:06:35 2017 -0700 Committer: James Taylor <[email protected]> Committed: Thu Sep 28 17:51:57 2017 -0700 ---------------------------------------------------------------------- .../end2end/join/HashJoinGlobalIndexIT.java | 2 +- .../end2end/join/HashJoinLocalIndexIT.java | 2 +- .../phoenix/end2end/join/HashJoinNoIndexIT.java | 2 +- .../join/SortMergeJoinGlobalIndexIT.java | 84 ++++++++++++ .../phoenix/end2end/join/SortMergeJoinIT.java | 134 +------------------ .../end2end/join/SortMergeJoinLocalIndexIT.java | 84 ++++++++++++ .../end2end/join/SortMergeJoinNoIndexIT.java | 66 +++++++++ 7 files changed, 238 insertions(+), 136 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/834133a1/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinGlobalIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinGlobalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinGlobalIndexIT.java index 76944a6..a725be7 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinGlobalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinGlobalIndexIT.java @@ -30,7 +30,7 @@ public class HashJoinGlobalIndexIT extends HashJoinIT { super(indexDDL, plans); } - @Parameters + @Parameters(name="HashJoinGlobalIndexIT_{index}") // name is used by failsafe as file name in reports public static Collection<Object> data() { List<Object> testCases = Lists.newArrayList(); testCases.add(new String[][] { http://git-wip-us.apache.org/repos/asf/phoenix/blob/834133a1/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinLocalIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinLocalIndexIT.java index dcc454f..59ddce9 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinLocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinLocalIndexIT.java @@ -46,7 +46,7 @@ public class HashJoinLocalIndexIT extends HashJoinIT { super(indexDDL, plans); } - @Parameters + @Parameters(name="HashJoinLocalIndexIT_{index}") // name is used by failsafe as file name in reports public static Collection<Object> data() { List<Object> testCases = Lists.newArrayList(); testCases.add(new String[][] { http://git-wip-us.apache.org/repos/asf/phoenix/blob/834133a1/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinNoIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinNoIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinNoIndexIT.java index 7f8528d..3bbcaf2 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinNoIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinNoIndexIT.java @@ -30,7 +30,7 @@ public class HashJoinNoIndexIT extends HashJoinIT { super(indexDDL, plans); } - @Parameters + @Parameters(name="HashJoinNoIndexIT_{index}") // name is used by failsafe as file name in reports public static Collection<Object> data() { List<Object> testCases = Lists.newArrayList(); testCases.add(new String[][] { http://git-wip-us.apache.org/repos/asf/phoenix/blob/834133a1/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinGlobalIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinGlobalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinGlobalIndexIT.java new file mode 100644 index 0000000..ce6f032 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinGlobalIndexIT.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end.join; + +import java.util.Collection; +import java.util.List; + +import org.junit.runners.Parameterized.Parameters; + +import com.google.common.collect.Lists; + +public class SortMergeJoinGlobalIndexIT extends SortMergeJoinIT { + + public SortMergeJoinGlobalIndexIT(String[] indexDDL, String[] plans) { + super(indexDDL, plans); + } + + @Parameters(name="SortMergeJoinGlobalIndexIT_{index}") // name is used by failsafe as file name in reports + public static Collection<Object> data() { + List<Object> testCases = Lists.newArrayList(); + testCases.add(new String[][] { + { + "CREATE INDEX \"idx_customer\" ON " + JOIN_CUSTOMER_TABLE_FULL_NAME + " (name)", + "CREATE INDEX \"idx_item\" ON " + JOIN_ITEM_TABLE_FULL_NAME + " (name) INCLUDE (price, discount1, discount2, \"supplier_id\", description)", + "CREATE INDEX \"idx_supplier\" ON " + JOIN_SUPPLIER_TABLE_FULL_NAME + " (name)" + }, { + "SORT-MERGE-JOIN (LEFT) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_supplier\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"S.:supplier_id\"]\n" + + " CLIENT MERGE SORT\n" + + "AND\n" + + " SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + + " SERVER SORTED BY [\"I.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + " AND (SKIP MERGE)\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + + " SERVER FILTER BY QUANTITY < 5000\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + + " CLIENT MERGE SORT\n" + + " CLIENT SORTED BY [\"I.0:supplier_id\"]", + + "SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"I.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "AND\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "CLIENT 4 ROW LIMIT", + + "SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER Join.idx_item\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"I1.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "AND\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER Join.idx_item\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"I2.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "CLIENT SORTED BY [\"I1.:item_id\"]" + }}); + return testCases; + } +} http://git-wip-us.apache.org/repos/asf/phoenix/blob/834133a1/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinIT.java index 8e7bfe2..234c2ee 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinIT.java @@ -34,8 +34,6 @@ import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; -import java.util.Collection; -import java.util.List; import java.util.Properties; import org.apache.phoenix.exception.SQLExceptionCode; @@ -45,140 +43,10 @@ import org.apache.phoenix.util.QueryUtil; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -import com.google.common.collect.Lists; @RunWith(Parameterized.class) -public class SortMergeJoinIT extends BaseJoinIT { - - @Parameters - public static Collection<Object> data() { - List<Object> testCases = Lists.newArrayList(); - testCases.add(new String[][] { - {}, { - "SORT-MERGE-JOIN (LEFT) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" + - "AND\n" + - " SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + - " AND (SKIP MERGE)\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + - " SERVER FILTER BY QUANTITY < 5000\n" + - " SERVER SORTED BY [\"O.item_id\"]\n" + - " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [\"I.supplier_id\"]", - - "SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + - "AND\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + - " SERVER SORTED BY [\"O.item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "CLIENT 4 ROW LIMIT", - - "SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + - "AND\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + - " SERVER FILTER BY FIRST KEY ONLY" - }}); - testCases.add(new String[][] { - { - "CREATE INDEX \"idx_customer\" ON " + JOIN_CUSTOMER_TABLE_FULL_NAME + " (name)", - "CREATE INDEX \"idx_item\" ON " + JOIN_ITEM_TABLE_FULL_NAME + " (name) INCLUDE (price, discount1, discount2, \"supplier_id\", description)", - "CREATE INDEX \"idx_supplier\" ON " + JOIN_SUPPLIER_TABLE_FULL_NAME + " (name)" - }, { - "SORT-MERGE-JOIN (LEFT) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_supplier\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"S.:supplier_id\"]\n" + - " CLIENT MERGE SORT\n" + - "AND\n" + - " SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + - " SERVER SORTED BY [\"I.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - " AND (SKIP MERGE)\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + - " SERVER FILTER BY QUANTITY < 5000\n" + - " SERVER SORTED BY [\"O.item_id\"]\n" + - " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [\"I.0:supplier_id\"]", - - "SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"I.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "AND\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + - " SERVER SORTED BY [\"O.item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "CLIENT 4 ROW LIMIT", - - "SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER Join.idx_item\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"I1.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "AND\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER Join.idx_item\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"I2.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [\"I1.:item_id\"]" - }}); - testCases.add(new String[][] { - { - "CREATE LOCAL INDEX \"idx_customer\" ON " + JOIN_CUSTOMER_TABLE_FULL_NAME + " (name)", - "CREATE LOCAL INDEX \"idx_item\" ON " + JOIN_ITEM_TABLE_FULL_NAME + " (name) INCLUDE (price, discount1, discount2, \"supplier_id\", description)", - "CREATE LOCAL INDEX \"idx_supplier\" ON " + JOIN_SUPPLIER_TABLE_FULL_NAME + " (name)" - }, { - "SORT-MERGE-JOIN (LEFT) TABLES\n" + - " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_SUPPLIER_TABLE_FULL_NAME + " [1]\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"S.:supplier_id\"]\n" + - " CLIENT MERGE SORT\n" + - "AND\n" + - " SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + - " SERVER SORTED BY [\"I.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - " AND (SKIP MERGE)\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + - " SERVER FILTER BY QUANTITY < 5000\n" + - " SERVER SORTED BY [\"O.item_id\"]\n" + - " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [\"I.0:supplier_id\"]", - - "SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"I.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "AND\n" + - " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + - " SERVER SORTED BY [\"O.item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "CLIENT 4 ROW LIMIT", - - "SORT-MERGE-JOIN (INNER) TABLES\n" + - " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"I1.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "AND\n" + - " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + - " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [\"I2.:item_id\"]\n" + - " CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [\"I1.:item_id\"]" - }}); - return testCases; - } +public abstract class SortMergeJoinIT extends BaseJoinIT { - public SortMergeJoinIT(String[] indexDDL, String[] plans) { super(indexDDL, plans); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/834133a1/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinLocalIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinLocalIndexIT.java new file mode 100644 index 0000000..919aa69 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinLocalIndexIT.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end.join; + +import java.util.Collection; +import java.util.List; + +import org.junit.runners.Parameterized.Parameters; + +import com.google.common.collect.Lists; + +public class SortMergeJoinLocalIndexIT extends SortMergeJoinIT { + + public SortMergeJoinLocalIndexIT(String[] indexDDL, String[] plans) { + super(indexDDL, plans); + } + + @Parameters(name="SortMergeJoinLocalIndexIT_{index}") // name is used by failsafe as file name in reports + public static Collection<Object> data() { + List<Object> testCases = Lists.newArrayList(); + testCases.add(new String[][] { + { + "CREATE LOCAL INDEX \"idx_customer\" ON " + JOIN_CUSTOMER_TABLE_FULL_NAME + " (name)", + "CREATE LOCAL INDEX \"idx_item\" ON " + JOIN_ITEM_TABLE_FULL_NAME + " (name) INCLUDE (price, discount1, discount2, \"supplier_id\", description)", + "CREATE LOCAL INDEX \"idx_supplier\" ON " + JOIN_SUPPLIER_TABLE_FULL_NAME + " (name)" + }, { + "SORT-MERGE-JOIN (LEFT) TABLES\n" + + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_SUPPLIER_TABLE_FULL_NAME + " [1]\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"S.:supplier_id\"]\n" + + " CLIENT MERGE SORT\n" + + "AND\n" + + " SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + + " SERVER SORTED BY [\"I.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + " AND (SKIP MERGE)\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + + " SERVER FILTER BY QUANTITY < 5000\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + + " CLIENT MERGE SORT\n" + + " CLIENT SORTED BY [\"I.0:supplier_id\"]", + + "SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"I.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "AND\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "CLIENT 4 ROW LIMIT", + + "SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"I1.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "AND\n" + + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + + " SERVER SORTED BY [\"I2.:item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "CLIENT SORTED BY [\"I1.:item_id\"]" + }}); + return testCases; + } +} http://git-wip-us.apache.org/repos/asf/phoenix/blob/834133a1/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinNoIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinNoIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinNoIndexIT.java new file mode 100644 index 0000000..6f04729 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/SortMergeJoinNoIndexIT.java @@ -0,0 +1,66 @@ +/* + * 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.phoenix.end2end.join; + +import java.util.Collection; +import java.util.List; + +import org.junit.runners.Parameterized.Parameters; + +import com.google.common.collect.Lists; + +public class SortMergeJoinNoIndexIT extends SortMergeJoinIT { + + public SortMergeJoinNoIndexIT(String[] indexDDL, String[] plans) { + super(indexDDL, plans); + } + + @Parameters(name="SortMergeJoinNoIndexIT_{index}") // name is used by failsafe as file name in reports + public static Collection<Object> data() { + List<Object> testCases = Lists.newArrayList(); + testCases.add(new String[][] { + {}, { + "SORT-MERGE-JOIN (LEFT) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" + + "AND\n" + + " SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + + " AND (SKIP MERGE)\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + + " SERVER FILTER BY QUANTITY < 5000\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + + " CLIENT MERGE SORT\n" + + " CLIENT SORTED BY [\"I.supplier_id\"]", + + "SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + + "AND\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + + " CLIENT MERGE SORT\n" + + "CLIENT 4 ROW LIMIT", + + "SORT-MERGE-JOIN (INNER) TABLES\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + + "AND\n" + + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" + + " SERVER FILTER BY FIRST KEY ONLY" + }}); + return testCases; + } +}
