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);
     }