You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by la...@apache.org on 2019/06/25 16:27:32 UTC
[phoenix] branch 4.x-HBase-1.5 updated: PHOENIX-5367
HashJoin*IndexITs and SortMergeJoin*IndexITs are slow.
This is an automated email from the ASF dual-hosted git repository.
larsh pushed a commit to branch 4.x-HBase-1.5
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/4.x-HBase-1.5 by this push:
new 69da33b PHOENIX-5367 HashJoin*IndexITs and SortMergeJoin*IndexITs are slow.
69da33b is described below
commit 69da33b601d5232dc29ff6915889ff29d6fa6cbe
Author: Lars Hofhansl <la...@apache.org>
AuthorDate: Tue Jun 25 09:27:58 2019 -0700
PHOENIX-5367 HashJoin*IndexITs and SortMergeJoin*IndexITs are slow.
---
.../apache/phoenix/end2end/join/BaseJoinIT.java | 22 +++++++++++++++-------
.../end2end/join/HashJoinGlobalIndexIT.java | 18 ++++++++++++++++++
.../phoenix/end2end/join/HashJoinLocalIndexIT.java | 19 +++++++++++++++++++
.../phoenix/end2end/join/HashJoinNoIndexIT.java | 18 ++++++++++++++++++
.../end2end/join/SortMergeJoinGlobalIndexIT.java | 18 ++++++++++++++++++
.../end2end/join/SortMergeJoinLocalIndexIT.java | 17 +++++++++++++++++
.../end2end/join/SortMergeJoinNoIndexIT.java | 18 ++++++++++++++++++
7 files changed, 123 insertions(+), 7 deletions(-)
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/BaseJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/BaseJoinIT.java
index 4d4660c..adfc5e0 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/BaseJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/BaseJoinIT.java
@@ -100,7 +100,7 @@ public abstract class BaseJoinIT extends ParallelStatsDisabledIT {
}
protected String seqName;
- protected String schemaName;
+ private String schemaName;
protected final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
protected final String[] plans;
private final String[] indexDDL;
@@ -116,11 +116,19 @@ public abstract class BaseJoinIT extends ParallelStatsDisabledIT {
this.plans = new String[0];
}
+ protected String getSchemaName() {
+ return schemaName;
+ }
+
+ protected Map<String,String> getTableNameMap() {
+ return virtualNameToRealNameMap;
+ }
+
protected String getTableName(Connection conn, String virtualName) throws Exception {
- String realName = virtualNameToRealNameMap.get(virtualName);
+ String realName = getTableNameMap().get(virtualName);
if (realName == null) {
- realName = SchemaUtil.getTableName(schemaName, generateUniqueName());
- virtualNameToRealNameMap.put(virtualName, realName);
+ realName = SchemaUtil.getTableName(getSchemaName(), generateUniqueName());
+ getTableNameMap().put(virtualName, realName);
createTable(conn, virtualName, realName);
initValues(conn, virtualName, realName);
createIndexes(conn, virtualName, realName);
@@ -154,16 +162,16 @@ public abstract class BaseJoinIT extends ParallelStatsDisabledIT {
}
private String translateToVirtualPlan(String actualPlan) {
- int size = virtualNameToRealNameMap.size();
+ int size = getTableNameMap().size();
String[] virtualNames = new String[size+1];
String[] realNames = new String[size+1];
int count = 0;
- for (Map.Entry<String, String>entry : virtualNameToRealNameMap.entrySet()) {
+ for (Map.Entry<String, String>entry : getTableNameMap().entrySet()) {
virtualNames[count] = entry.getKey();
realNames[count] = entry.getValue();
count++;
}
- realNames[count] = schemaName;
+ realNames[count] = getSchemaName();
virtualNames[count]= JOIN_SCHEMA;
String convertedPlan = StringUtil.replace(actualPlan, realNames, virtualNames);
return convertedPlan;
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 a725be7..3e72888 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
@@ -19,13 +19,31 @@ package org.apache.phoenix.end2end.join;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
public class HashJoinGlobalIndexIT extends HashJoinIT {
+ private static final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+ private static final String schemaName = "S_" + generateUniqueName();
+
+ @Override
+ protected String getSchemaName() {
+ // run all tests in a single schema
+ return schemaName;
+ }
+
+ @Override
+ protected Map<String,String> getTableNameMap() {
+ // cache across tests, so that tables and
+ // indexes are not recreated each time
+ return virtualNameToRealNameMap;
+ }
+
public HashJoinGlobalIndexIT(String[] indexDDL, String[] plans) {
super(indexDDL, plans);
}
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 59ddce9..a65452a 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
@@ -28,6 +28,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.util.PropertiesUtil;
@@ -38,9 +39,27 @@ import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
public class HashJoinLocalIndexIT extends HashJoinIT {
+
+ private static final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+ private static final String schemaName = "S_" + generateUniqueName();
+
+ @Override
+ protected String getSchemaName() {
+ // run all tests in a single schema
+ return schemaName;
+ }
+
+ @Override
+ protected Map<String,String> getTableNameMap() {
+ // cache across tests, so that tables and
+ // indexes are not recreated each time
+ return virtualNameToRealNameMap;
+ }
+
public HashJoinLocalIndexIT(String[] indexDDL, String[] plans) {
super(indexDDL, plans);
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 3bbcaf2..6911aa3 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
@@ -19,13 +19,31 @@ package org.apache.phoenix.end2end.join;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
public class HashJoinNoIndexIT extends HashJoinIT {
+ private static final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+ private static final String schemaName = "S_" + generateUniqueName();
+
+ @Override
+ protected String getSchemaName() {
+ // run all tests in a single schema
+ return schemaName;
+ }
+
+ @Override
+ protected Map<String,String> getTableNameMap() {
+ // cache across tests, so that tables and
+ // indexes are not recreated each time
+ return virtualNameToRealNameMap;
+ }
+
public HashJoinNoIndexIT(String[] indexDDL, String[] plans) {
super(indexDDL, plans);
}
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
index 297f970..d002a2e 100644
--- 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
@@ -19,13 +19,31 @@ package org.apache.phoenix.end2end.join;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
public class SortMergeJoinGlobalIndexIT extends SortMergeJoinIT {
+ private static final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+ private static final String schemaName = "S_" + generateUniqueName();
+
+ @Override
+ protected String getSchemaName() {
+ // run all tests in a single schema
+ return schemaName;
+ }
+
+ @Override
+ protected Map<String,String> getTableNameMap() {
+ // cache across tests, so that tables and
+ // indexes are not recreated each time
+ return virtualNameToRealNameMap;
+ }
+
public SortMergeJoinGlobalIndexIT(String[] indexDDL, String[] plans) {
super(indexDDL, plans);
}
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
index 5e5708a..9fc33b1 100644
--- 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
@@ -19,12 +19,29 @@ package org.apache.phoenix.end2end.join;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
public class SortMergeJoinLocalIndexIT extends SortMergeJoinIT {
+ private static final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+ private static final String schemaName = "S_" + generateUniqueName();
+
+ @Override
+ protected String getSchemaName() {
+ // run all tests in a single schema
+ return schemaName;
+ }
+
+ @Override
+ protected Map<String,String> getTableNameMap() {
+ // cache across tests, so that tables and
+ // indexes are not recreated each time
+ return virtualNameToRealNameMap;
+ }
public SortMergeJoinLocalIndexIT(String[] indexDDL, String[] plans) {
super(indexDDL, plans);
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
index 6f04729..8a1a603 100644
--- 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
@@ -19,13 +19,31 @@ package org.apache.phoenix.end2end.join;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
public class SortMergeJoinNoIndexIT extends SortMergeJoinIT {
+ private static final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+ private static final String schemaName = "S_" + generateUniqueName();
+
+ @Override
+ protected String getSchemaName() {
+ // run all tests in a single schema
+ return schemaName;
+ }
+
+ @Override
+ protected Map<String,String> getTableNameMap() {
+ // cache across tests, so that tables and
+ // indexes are not recreated each time
+ return virtualNameToRealNameMap;
+ }
+
public SortMergeJoinNoIndexIT(String[] indexDDL, String[] plans) {
super(indexDDL, plans);
}