Skip to content

Commit

Permalink
PHOENIX-5367 HashJoin*IndexITs and SortMergeJoin*IndexITs are slow.
Browse files Browse the repository at this point in the history
  • Loading branch information
lhofhansl committed Jun 25, 2019
1 parent 29e2977 commit 14c2e37
Show file tree
Hide file tree
Showing 7 changed files with 123 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -116,11 +116,19 @@ public BaseJoinIT() {
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);
Expand Down Expand Up @@ -154,16 +162,16 @@ public void createSchema() throws SQLException {
}

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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,31 @@

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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
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;
Expand All @@ -38,9 +39,27 @@
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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,31 @@

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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,31 @@

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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,29 @@

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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,31 @@

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

0 comments on commit 14c2e37

Please sign in to comment.