You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2016/10/07 19:15:16 UTC
[01/48] phoenix git commit: PHOENIX-3290 Move and/or combine as many
NeedsOwnCluster tests to bring down test run time
Repository: phoenix
Updated Branches:
refs/heads/calcite ac544b4ba -> db70ca201
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
index 35e1c62..425e84c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
@@ -58,16 +58,17 @@ public class ViewIT extends BaseViewIT {
super(transactional);
}
- @Test
- public void testReadOnlyView() throws Exception {
+ @Test
+ public void testReadOnlyOnReadOnlyView() throws Exception {
Connection earlierCon = DriverManager.getConnection(getUrl());
Connection conn = DriverManager.getConnection(getUrl());
- String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE) "+ tableDDLOptions;
+ String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE) "+ tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v (v2 VARCHAR) AS SELECT * FROM " + tableName + " WHERE k > 5";
+ String fullParentViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullParentViewName + " (v2 VARCHAR) AS SELECT * FROM " + tableName + " WHERE k > 5";
conn.createStatement().execute(ddl);
try {
- conn.createStatement().execute("UPSERT INTO v VALUES(1)");
+ conn.createStatement().execute("UPSERT INTO " + fullParentViewName + " VALUES(1)");
fail();
} catch (ReadOnlyTableException e) {
@@ -77,42 +78,37 @@ public class ViewIT extends BaseViewIT {
}
conn.commit();
- analyzeTable(conn, "v", transactional);
+ analyzeTable(conn, fullParentViewName, transactional);
- List<KeyRange> splits = getAllSplits(conn, "v");
+ List<KeyRange> splits = getAllSplits(conn, fullParentViewName);
assertEquals(4, splits.size());
int count = 0;
- ResultSet rs = conn.createStatement().executeQuery("SELECT k FROM " + tableName);
+ ResultSet rs = conn.createStatement().executeQuery("SELECT k FROM " + fullTableName);
while (rs.next()) {
assertEquals(count++, rs.getInt(1));
}
assertEquals(10, count);
count = 0;
- rs = conn.createStatement().executeQuery("SELECT k FROM v");
+ rs = conn.createStatement().executeQuery("SELECT k FROM " + fullParentViewName);
while (rs.next()) {
count++;
assertEquals(count + 5, rs.getInt(1));
}
assertEquals(4, count);
count = 0;
- rs = earlierCon.createStatement().executeQuery("SELECT k FROM v");
+ rs = earlierCon.createStatement().executeQuery("SELECT k FROM " + fullParentViewName);
while (rs.next()) {
count++;
assertEquals(count + 5, rs.getInt(1));
}
assertEquals(4, count);
- }
-
- @Test
- public void testReadOnlyOnReadOnlyView() throws Exception {
- testReadOnlyView();
- Connection conn = DriverManager.getConnection(getUrl());
- String ddl = "CREATE VIEW v2 AS SELECT * FROM v WHERE k < 9";
+ String fullViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullParentViewName + " WHERE k < 9";
conn.createStatement().execute(ddl);
try {
- conn.createStatement().execute("UPSERT INTO v2 VALUES(1)");
+ conn.createStatement().execute("UPSERT INTO " + fullViewName + " VALUES(1)");
fail();
} catch (ReadOnlyTableException e) {
@@ -121,8 +117,8 @@ public class ViewIT extends BaseViewIT {
}
conn = DriverManager.getConnection(getUrl());
- int count = 0;
- ResultSet rs = conn.createStatement().executeQuery("SELECT k FROM v2");
+ count = 0;
+ rs = conn.createStatement().executeQuery("SELECT k FROM " + fullViewName);
while (rs.next()) {
count++;
assertEquals(count + 5, rs.getInt(1));
@@ -142,20 +138,21 @@ public class ViewIT extends BaseViewIT {
@Test
public void testUpdatableOnUpdatableView() throws Exception {
- testUpdatableView(null);
+ String viewName = testUpdatableView(null);
Connection conn = DriverManager.getConnection(getUrl());
- String ddl = "CREATE VIEW v2 AS SELECT * FROM v WHERE k3 = 2";
+ String fullViewName = "V_" + generateRandomString();
+ String ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + viewName + " WHERE k3 = 2";
conn.createStatement().execute(ddl);
- ResultSet rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM v2");
+ ResultSet rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM " + fullViewName);
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertEquals(109, rs.getInt(2));
assertEquals(2, rs.getInt(3));
assertFalse(rs.next());
- conn.createStatement().execute("UPSERT INTO v2(k2) VALUES(122)");
+ conn.createStatement().execute("UPSERT INTO " + fullViewName + "(k2) VALUES(122)");
conn.commit();
- rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM v2 WHERE k2 >= 120");
+ rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM " + fullViewName + " WHERE k2 >= 120");
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertEquals(122, rs.getInt(2));
@@ -163,14 +160,14 @@ public class ViewIT extends BaseViewIT {
assertFalse(rs.next());
try {
- conn.createStatement().execute("UPSERT INTO v2(k2,k3) VALUES(123,3)");
+ conn.createStatement().execute("UPSERT INTO " + fullViewName + "(k2,k3) VALUES(123,3)");
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.CANNOT_UPDATE_VIEW_COLUMN.getErrorCode(), e.getErrorCode());
}
try {
- conn.createStatement().execute("UPSERT INTO v2(k2,k3) select k2, 3 from v2");
+ conn.createStatement().execute("UPSERT INTO " + fullViewName + "(k2,k3) select k2, 3 from " + fullViewName);
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.CANNOT_UPDATE_VIEW_COLUMN.getErrorCode(), e.getErrorCode());
@@ -179,11 +176,12 @@ public class ViewIT extends BaseViewIT {
@Test
public void testReadOnlyOnUpdatableView() throws Exception {
- testUpdatableView(null);
+ String viewName = testUpdatableView(null);
Connection conn = DriverManager.getConnection(getUrl());
- String ddl = "CREATE VIEW v2 AS SELECT * FROM v WHERE k3 > 1 and k3 < 50";
+ String fullViewName = "V_" + generateRandomString();
+ String ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + viewName + " WHERE k3 > 1 and k3 < 50";
conn.createStatement().execute(ddl);
- ResultSet rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM v2");
+ ResultSet rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM " + fullViewName);
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertEquals(109, rs.getInt(2));
@@ -191,7 +189,7 @@ public class ViewIT extends BaseViewIT {
assertFalse(rs.next());
try {
- conn.createStatement().execute("UPSERT INTO v2 VALUES(1)");
+ conn.createStatement().execute("UPSERT INTO " + fullViewName + " VALUES(1)");
fail();
} catch (ReadOnlyTableException e) {
@@ -199,7 +197,7 @@ public class ViewIT extends BaseViewIT {
conn.createStatement().execute("UPSERT INTO " + fullTableName + "(k1, k2,k3) VALUES(1, 122, 5)");
conn.commit();
- rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM v2 WHERE k2 >= 120");
+ rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM " + fullViewName + " WHERE k2 >= 120");
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertEquals(122, rs.getInt(2));
@@ -212,32 +210,34 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1(v2 VARCHAR, v3 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
+ String fullViewName1 = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName1 + "(v2 VARCHAR, v3 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
try {
- conn.createStatement().execute("ALTER VIEW v1 DROP COLUMN v1");
+ conn.createStatement().execute("ALTER VIEW " + fullViewName1 + " DROP COLUMN v1");
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.CANNOT_MUTATE_TABLE.getErrorCode(), e.getErrorCode());
}
- ddl = "CREATE VIEW v2 AS SELECT * FROM v1 WHERE v2 != 'foo'";
+ String fullViewName2 = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName2 + " AS SELECT * FROM " + fullViewName1 + " WHERE v2 != 'foo'";
conn.createStatement().execute(ddl);
try {
- conn.createStatement().execute("ALTER VIEW v2 DROP COLUMN v1");
+ conn.createStatement().execute("ALTER VIEW " + fullViewName2 + " DROP COLUMN v1");
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.CANNOT_MUTATE_TABLE.getErrorCode(), e.getErrorCode());
}
try {
- conn.createStatement().execute("ALTER VIEW v2 DROP COLUMN v2");
+ conn.createStatement().execute("ALTER VIEW " + fullViewName2 + " DROP COLUMN v2");
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.CANNOT_MUTATE_TABLE.getErrorCode(), e.getErrorCode());
}
- conn.createStatement().execute("ALTER VIEW v2 DROP COLUMN v3");
+ conn.createStatement().execute("ALTER VIEW " + fullViewName2 + " DROP COLUMN v3");
}
@@ -245,13 +245,14 @@ public class ViewIT extends BaseViewIT {
public void testReadOnlyViewWithCaseSensitiveTableNames() throws Exception {
Connection earlierCon = DriverManager.getConnection(getUrl());
Connection conn = DriverManager.getConnection(getUrl());
- String caseSensitiveTableName = "\"case_SENSITIVE_table" + tableSuffix + "\"" ;
+ String caseSensitiveTableName = "\"t_" + generateRandomString() + "\"" ;
String ddl = "CREATE TABLE " + caseSensitiveTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW \"v\" (v2 VARCHAR) AS SELECT * FROM " + caseSensitiveTableName + " WHERE k > 5";
+ String caseSensitiveViewName = "\"v_" + generateRandomString() + "\"" ;
+ ddl = "CREATE VIEW " + caseSensitiveViewName + " (v2 VARCHAR) AS SELECT * FROM " + caseSensitiveTableName + " WHERE k > 5";
conn.createStatement().execute(ddl);
try {
- conn.createStatement().execute("UPSERT INTO \"v\" VALUES(1)");
+ conn.createStatement().execute("UPSERT INTO " + caseSensitiveViewName + " VALUES(1)");
fail();
} catch (ReadOnlyTableException e) {
@@ -262,14 +263,14 @@ public class ViewIT extends BaseViewIT {
conn.commit();
int count = 0;
- ResultSet rs = conn.createStatement().executeQuery("SELECT k FROM \"v\"");
+ ResultSet rs = conn.createStatement().executeQuery("SELECT k FROM " + caseSensitiveViewName);
while (rs.next()) {
count++;
assertEquals(count + 5, rs.getInt(1));
}
assertEquals(4, count);
count = 0;
- rs = earlierCon.createStatement().executeQuery("SELECT k FROM \"v\"");
+ rs = earlierCon.createStatement().executeQuery("SELECT k FROM " + caseSensitiveViewName);
while (rs.next()) {
count++;
assertEquals(count + 5, rs.getInt(1));
@@ -282,10 +283,11 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (\"k\" INTEGER NOT NULL PRIMARY KEY, \"v1\" INTEGER, \"a\".v2 VARCHAR)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v (v VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE \"k\" > 5 and \"v1\" > 1";
+ String viewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + viewName + " (v VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE \"k\" > 5 and \"v1\" > 1";
conn.createStatement().execute(ddl);
try {
- conn.createStatement().execute("UPSERT INTO v VALUES(1)");
+ conn.createStatement().execute("UPSERT INTO " + viewName + " VALUES(1)");
fail();
} catch (ReadOnlyTableException e) {
@@ -296,7 +298,7 @@ public class ViewIT extends BaseViewIT {
conn.commit();
int count = 0;
- ResultSet rs = conn.createStatement().executeQuery("SELECT \"k\", \"v1\",\"a\".v2 FROM v");
+ ResultSet rs = conn.createStatement().executeQuery("SELECT \"k\", \"v1\",\"a\".v2 FROM " + viewName);
while (rs.next()) {
count++;
assertEquals(count + 5, rs.getInt(1));
@@ -309,10 +311,11 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 INTEGER, v2 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v (v VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v2 > CURRENT_DATE()-5 AND v2 > DATE '2010-01-01'";
+ String viewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + viewName + " (v VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v2 > CURRENT_DATE()-5 AND v2 > DATE '2010-01-01'";
conn.createStatement().execute(ddl);
try {
- conn.createStatement().execute("UPSERT INTO v VALUES(1)");
+ conn.createStatement().execute("UPSERT INTO " + viewName + " VALUES(1)");
fail();
} catch (ReadOnlyTableException e) {
@@ -323,7 +326,7 @@ public class ViewIT extends BaseViewIT {
conn.commit();
int count = 0;
- ResultSet rs = conn.createStatement().executeQuery("SELECT k FROM v");
+ ResultSet rs = conn.createStatement().executeQuery("SELECT k FROM " + viewName);
while (rs.next()) {
assertEquals(count, rs.getInt(1));
count++;
@@ -347,40 +350,45 @@ public class ViewIT extends BaseViewIT {
Properties props = new Properties();
props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
Connection conn = DriverManager.getConnection(getUrl(),props);
- String fullTableName = "s1.t" + tableSuffix + (isNamespaceMapped ? "_N" : "");
+ String schemaName1 = "S_" + generateRandomString();
+ String fullTableName1 = SchemaUtil.getTableName(schemaName1, tableName);
if (isNamespaceMapped) {
- conn.createStatement().execute("CREATE SCHEMA IF NOT EXISTS s1");
+ conn.createStatement().execute("CREATE SCHEMA IF NOT EXISTS " + schemaName1);
}
- String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
+ String ddl = "CREATE TABLE " + fullTableName1 + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
HBaseAdmin admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin();
conn.createStatement().execute(ddl);
- assertTrue(admin.tableExists(SchemaUtil.getPhysicalTableName(SchemaUtil.normalizeIdentifier(fullTableName),
+ assertTrue(admin.tableExists(SchemaUtil.getPhysicalTableName(SchemaUtil.normalizeIdentifier(fullTableName1),
conn.unwrap(PhoenixConnection.class).getQueryServices().getProps())));
- ddl = "CREATE VIEW s2.v1 (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
+ String viewName = "V_" + generateRandomString();
+ String viewSchemaName = "S_" + generateRandomString();
+ String fullViewName1 = SchemaUtil.getTableName(viewSchemaName, viewName);
+ ddl = "CREATE VIEW " + fullViewName1 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName1 + " WHERE k > 5";
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v2 (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
+ String fullViewName2 = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName2 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName1 + " WHERE k > 5";
conn.createStatement().execute(ddl);
- conn.createStatement().executeQuery("SELECT * FROM s2.v1");
- conn.createStatement().executeQuery("SELECT * FROM v2");
- ddl = "DROP VIEW v1";
+ conn.createStatement().executeQuery("SELECT * FROM " + fullViewName1);
+ conn.createStatement().executeQuery("SELECT * FROM " + fullViewName2);
+ ddl = "DROP VIEW " + viewName;
try {
conn.createStatement().execute(ddl);
fail();
} catch (TableNotFoundException ignore) {
}
- ddl = "DROP VIEW s2.v1";
+ ddl = "DROP VIEW " + fullViewName1;
conn.createStatement().execute(ddl);
- ddl = "DROP VIEW s2.v2";
+ ddl = "DROP VIEW " + SchemaUtil.getTableName(viewSchemaName, generateRandomString());
try {
conn.createStatement().execute(ddl);
fail();
} catch (TableNotFoundException ignore) {
}
- ddl = "DROP TABLE " + fullTableName;
- validateCannotDropTableWithChildViewsWithoutCascade(conn, fullTableName);
- ddl = "DROP VIEW v2";
+ ddl = "DROP TABLE " + fullTableName1;
+ validateCannotDropTableWithChildViewsWithoutCascade(conn, fullTableName1);
+ ddl = "DROP VIEW " + fullViewName2;
conn.createStatement().execute(ddl);
- ddl = "DROP TABLE " + fullTableName;
+ ddl = "DROP TABLE " + fullTableName1;
conn.createStatement().execute(ddl);
}
@@ -390,7 +398,8 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1(v2 VARCHAR, v3 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
+ String viewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + viewName + "(v2 VARCHAR, v3 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
try {
@@ -404,15 +413,18 @@ public class ViewIT extends BaseViewIT {
@Test
public void testViewAndTableAndDropCascade() throws Exception {
// Setup
- String fullTableName = "s2.t"+tableSuffix;
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW s2.v1 (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
+ String viewName = "V_" + generateRandomString();
+ String viewSchemaName = "S_" + generateRandomString();
+ String fullViewName1 = SchemaUtil.getTableName(viewSchemaName, viewName);
+ ddl = "CREATE VIEW " + fullViewName1 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
conn.createStatement().execute(ddl);
- ddl = "CREATE LOCAL INDEX idx on s2.v1(v2)";
+ ddl = "CREATE LOCAL INDEX idx on " + fullViewName1 + "(v2)";
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW s2.v2 (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 10";
+ String fullViewName2 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateRandomString());
+ ddl = "CREATE VIEW " + fullViewName2 + "(v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 10";
conn.createStatement().execute(ddl);
validateCannotDropTableWithChildViewsWithoutCascade(conn, fullTableName);
@@ -420,8 +432,8 @@ public class ViewIT extends BaseViewIT {
// Execute DROP...CASCADE
conn.createStatement().execute("DROP TABLE " + fullTableName + " CASCADE");
- validateViewDoesNotExist(conn, "s2.v1");
- validateViewDoesNotExist(conn, "s2.v2");
+ validateViewDoesNotExist(conn, fullViewName1);
+ validateViewDoesNotExist(conn, fullViewName2);
}
@Test
@@ -429,21 +441,26 @@ public class ViewIT extends BaseViewIT {
// Setup - Tables and Views with Indexes
Connection conn = DriverManager.getConnection(getUrl());
- String fullTableName = "s3.t"+tableSuffix;
if (tableDDLOptions.length()!=0)
tableDDLOptions+=",";
tableDDLOptions+="IMMUTABLE_ROWS=true";
String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE INDEX IDX1 ON " + fullTableName + " (v1)";
+ String viewSchemaName = "S_" + generateRandomString();
+ String fullViewName1 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateRandomString());
+ String fullViewName2 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateRandomString());
+ String indexName1 = "I_" + generateRandomString();
+ String indexName2 = "I_" + generateRandomString();
+ String indexName3 = "I_" + generateRandomString();
+ ddl = "CREATE INDEX " + indexName1 + " ON " + fullTableName + " (v1)";
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW s3.v1 (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
+ ddl = "CREATE VIEW " + fullViewName1 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
conn.createStatement().execute(ddl);
- ddl = "CREATE INDEX IDX2 ON s3.v1 (v2)";
+ ddl = "CREATE INDEX " + indexName2 + " ON " + fullViewName1 + " (v2)";
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW s3.v2 (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 10";
+ ddl = "CREATE VIEW " + fullViewName2 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 10";
conn.createStatement().execute(ddl);
- ddl = "CREATE INDEX IDX3 ON s3.v2 (v2)";
+ ddl = "CREATE INDEX " + indexName3 + " ON " + fullViewName2 + " (v2)";
conn.createStatement().execute(ddl);
validateCannotDropTableWithChildViewsWithoutCascade(conn, fullTableName);
@@ -452,8 +469,8 @@ public class ViewIT extends BaseViewIT {
conn.createStatement().execute("DROP TABLE " + fullTableName + " CASCADE");
// Validate Views were deleted - Try and delete child views, should throw TableNotFoundException
- validateViewDoesNotExist(conn, "s3.v1");
- validateViewDoesNotExist(conn, "s3.v2");
+ validateViewDoesNotExist(conn, fullViewName1);
+ validateViewDoesNotExist(conn, fullViewName2);
}
@@ -469,11 +486,11 @@ public class ViewIT extends BaseViewIT {
}
- private void validateViewDoesNotExist(Connection conn, String viewName) throws SQLException {
+ private void validateViewDoesNotExist(Connection conn, String fullViewName) throws SQLException {
try {
- String ddl1 = "DROP VIEW " + viewName;
+ String ddl1 = "DROP VIEW " + fullViewName;
conn.createStatement().execute(ddl1);
- fail("View s3.v1 should have been deleted when parent was dropped");
+ fail("View " + fullViewName + " should have been deleted when parent was dropped");
} catch (TableNotFoundException e) {
//Expected
}
@@ -498,10 +515,14 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, k3 DECIMAL, s1 VARCHAR, s2 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2, k3))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- conn.createStatement().execute("CREATE " + (localIndex ? "LOCAL " : "") + " INDEX i1 ON " + fullTableName + "(k3, k2) INCLUDE(s1, s2)");
- conn.createStatement().execute("CREATE INDEX i2 ON " + fullTableName + "(k3, k2, s2)");
+ String indexName1 = "I_" + generateRandomString();
+ String fullIndexName1 = SchemaUtil.getTableName(schemaName, indexName1);
+ conn.createStatement().execute("CREATE " + (localIndex ? "LOCAL " : "") + " INDEX " + indexName1 + " ON " + fullTableName + "(k3, k2) INCLUDE(s1, s2)");
+ String indexName2 = "I_" + generateRandomString();
+ conn.createStatement().execute("CREATE INDEX " + indexName2 + " ON " + fullTableName + "(k3, k2, s2)");
- ddl = "CREATE VIEW v AS SELECT * FROM " + fullTableName + " WHERE s1 = 'foo'";
+ String fullViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE s1 = 'foo'";
conn.createStatement().execute(ddl);
String[] s1Values = {"foo","bar"};
for (int i = 0; i < 10; i++) {
@@ -509,14 +530,15 @@ public class ViewIT extends BaseViewIT {
}
conn.commit();
- rs = conn.createStatement().executeQuery("SELECT count(*) FROM v");
+ rs = conn.createStatement().executeQuery("SELECT count(*) FROM " + fullViewName);
assertTrue(rs.next());
assertEquals(5, rs.getLong(1));
assertFalse(rs.next());
- conn.createStatement().execute("CREATE INDEX vi1 on v(k2)");
+ String viewIndexName = "I_" + generateRandomString();
+ conn.createStatement().execute("CREATE INDEX " + viewIndexName + " on " + fullViewName + "(k2)");
- String query = "SELECT k2 FROM v WHERE k2 IN (100,109) AND k3 IN (1,2) AND s2='bas'";
+ String query = "SELECT k2 FROM " + fullViewName + " WHERE k2 IN (100,109) AND k3 IN (1,2) AND s2='bas'";
rs = conn.createStatement().executeQuery(query);
assertTrue(rs.next());
assertEquals(100, rs.getInt(1));
@@ -530,7 +552,7 @@ public class ViewIT extends BaseViewIT {
"CLIENT MERGE SORT", queryPlan);
} else {
assertEquals(
- "CLIENT PARALLEL 1-WAY SKIP SCAN ON 4 KEYS OVER I1 [1,100] - [2,109]\n" +
+ "CLIENT PARALLEL 1-WAY SKIP SCAN ON 4 KEYS OVER " + fullIndexName1 + " [1,100] - [2,109]\n" +
" SERVER FILTER BY (\"S2\" = 'bas' AND \"S1\" = 'foo')", queryPlan);
}
}
@@ -540,16 +562,17 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1(v2 VARCHAR, k3 VARCHAR PRIMARY KEY) AS SELECT * FROM " + fullTableName + " WHERE K1 = 1";
+ String fullViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName + "(v2 VARCHAR, k3 VARCHAR PRIMARY KEY) AS SELECT * FROM " + fullTableName + " WHERE K1 = 1";
conn.createStatement().execute(ddl);
// assert PK metadata
- ResultSet rs = conn.getMetaData().getPrimaryKeys(null, null, "V1");
+ ResultSet rs = conn.getMetaData().getPrimaryKeys(null, null, fullViewName);
assertPKs(rs, new String[] {"K1", "K2", "K3"});
// sanity check upserts into base table and view
conn.createStatement().executeUpdate("upsert into " + fullTableName + " (k1, k2, v1) values (1, 1, 1)");
- conn.createStatement().executeUpdate("upsert into v1 (k1, k2, k3, v2) values (1, 1, 'abc', 'def')");
+ conn.createStatement().executeUpdate("upsert into " + fullViewName + " (k1, k2, k3, v2) values (1, 1, 'abc', 'def')");
conn.commit();
// expect 2 rows in the base table
@@ -558,7 +581,7 @@ public class ViewIT extends BaseViewIT {
assertEquals(2, rs.getInt(1));
// expect 2 row in the view
- rs = conn.createStatement().executeQuery("select count(*) from v1");
+ rs = conn.createStatement().executeQuery("select count(*) from " + fullViewName);
assertTrue(rs.next());
assertEquals(2, rs.getInt(1));
}
@@ -568,11 +591,12 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1(v2 VARCHAR, k3 VARCHAR, k4 INTEGER NOT NULL, CONSTRAINT PKVEW PRIMARY KEY (k3, k4)) AS SELECT * FROM " + fullTableName + " WHERE K1 = 1";
+ String fullViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName + "(v2 VARCHAR, k3 VARCHAR, k4 INTEGER NOT NULL, CONSTRAINT PKVEW PRIMARY KEY (k3, k4)) AS SELECT * FROM " + fullTableName + " WHERE K1 = 1";
conn.createStatement().execute(ddl);
// assert PK metadata
- ResultSet rs = conn.getMetaData().getPrimaryKeys(null, null, "V1");
+ ResultSet rs = conn.getMetaData().getPrimaryKeys(null, null, fullViewName);
assertPKs(rs, new String[] {"K1", "K2", "K3", "K4"});
}
@@ -582,13 +606,14 @@ public class ViewIT extends BaseViewIT {
String fullTableName2 = fullTableName;
String ddl = "CREATE TABLE " + fullTableName2 + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1 AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
+ String fullViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
- ddl = "ALTER VIEW V1 ADD k3 VARCHAR PRIMARY KEY, k4 VARCHAR PRIMARY KEY, v2 INTEGER";
+ ddl = "ALTER VIEW " + fullViewName + " ADD k3 VARCHAR PRIMARY KEY, k4 VARCHAR PRIMARY KEY, v2 INTEGER";
conn.createStatement().execute(ddl);
// assert PK metadata
- ResultSet rs = conn.getMetaData().getPrimaryKeys(null, null, "V1");
+ ResultSet rs = conn.getMetaData().getPrimaryKeys(null, null, fullViewName);
assertPKs(rs, new String[] {"K1", "K2", "K3", "K4"});
}
@@ -597,16 +622,18 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 VARCHAR NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1 AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
+ String fullViewName1 = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName1 + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
- ddl = "ALTER VIEW V1 ADD k3 VARCHAR PRIMARY KEY, k4 VARCHAR PRIMARY KEY, v2 INTEGER";
+ ddl = "ALTER VIEW " + fullViewName1 + " ADD k3 VARCHAR PRIMARY KEY, k4 VARCHAR PRIMARY KEY, v2 INTEGER";
try {
conn.createStatement().execute(ddl);
fail("View cannot extend PK if parent's last PK is variable length. See https://issues.apache.org/jira/browse/PHOENIX-978.");
} catch (SQLException e) {
assertEquals(CANNOT_MODIFY_VIEW_PK.getErrorCode(), e.getErrorCode());
}
- ddl = "CREATE VIEW v2 (k3 VARCHAR PRIMARY KEY) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
+ String fullViewName2 = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName2 + " (k3 VARCHAR PRIMARY KEY) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
try {
conn.createStatement().execute(ddl);
} catch (SQLException e) {
@@ -619,9 +646,10 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1 AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
+ String fullViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
- ddl = "ALTER VIEW V1 ADD k3 VARCHAR PRIMARY KEY, k2 VARCHAR PRIMARY KEY, v2 INTEGER";
+ ddl = "ALTER VIEW " + fullViewName + " ADD k3 VARCHAR PRIMARY KEY, k2 VARCHAR PRIMARY KEY, v2 INTEGER";
conn.createStatement().execute(ddl);
}
@@ -630,10 +658,11 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- ddl = "CREATE VIEW v1 AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
+ String fullViewName = "V_" + generateRandomString();
+ ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
try {
- ddl = "ALTER VIEW V1 ADD k3 VARCHAR NOT NULL PRIMARY KEY";
+ ddl = "ALTER VIEW " + fullViewName + " ADD k3 VARCHAR NOT NULL PRIMARY KEY";
conn.createStatement().execute(ddl);
fail("can only add nullable PKs via ALTER VIEW/TABLE");
} catch (SQLException e) {
@@ -646,17 +675,19 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String sql = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(sql);
- sql = "CREATE VIEW v1 AS SELECT * FROM " + fullTableName;
+ String fullViewName1 = "V_" + generateRandomString();
+ sql = "CREATE VIEW " + fullViewName1 + " AS SELECT * FROM " + fullTableName;
conn.createStatement().execute(sql);
- sql = "CREATE VIEW v2 AS SELECT * FROM " + fullTableName + " WHERE k1 = 1.0";
+ String fullViewName2 = "V_" + generateRandomString();
+ sql = "CREATE VIEW " + fullViewName2 + " AS SELECT * FROM " + fullTableName + " WHERE k1 = 1.0";
conn.createStatement().execute(sql);
- sql = "SELECT * FROM v1 order by k1, k2";
+ sql = "SELECT * FROM " + fullViewName1 + " order by k1, k2";
PreparedStatement stmt = conn.prepareStatement(sql);
QueryPlan plan = PhoenixRuntime.getOptimizedQueryPlan(stmt);
assertEquals(0, plan.getOrderBy().getOrderByExpressions().size());
- sql = "SELECT * FROM v2 order by k1, k2";
+ sql = "SELECT * FROM " + fullViewName2 + " order by k1, k2";
stmt = conn.prepareStatement(sql);
plan = PhoenixRuntime.getOptimizedQueryPlan(stmt);
assertEquals(0, plan.getOrderBy().getOrderByExpressions().size());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
index 32f272d..d03b6fa 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
@@ -25,39 +25,25 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.util.Map;
import java.util.Properties;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
-import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.end2end.ParallelStatsEnabledIT;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
-public class ImmutableIndexWithStatsIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class ImmutableIndexWithStatsIT extends ParallelStatsEnabledIT {
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(5);
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(1));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Test
public void testIndexCreationDeadlockWithStats() throws Exception {
String query;
ResultSet rs;
+ String tableName = generateRandomString();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String tableName = TestUtil.DEFAULT_DATA_TABLE_FULL_NAME;
conn.createStatement().execute("CREATE TABLE " + tableName + " (k VARCHAR NOT NULL PRIMARY KEY, v VARCHAR) IMMUTABLE_ROWS=TRUE");
query = "SELECT * FROM " + tableName;
rs = conn.createStatement().executeQuery(query);
@@ -65,8 +51,8 @@ public class ImmutableIndexWithStatsIT extends BaseOwnClusterHBaseManagedTimeIT
PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + tableName + " VALUES(?,?)");
for (int i=0; i<6;i++) {
- stmt.setString(1,"k" + i);
- stmt.setString(2, "v" + i );
+ stmt.setString(1, "kkkkkkkkkk" + i);
+ stmt.setString(2, "vvvvvvvvvv" + i );
stmt.execute();
}
conn.commit();
@@ -76,7 +62,7 @@ public class ImmutableIndexWithStatsIT extends BaseOwnClusterHBaseManagedTimeIT
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
assertTrue(QueryUtil.getExplainPlan(rs).startsWith("CLIENT PARALLEL 1-WAY FULL SCAN"));
- String indexName = TestUtil.DEFAULT_INDEX_TABLE_NAME;
+ String indexName = "I_" + generateRandomString();
conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + tableName + " (v)");
query = "SELECT * FROM " + indexName;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
index ff74dc8..0657d54 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
@@ -43,7 +43,7 @@ import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver;
import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryConstants;
@@ -74,7 +74,7 @@ import com.google.common.collect.Maps;
@Category(NeedsOwnMiniClusterTest.class)
@RunWith(Parameterized.class)
-public class MutableIndexFailureIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class MutableIndexFailureIT extends BaseOwnClusterIT {
public static volatile boolean FAIL_WRITE = false;
public static final String INDEX_NAME = "IDX";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java
index 1dae126..a2213ea 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java
@@ -43,7 +43,7 @@ import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver;
import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.hbase.index.Indexer;
@@ -77,7 +77,7 @@ import com.google.common.collect.Maps;
@Category(NeedsOwnMiniClusterTest.class)
@RunWith(Parameterized.class)
-public class ReadOnlyIndexFailureIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class ReadOnlyIndexFailureIT extends BaseOwnClusterIT {
public static volatile boolean FAIL_WRITE = false;
public static final String INDEX_NAME = "IDX";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java
index 0202128..03990c1 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java
@@ -41,7 +41,7 @@ import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver;
import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.hbase.index.Indexer;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
@@ -57,7 +57,7 @@ import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class TxWriteFailureIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class TxWriteFailureIT extends BaseOwnClusterIT {
private static final String SCHEMA_NAME = "S";
private static final String DATA_TABLE_NAME = "T";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
index 6758abc..a5555f3 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
@@ -56,6 +56,7 @@ import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.TableRef;
import org.apache.phoenix.util.ReadOnlyProps;
+import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -81,6 +82,10 @@ public class PartialCommitIT extends BaseOwnClusterIT {
private static final byte[] ROW_TO_FAIL_DELETE_BYTES = Bytes.toBytes("fail me delete");
private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
+ @Override
+ @After
+ public void cleanUpAfterTest() throws Exception {}
+
@BeforeClass
public static void doSetup() throws Exception {
Map<String, String> serverProps = Maps.newHashMapWithExpectedSize(10);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorWithStatsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorWithStatsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorWithStatsIT.java
index ddf17ba..c7c0b39 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorWithStatsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorWithStatsIT.java
@@ -29,7 +29,7 @@ import java.util.List;
import java.util.Map;
import org.apache.phoenix.compile.StatementContext;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixResultSet;
import org.apache.phoenix.jdbc.PhoenixStatement;
@@ -41,7 +41,7 @@ import org.junit.Test;
import com.google.common.collect.Maps;
-public class RoundRobinResultIteratorWithStatsIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class RoundRobinResultIteratorWithStatsIT extends BaseOwnClusterIT {
@BeforeClass
public static void doSetup() throws Exception {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixMetricsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixMetricsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixMetricsIT.java
index eed0e48..fd6f91a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixMetricsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixMetricsIT.java
@@ -46,7 +46,7 @@ import java.util.Properties;
import java.util.Set;
import org.apache.phoenix.compile.StatementContext;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixResultSet;
import org.apache.phoenix.query.QueryServices;
@@ -61,7 +61,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-public class PhoenixMetricsIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class PhoenixMetricsIT extends BaseOwnClusterIT {
private static final List<String> mutationMetricsToSkip = Lists
.newArrayList(MetricType.MUTATION_COMMIT_TIME.name());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixClientRpcIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixClientRpcIT.java b/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixClientRpcIT.java
index 2ccf490..c015f66 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixClientRpcIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixClientRpcIT.java
@@ -23,7 +23,7 @@ import java.util.Properties;
import org.apache.hadoop.hbase.ipc.CallRunner;
import org.apache.hadoop.hbase.regionserver.RSRpcServices;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
@@ -33,7 +33,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
-public class PhoenixClientRpcIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class PhoenixClientRpcIT extends BaseOwnClusterIT {
private static final String SCHEMA_NAME = "S";
private static final String INDEX_TABLE_NAME = "I";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixServerRpcIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixServerRpcIT.java b/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixServerRpcIT.java
index 75eebc2..6605f16 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixServerRpcIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/rpc/PhoenixServerRpcIT.java
@@ -43,7 +43,7 @@ import org.apache.hadoop.hbase.master.HMaster;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
import org.apache.hadoop.hbase.regionserver.RSRpcServices;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
@@ -53,7 +53,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
-public class PhoenixServerRpcIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class PhoenixServerRpcIT extends BaseOwnClusterIT {
private static final String SCHEMA_NAME = "S";
private static final String INDEX_TABLE_NAME = "I";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/main/java/org/apache/phoenix/util/MetaDataUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/MetaDataUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/MetaDataUtil.java
index 18a0b23..c72e404 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/MetaDataUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/MetaDataUtil.java
@@ -334,6 +334,10 @@ public class MetaDataUtil {
public static String getViewIndexSchemaName(String schemaName) {
return schemaName;
}
+
+ public static String getViewIndexName(String schemaName, String tableName) {
+ return SchemaUtil.getTableName(getViewIndexSchemaName(schemaName), getViewIndexTableName(tableName));
+ }
public static byte[] getIndexPhysicalName(byte[] physicalTableName, String indexPrefix) {
return getIndexPhysicalName(Bytes.toString(physicalTableName), indexPrefix).getBytes();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 57df138..74fa3fa 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -49,7 +49,6 @@ import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.KEYONLY_NAME;
import static org.apache.phoenix.util.TestUtil.MDTEST_NAME;
import static org.apache.phoenix.util.TestUtil.MULTI_CF_NAME;
import static org.apache.phoenix.util.TestUtil.PARENTID1;
@@ -337,9 +336,6 @@ public abstract class BaseTest {
" \"1\".\"value\" integer,\n" +
" \"1\".\"_blah^\" varchar)"
);
- builder.put(KEYONLY_NAME,"create table " + KEYONLY_NAME +
- " (i1 integer not null, i2 integer not null\n" +
- " CONSTRAINT pk PRIMARY KEY (i1,i2))");
builder.put(MDTEST_NAME,"create table " + MDTEST_NAME +
" (id char(1) primary key,\n" +
" a.col1 integer,\n" +
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
index cddd762..5500e7a 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
@@ -569,14 +569,6 @@ public class TestUtil {
return tableStats.getGuidePosts().values();
}
- public static List<KeyRange> getSplits(Connection conn, byte[] lowerRange, byte[] upperRange) throws SQLException {
- return getSplits(conn, STABLE_NAME, STABLE_PK_NAME, lowerRange, upperRange, null, "COUNT(*)");
- }
-
- public static List<KeyRange> getAllSplits(Connection conn) throws SQLException {
- return getAllSplits(conn, STABLE_NAME);
- }
-
public static void analyzeTable(Connection conn, String tableName) throws IOException, SQLException {
analyzeTable(conn, tableName, false);
}
@@ -593,13 +585,8 @@ public class TestUtil {
conn.createStatement().execute(query);
}
- public static void analyzeTableColumns(Connection conn) throws IOException, SQLException {
- String query = "UPDATE STATISTICS " + STABLE_NAME+ " COLUMNS";
- conn.createStatement().execute(query);
- }
-
- public static void analyzeTable(Connection conn) throws IOException, SQLException {
- String query = "UPDATE STATISTICS " + STABLE_NAME;
+ public static void analyzeTableColumns(Connection conn, String tableName) throws IOException, SQLException {
+ String query = "UPDATE STATISTICS " + tableName + " COLUMNS";
conn.createStatement().execute(query);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3c000e2..825c0d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -250,9 +250,6 @@
<execution>
<id>ParallelStatsDisabledTest</id>
<configuration>
- <!--includes>
- <include>TenantIdTypeIT</include>
- </includes-->
<encoding>UTF-8</encoding>
<forkCount>${numForkedIT}</forkCount>
<runOrder>alphabetical</runOrder>
[40/48] phoenix git commit: PHOENIX-3296 ArrayConstructor expression
does not serialize arrays with leading nulls correctly
Posted by ma...@apache.org.
PHOENIX-3296 ArrayConstructor expression does not serialize arrays with leading nulls correctly
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/dfe67196
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/dfe67196
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/dfe67196
Branch: refs/heads/calcite
Commit: dfe671963e0001f0e99767c6a10806d59f3c47fe
Parents: 34ba28e
Author: Thomas D'Silva <td...@salesforce.com>
Authored: Wed Oct 5 20:58:03 2016 -0700
Committer: Thomas D'Silva <td...@salesforce.com>
Committed: Thu Oct 6 21:14:57 2016 -0700
----------------------------------------------------------------------
.../expression/ArrayConstructorExpression.java | 5 +-
.../ArrayConstructorExpressionTest.java | 63 ++++++++++++++++++++
2 files changed, 67 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/dfe67196/phoenix-core/src/main/java/org/apache/phoenix/expression/ArrayConstructorExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/ArrayConstructorExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/ArrayConstructorExpression.java
index d8df29a..c2f4dd2 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/ArrayConstructorExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/ArrayConstructorExpression.java
@@ -31,6 +31,7 @@ import org.apache.phoenix.util.TrustedByteArrayOutputStream;
public class ArrayConstructorExpression extends BaseCompoundExpression {
private PDataType baseType;
private int position = -1;
+ private int nNulls = 0;
private Object[] elements;
private final ImmutableBytesWritable valuePtr = new ImmutableBytesWritable();
private int estimatedSize = 0;
@@ -71,6 +72,7 @@ public class ArrayConstructorExpression extends BaseCompoundExpression {
public void reset() {
super.reset();
position = 0;
+ nNulls = 0;
Arrays.fill(elements, null);
valuePtr.set(ByteUtil.EMPTY_BYTE_ARRAY);
}
@@ -85,7 +87,7 @@ public class ArrayConstructorExpression extends BaseCompoundExpression {
DataOutputStream oStream = new DataOutputStream(byteStream);
try {
int noOfElements = children.size();
- int nNulls = 0;
+ nNulls = 0;
for (int i = position >= 0 ? position : 0; i < elements.length; i++) {
Expression child = children.get(i);
if (!child.evaluate(tuple, ptr)) {
@@ -115,6 +117,7 @@ public class ArrayConstructorExpression extends BaseCompoundExpression {
offsetPos[i] = byteStream.size();
oStream.write(ptr.get(), ptr.getOffset(), ptr.getLength());
oStream.write(PArrayDataType.getSeparatorByte(rowKeyOrderOptimizable, getSortOrder()));
+ nNulls=0;
}
} else { // No nulls for fixed length
oStream.write(ptr.get(), ptr.getOffset(), ptr.getLength());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/dfe67196/phoenix-core/src/test/java/org/apache/phoenix/expression/ArrayConstructorExpressionTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/expression/ArrayConstructorExpressionTest.java b/phoenix-core/src/test/java/org/apache/phoenix/expression/ArrayConstructorExpressionTest.java
new file mode 100644
index 0000000..e99a71c
--- /dev/null
+++ b/phoenix-core/src/test/java/org/apache/phoenix/expression/ArrayConstructorExpressionTest.java
@@ -0,0 +1,63 @@
+/*
+ * 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.expression;
+
+import static org.junit.Assert.assertArrayEquals;
+
+import java.util.List;
+
+import org.apache.phoenix.expression.function.ArrayElemRefExpression;
+import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
+import org.apache.phoenix.schema.types.PVarbinary;
+import org.apache.phoenix.util.ByteUtil;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+public class ArrayConstructorExpressionTest {
+
+ private static final byte[] BYTE_ARRAY1 = new byte[]{1,2,3,4,5};
+ private static final byte[] BYTE_ARRAY2 = new byte[]{6,7,8};
+
+ @Test
+ public void testArraysWithLeadingNulls() throws Exception {
+ List<Expression> children = Lists.newArrayListWithExpectedSize(4);
+ LiteralExpression nullExpression = LiteralExpression.newConstant(null);
+ children.add(nullExpression);
+ children.add(nullExpression);
+ children.add(LiteralExpression.newConstant(BYTE_ARRAY1, PVarbinary.INSTANCE));
+ children.add(LiteralExpression.newConstant(BYTE_ARRAY2, PVarbinary.INSTANCE));
+ ArrayConstructorExpression arrayConstructorExpression = new ArrayConstructorExpression(children, PVarbinary.INSTANCE, false);
+ ImmutableBytesPtr ptr = new ImmutableBytesPtr();
+
+ ArrayElemRefExpression arrayElemRefExpression = new ArrayElemRefExpression(Lists.<Expression>newArrayList(arrayConstructorExpression));
+
+ arrayElemRefExpression.setIndex(1);
+ arrayElemRefExpression.evaluate(null, ptr);
+ assertArrayEquals(ByteUtil.EMPTY_BYTE_ARRAY, ptr.copyBytesIfNecessary());
+ arrayElemRefExpression.setIndex(2);
+ arrayElemRefExpression.evaluate(null, ptr);
+ assertArrayEquals(ByteUtil.EMPTY_BYTE_ARRAY, ptr.copyBytesIfNecessary());
+ arrayElemRefExpression.setIndex(3);
+ arrayElemRefExpression.evaluate(null, ptr);
+ assertArrayEquals(BYTE_ARRAY1, ptr.copyBytesIfNecessary());
+ arrayElemRefExpression.setIndex(4);
+ arrayElemRefExpression.evaluate(null, ptr);
+ assertArrayEquals(BYTE_ARRAY2, ptr.copyBytesIfNecessary());
+ }
+}
[06/48] phoenix git commit: PHOENIX-3308 Shutdown minicluster after
parallel tests complete
Posted by ma...@apache.org.
PHOENIX-3308 Shutdown minicluster after parallel tests complete
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/8174fc44
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/8174fc44
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/8174fc44
Branch: refs/heads/calcite
Commit: 8174fc44b73679fbb292316dac69e774703166f6
Parents: b4b7642
Author: James Taylor <ja...@apache.org>
Authored: Wed Sep 21 12:42:23 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Wed Sep 21 12:42:23 2016 -0700
----------------------------------------------------------------------
.../phoenix/end2end/ParallelRunListener.java | 30 ++++++++++
.../java/org/apache/phoenix/query/BaseTest.java | 17 +++---
pom.xml | 59 ++++++++++++++------
3 files changed, 81 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/8174fc44/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
new file mode 100644
index 0000000..7da6ec5
--- /dev/null
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+import org.apache.phoenix.query.BaseTest;
+import org.junit.runner.Result;
+import org.junit.runner.notification.RunListener;
+
+public class ParallelRunListener extends RunListener {
+ @Override
+ public void testRunFinished(Result result) throws Exception {
+ BaseTest.tearDownMiniCluster();
+ super.testRunFinished(result);
+ }
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/8174fc44/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 74fa3fa..331f977 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -561,14 +561,17 @@ public abstract class BaseTest {
}
protected static void destroyDriver() throws Exception {
- if (driver != null) {
- try {
- assertTrue(destroyDriver(driver));
- } finally {
- driver = null;
+ try {
+ if (driver != null) {
+ try {
+ assertTrue(destroyDriver(driver));
+ } finally {
+ driver = null;
+ }
}
+ } finally {
+ teardownTxManager();
}
- teardownTxManager();
}
protected static void dropNonSystemTables() throws Exception {
@@ -579,7 +582,7 @@ public abstract class BaseTest {
}
}
- protected static void tearDownMiniCluster() throws Exception {
+ public static void tearDownMiniCluster() throws Exception {
try {
destroyDriver();
} finally {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/8174fc44/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 825c0d7..f02eb7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,7 +118,7 @@
<!-- Plugin options -->
<numForkedUT>3</numForkedUT>
- <numForkedIT>7</numForkedIT>
+ <numForkedIT>5</numForkedIT>
<!-- Set default encoding so multi-byte tests work correctly on the Mac -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -241,6 +241,12 @@
<shutdown>kill</shutdown>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.ParallelStatsEnabledTest</groups>
+ <properties>
+ <property>
+ <name>listener</name>
+ <value>org.apache.phoenix.end2end.ParallelRunListener</value>
+ </property>
+ </properties>
</configuration>
<goals>
<goal>integration-test</goal>
@@ -262,6 +268,12 @@
<shutdown>kill</shutdown>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.ParallelStatsDisabledTest</groups>
+ <properties>
+ <property>
+ <name>listener</name>
+ <value>org.apache.phoenix.end2end.ParallelRunListener</value>
+ </property>
+ </properties>
</configuration>
<goals>
<goal>integration-test</goal>
@@ -269,22 +281,28 @@
</goals>
</execution>
<execution>
- <id>ClientManagedTimeTests</id>
- <configuration>
- <encoding>UTF-8</encoding>
- <forkCount>${numForkedIT}</forkCount>
- <runOrder>alphabetical</runOrder>
- <reuseForks>true</reuseForks>
- <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=128m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}"</argLine>
- <redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
- <testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
- <groups>org.apache.phoenix.end2end.ClientManagedTimeTest</groups>
- <shutdown>kill</shutdown>
- </configuration>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
+ <id>ClientManagedTimeTests</id>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ <forkCount>${numForkedIT}</forkCount>
+ <runOrder>alphabetical</runOrder>
+ <reuseForks>true</reuseForks>
+ <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=128m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}"</argLine>
+ <redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
+ <testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
+ <groups>org.apache.phoenix.end2end.ClientManagedTimeTest</groups>
+ <shutdown>kill</shutdown>
+ <properties>
+ <property>
+ <name>listener</name>
+ <value>org.apache.phoenix.end2end.ParallelRunListener</value>
+ </property>
+ </properties>
+ </configuration>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
</execution>
<execution>
<id>HBaseManagedTimeTests</id>
@@ -298,6 +316,12 @@
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.HBaseManagedTimeTest</groups>
<shutdown>kill</shutdown>
+ <properties>
+ <property>
+ <name>listener</name>
+ <value>org.apache.phoenix.end2end.ParallelRunListener</value>
+ </property>
+ </properties>
</configuration>
<goals>
<goal>integration-test</goal>
@@ -418,7 +442,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
- <!--skip>true</skip-->
<forkCount>${numForkedUT}</forkCount>
<reuseForks>true</reuseForks>
<argLine>-enableassertions -Xmx2250m -XX:MaxPermSize=128m
[27/48] phoenix git commit: PHOENIX-3153 Convert join-related IT
tests to be derived from BaseHBaseManagedTimeTableReuseIT
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
index 9cd8a5f..0d42e27 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
@@ -17,15 +17,6 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SCHEMA;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -43,78 +34,25 @@ import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.exception.SQLExceptionCode;
-import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.schema.TableAlreadyExistsException;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
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;
-import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class HashJoinIT extends BaseHBaseManagedTimeIT {
-
- private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- private String[] indexDDL;
- private String[] plans;
-
+public class HashJoinIT extends BaseJoinIT {
public HashJoinIT(String[] indexDDL, String[] plans) {
- this.indexDDL = indexDDL;
- this.plans = plans;
- }
-
- @After
- public void assertNoUnfreedMemory() throws SQLException {
- Connection conn = DriverManager.getConnection(getUrl());
- try {
- long unfreedBytes = conn.unwrap(PhoenixConnection.class).getQueryServices().clearCache();
- assertEquals(0,unfreedBytes);
- } finally {
- conn.close();
- }
- }
-
-
- @BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- @Before
- public void initTable() throws Exception {
- initJoinTableValues(getUrl(), null, null);
- if (indexDDL != null && indexDDL.length > 0) {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- for (String ddl : indexDDL) {
- try {
- conn.createStatement().execute(ddl);
- } catch (TableAlreadyExistsException e) {
- }
- }
- conn.close();
- }
+ super(indexDDL, plans);
}
@Parameters
@@ -128,23 +66,23 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME,
/*
* testLeftJoinWithAggregation()
* SELECT i.item_id iid, sum(quantity) q FROM joinOrderTable o
* LEFT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC"
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.item_id\"]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY",
/*
* testLeftJoinWithAggregation()
@@ -152,44 +90,44 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC NULLS LAST, iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testRightJoinWithAggregation()
* SELECT i.name, sum(quantity) FROM joinOrderTable o
* RIGHT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testRightJoinWithAggregation()
* SELECT i.item_id iid, sum(quantity) q FROM joinOrderTable o
* RIGHT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC NULLS LAST, iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testJoinWithWildcard()
* SELECT * FROM joinItemTable LEFT JOIN joinSupplierTable supp
* ON joinItemTable.supplier_id = supp.supplier_id
* ORDER BY item_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME,
/*
* testJoinPlanWithIndex()
* SELECT item.item_id, item.name, supp.supplier_id, supp.name
@@ -198,10 +136,10 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND (supp.name BETWEEN 'S1' AND 'S5')
* WHERE item.name BETWEEN 'T1' AND 'T5'
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY (NAME >= 'T1' AND NAME <= 'T5')\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY (NAME >= 'S1' AND NAME <= 'S5')",
/*
* testJoinPlanWithIndex()
@@ -211,10 +149,10 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* WHERE (item.name = 'T1' OR item.name = 'T5')
* AND (supp.name = 'S1' OR supp.name = 'S5')
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY (NAME = 'T1' OR NAME = 'T5')\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY (NAME = 'S1' OR NAME = 'S5')",
/*
* testJoinWithSkipMergeOptimization()
@@ -222,12 +160,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinOrderTable o ON o.item_id = i.item_id AND quantity < 5000
* JOIN joinSupplierTable s ON i.supplier_id = s.supplier_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY QUANTITY < 5000\n" +
" PARALLEL INNER-JOIN TABLE 1\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"I.item_id\" IN (\"O.item_id\")",
/*
* testSelfJoin()
@@ -235,9 +173,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i2 ON i1.item_id = i2.item_id
* ORDER BY i1.item_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" DYNAMIC SERVER FILTER BY \"I1.item_id\" IN (\"I2.item_id\")",
/*
@@ -246,11 +184,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i2 ON i1.item_id = i2.supplier_id
* ORDER BY i1.name, i2.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER SORTED BY [I1.NAME, I2.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"I1.item_id\" IN (\"I2.supplier_id\")",
/*
* testStarJoin()
@@ -260,11 +198,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON o.item_id = i.item_id
* ORDER BY order_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 1\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME,
/*
* testStarJoin()
* SELECT (*NO_STAR_JOIN*) order_id, c.name, i.name iname, quantity, o.date
@@ -273,13 +211,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON o.item_id = i.item_id
* ORDER BY order_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER SORTED BY [\"O.order_id\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"I.item_id\" IN (\"O.item_id\")",
/*
* testSubJoin()
@@ -294,17 +232,17 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND i.name != 'T3'
* ORDER BY c.customer_id, i.name
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " [*] - ['0000000005']\n" +
" SERVER SORTED BY [\"C.customer_id\", I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY \"order_id\" != '000000000000003'\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY NAME != 'T3'\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"C.customer_id\" IN (\"O.customer_id\")",
/*
* testJoinWithSubqueryAndAggregation()
@@ -313,11 +251,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.item_id = i.iid
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME,
/*
* testJoinWithSubqueryAndAggregation()
* SELECT o.iid, sum(o.quantity) q
@@ -326,12 +264,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.iid = i.item_id
* GROUP BY o.iid ORDER BY q DESC
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [O.IID]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" +
" PARALLEL LEFT-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY",
/*
* testJoinWithSubqueryAndAggregation()
@@ -341,12 +279,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.iid = i.iid
* ORDER BY o.q DESC NULLS LAST, i.iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER SORTED BY [O.Q DESC NULLS LAST, I.IID]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
/*
@@ -357,12 +295,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.iid = i.iid
* ORDER BY o.q DESC, i.iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER SORTED BY [O.Q DESC, I.IID]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
/*
@@ -384,17 +322,17 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND qo.iname != 'T3'
* ORDER BY c.cid, qo.iname
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " [*] - ['0000000005']\n" +
" SERVER SORTED BY [C.CID, QO.INAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY \"order_id\" != '000000000000003'\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY NAME != 'T3'\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME,
/*
* testJoinWithLimit()
* SELECT order_id, i.name, s.name, s.address, quantity
@@ -402,13 +340,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 4
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER 4 ROW LIMIT\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
* testJoinWithLimit()
@@ -417,12 +355,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 4
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"S.supplier_id\" IN (\"I.supplier_id\")\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
@@ -434,10 +372,10 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN (SELECT order_id, item_id, quantity FROM joinOrderTable) o
* ON o.item_id = i.item_id;
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"I.item_id\" IN (\"O.item_id\")\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
@@ -447,14 +385,14 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 1 OFFSET 2
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER OFFSET 2\n" +
" SERVER 3 ROW LIMIT\n" +
"CLIENT 1 ROW LIMIT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" JOIN-SCANNER 3 ROW LIMIT",
/*
* testJoinWithOffset()
@@ -463,13 +401,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 1 OFFSET 2
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER OFFSET 2\n" +
"CLIENT 1 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"S.supplier_id\" IN (\"I.supplier_id\")\n" +
" JOIN-SCANNER 3 ROW LIMIT",
}});
@@ -485,7 +423,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.0:NAME\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
@@ -497,7 +435,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC"
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.:item_id\"]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" +
@@ -510,12 +448,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC NULLS LAST, iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testRightJoinWithAggregation()
* SELECT i.name, sum(quantity) FROM joinOrderTable o
@@ -526,28 +464,28 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.0:NAME\"]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testRightJoinWithAggregation()
* SELECT i.item_id iid, sum(quantity) q FROM joinOrderTable o
* RIGHT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC NULLS LAST, iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testJoinWithWildcard()
* SELECT * FROM joinItemTable LEFT JOIN joinSupplierTable supp
* ON joinItemTable.supplier_id = supp.supplier_id
* ORDER BY item_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME,
/*
* testJoinPlanWithIndex()
* SELECT item.item_id, item.name, supp.supplier_id, supp.name
@@ -581,7 +519,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
*/
"CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" PARALLEL INNER-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY QUANTITY < 5000\n" +
" PARALLEL INNER-JOIN TABLE 1\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_supplier\n" +
@@ -592,7 +530,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i2 ON i1.item_id = i2.item_id
* ORDER BY i1.item_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
@@ -617,7 +555,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON o.item_id = i.item_id
* ORDER BY order_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_customer\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
@@ -637,7 +575,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
" SERVER SORTED BY [\"O.order_id\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_customer\n" +
" SERVER FILTER BY FIRST KEY ONLY",
@@ -654,17 +592,17 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND i.name != 'T3'
* ORDER BY c.customer_id, i.name
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " [*] - ['0000000005']\n" +
" SERVER SORTED BY [\"C.customer_id\", \"I.0:NAME\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY \"order_id\" != '000000000000003'\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" SERVER FILTER BY \"NAME\" != 'T3'\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"C.customer_id\" IN (\"O.customer_id\")",
/*
* testJoinWithSubqueryAndAggregation()
@@ -673,7 +611,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.item_id = i.iid
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
@@ -687,7 +625,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.iid = i.item_id
* GROUP BY o.iid ORDER BY q DESC
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [O.IID]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" +
@@ -707,7 +645,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
" SERVER SORTED BY [O.Q DESC NULLS LAST, I.IID]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
/*
@@ -723,7 +661,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
" SERVER SORTED BY [O.Q DESC, I.IID]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
/*
@@ -745,17 +683,17 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND qo.iname != 'T3'
* ORDER BY c.cid, qo.iname
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " [*] - ['0000000005']\n" +
" SERVER SORTED BY [C.CID, QO.INAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY \"order_id\" != '000000000000003'\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" SERVER FILTER BY \"NAME\" != 'T3'\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME,
/*
* testJoinWithLimit()
* SELECT order_id, i.name, s.name, s.address, quantity
@@ -763,13 +701,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 4
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER 4 ROW LIMIT\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_SCHEMA + ".idx_item\n" +
" PARALLEL LEFT-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
* testJoinWithLimit()
@@ -778,12 +716,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 4
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_SCHEMA + ".idx_item\n" +
" PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"S.supplier_id\" IN (\"I.0:supplier_id\")\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
@@ -799,7 +737,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
" SERVER FILTER BY FIRST KEY ONLY\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_SCHEMA + ".OrderTable\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
* testJoinWithLimit()
@@ -808,14 +746,14 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 1 OFFSET 2
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER OFFSET 2\n" +
" SERVER 3 ROW LIMIT\n" +
"CLIENT 1 ROW LIMIT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_SCHEMA + ".idx_item\n" +
" PARALLEL LEFT-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" JOIN-SCANNER 3 ROW LIMIT",
/*
* testJoinWithLimit()
@@ -824,13 +762,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 1 OFFSET 2
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER OFFSET 2\n" +
"CLIENT 1 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_SCHEMA + ".idx_item\n" +
" PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"S.supplier_id\" IN (\"I.0:supplier_id\")\n" +
" JOIN-SCANNER 3 ROW LIMIT",
}});
@@ -846,11 +784,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.0:NAME\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_DISPLAY_NAME +" [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_FULL_NAME +" [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
/*
@@ -859,12 +797,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC"
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.:item_id\"]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME +" [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME +" [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
/*
@@ -873,45 +811,45 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC NULLS LAST, iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testRightJoinWithAggregation()
* SELECT i.name, sum(quantity) FROM joinOrderTable o
* RIGHT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME+" [1]\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME+" [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.0:NAME\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testRightJoinWithAggregation()
* SELECT i.item_id iid, sum(quantity) q FROM joinOrderTable o
* RIGHT JOIN joinItemTable i ON o.item_id = i.item_id
* GROUP BY i.item_id ORDER BY q DESC NULLS LAST, iid
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME,
/*
* testJoinWithWildcard()
* SELECT * FROM joinItemTable LEFT JOIN joinSupplierTable supp
* ON joinItemTable.supplier_id = supp.supplier_id
* ORDER BY item_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME,
/*
* testJoinPlanWithIndex()
* SELECT item.item_id, item.name, supp.supplier_id, supp.name
@@ -920,11 +858,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND (supp.name BETWEEN 'S1' AND 'S5')
* WHERE item.name BETWEEN 'T1' AND 'T5'
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1,'T1'] - [1,'T5']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1,'T1'] - [1,'T5']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME +" [1,'S1'] - [1,'S5']\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME +" [1,'S1'] - [1,'S5']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
/*
@@ -935,10 +873,10 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* WHERE (item.name = 'T1' OR item.name = 'T5')
* AND (supp.name = 'S1' OR supp.name = 'S5')
*/
- "CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1,'T1'] - [1,'T5']\n" +
+ "CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1,'T1'] - [1,'T5']\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME +" [1,'S1'] - [1,'S5']\n" +
+ " CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME +" [1,'S1'] - [1,'S5']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
/*
@@ -947,13 +885,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinOrderTable o ON o.item_id = i.item_id AND quantity < 5000
* JOIN joinSupplierTable s ON i.supplier_id = s.supplier_id
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY QUANTITY < 5000\n" +
" PARALLEL INNER-JOIN TABLE 1\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + " [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.:item_id\" IN (\"O.item_id\")",
@@ -963,9 +901,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i2 ON i1.item_id = i2.item_id
* ORDER BY i1.item_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME +" [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME +" [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I1.item_id\" IN (\"I2.:item_id\")",
@@ -975,12 +913,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i2 ON i1.item_id = i2.supplier_id
* ORDER BY i1.name, i2.name
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME +" [1]\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.0:NAME\", \"I2.0:NAME\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME +" [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME +" [1]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I1.:item_id\" IN (\"I2.0:supplier_id\")",
/*
@@ -991,13 +929,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON o.item_id = i.item_id
* ORDER BY order_id
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 1\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
/*
@@ -1008,14 +946,14 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON o.item_id = i.item_id
* ORDER BY order_id
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\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 [\"O.order_id\"]\n"+
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME+" [1]\n"+
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME+" [1]\n"+
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.:item_id\" IN (\"O.item_id\")",
@@ -1032,18 +970,18 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND i.name != 'T3'
* ORDER BY c.customer_id, i.name
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " [*] - ['0000000005']\n" +
" SERVER SORTED BY [\"C.customer_id\", \"I.0:NAME\"]\n"+
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY \"order_id\" != '000000000000003'\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME +" [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME +" [1]\n" +
" SERVER FILTER BY \"NAME\" != 'T3'\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"C.customer_id\" IN (\"O.customer_id\")",
/*
* testJoinWithSubqueryAndAggregation()
@@ -1052,11 +990,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.item_id = i.iid
* GROUP BY i.name ORDER BY i.name
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_DISPLAY_NAME+" [1]\n"+
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_FULL_NAME+" [1]\n"+
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
/*
@@ -1067,12 +1005,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.iid = i.item_id
* GROUP BY o.iid ORDER BY q DESC
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [O.IID]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" +
" PARALLEL LEFT-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " +JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
/*
@@ -1083,12 +1021,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.iid = i.iid
* ORDER BY o.q DESC NULLS LAST, i.iid
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\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 [O.Q DESC NULLS LAST, I.IID]\n"+
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
/*
@@ -1099,12 +1037,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* ON o.iid = i.iid
* ORDER BY o.q DESC, i.iid
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\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 [O.Q DESC, I.IID]\n"+
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
/*
@@ -1126,18 +1064,18 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* AND qo.iname != 'T3'
* ORDER BY c.cid, qo.iname
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " [*] - ['0000000005']\n" +
" SERVER SORTED BY [C.CID, QO.INAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY \"order_id\" != '000000000000003'\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" SERVER FILTER BY \"NAME\" != 'T3'\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME,
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME,
/*
* testJoinWithLimit()
* SELECT order_id, i.name, s.name, s.address, quantity
@@ -1145,14 +1083,14 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 4
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER 4 ROW LIMIT\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
* testJoinWithLimit()
@@ -1161,13 +1099,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 4
*/
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"S.supplier_id\" IN (\"I.0:supplier_id\")\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
@@ -1179,12 +1117,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN (SELECT order_id, item_id, quantity FROM joinOrderTable) o
* ON o.item_id = i.item_id;
*/
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
"CLIENT MERGE SORT\n" +
"CLIENT 4 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"I.:item_id\" IN (\"O.item_id\")\n" +
" JOIN-SCANNER 4 ROW LIMIT",
/*
@@ -1194,15 +1132,15 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* LEFT JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* LEFT JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 1 OFFSET 2
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER OFFSET 2\n" +
" SERVER 3 ROW LIMIT\n" +
"CLIENT 1 ROW LIMIT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" JOIN-SCANNER 3 ROW LIMIT",
/*
* testJoinWithOffset()
@@ -1211,14 +1149,14 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
* JOIN joinItemTable i ON i.supplier_id = s.supplier_id
* JOIN joinOrderTable o ON o.item_id = i.item_id LIMIT 1 OFFSET 2
*/
- "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT SERIAL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER OFFSET 2\n" +
"CLIENT 1 ROW LIMIT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" DYNAMIC SERVER FILTER BY \"S.supplier_id\" IN (\"I.0:supplier_id\")\n" +
" JOIN-SCANNER 3 ROW LIMIT",
}});
@@ -1228,9 +1166,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testDefaultJoin() throws Exception {
- String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1273,9 +1213,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testInnerJoin() throws Exception {
- String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + tableName1 + " item INNER JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1324,12 +1266,14 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testLeftJoin() throws Exception {
- String query[] = new String[3];
- query[0] = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
- query[1] = "SELECT " + JOIN_ITEM_TABLE_FULL_NAME + ".\"item_id\", " + JOIN_ITEM_TABLE_FULL_NAME + ".name, " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".\"supplier_id\", " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " ON " + JOIN_ITEM_TABLE_FULL_NAME + ".\"supplier_id\" = " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".\"supplier_id\" ORDER BY \"item_id\"";
- query[2] = "SELECT item.\"item_id\", " + JOIN_ITEM_TABLE_FULL_NAME + ".name, supp.\"supplier_id\", " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON " + JOIN_ITEM_TABLE_FULL_NAME + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query[] = new String[3];
+ query[0] = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ query[1] = "SELECT " + tableName1 + ".\"item_id\", " + tableName1 + ".name, " + tableName2 + ".\"supplier_id\", " + tableName2 + ".name, next value for " + seqName + " FROM " + tableName1 + " LEFT JOIN " + tableName2 + " ON " + tableName1 + ".\"supplier_id\" = " + tableName2 + ".\"supplier_id\" ORDER BY \"item_id\"";
+ query[2] = "SELECT item.\"item_id\", " + tableName1 + ".name, supp.\"supplier_id\", " + tableName2 + ".name, next value for " + seqName + " FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON " + tableName1 + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
@@ -1381,9 +1325,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testRightJoin() throws Exception {
- String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp RIGHT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " item ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " supp RIGHT JOIN " + tableName2 + " item ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1431,10 +1377,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testInnerJoinWithPreFilters() throws Exception {
- String query1 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005'";
- String query2 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005')";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query1 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item INNER JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005'";
+ String query2 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item INNER JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005')";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -1493,9 +1441,11 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testLeftJoinWithPreFilters() throws Exception {
- String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1543,10 +1493,12 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithPostFilters() throws Exception {
- String query1 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp RIGHT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " item ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005'";
- String query2 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005'";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String query1 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " supp RIGHT JOIN " + tableName2 + " item ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005'";
+ String query2 = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName2 + " item LEFT JOIN " + tableName1 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005'";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -1605,24 +1557,27 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testStarJoin() throws Exception {
- String[] query = new String[5];
- query[0] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[1] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o, "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c, "
- + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[2] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[3] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + JOIN_ORDER_TABLE_FULL_NAME + " o, "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c), "
- + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[4] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o, ("
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c, "
- + JOIN_ITEM_TABLE_FULL_NAME + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String[] query = new String[5];
+ query[0] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName1 + " o JOIN "
+ + tableName2 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + tableName3 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
+ query[1] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName1 + " o, "
+ + tableName2 + " c, "
+ + tableName3 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
+ query[2] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName1 + " o JOIN "
+ + tableName2 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + tableName3 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
+ query[3] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + tableName1 + " o, "
+ + tableName2 + " c), "
+ + tableName3 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
+ query[4] = "SELECT \"order_
<TRUNCATED>
[29/48] phoenix git commit: PHOENIX-3334 ConnectionQueryServicesImpl
should close HConnection if init fails
Posted by ma...@apache.org.
PHOENIX-3334 ConnectionQueryServicesImpl should close HConnection if init fails
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/58596bbc
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/58596bbc
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/58596bbc
Branch: refs/heads/calcite
Commit: 58596bbc416ce577d3407910f1a1000027150d8c
Parents: c6e703d
Author: Samarth <sa...@salesforce.com>
Authored: Tue Sep 27 17:55:54 2016 -0700
Committer: Samarth <sa...@salesforce.com>
Committed: Tue Sep 27 17:55:54 2016 -0700
----------------------------------------------------------------------
.../exception/RetriableUpgradeException.java | 31 ++++++++++++++++++++
.../exception/UpgradeInProgressException.java | 3 +-
.../exception/UpgradeNotRequiredException.java | 3 +-
.../exception/UpgradeRequiredException.java | 3 +-
.../query/ConnectionQueryServicesImpl.java | 24 ++++++++++++++-
5 files changed, 57 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/58596bbc/phoenix-core/src/main/java/org/apache/phoenix/exception/RetriableUpgradeException.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/exception/RetriableUpgradeException.java b/phoenix-core/src/main/java/org/apache/phoenix/exception/RetriableUpgradeException.java
new file mode 100644
index 0000000..b0f747d
--- /dev/null
+++ b/phoenix-core/src/main/java/org/apache/phoenix/exception/RetriableUpgradeException.java
@@ -0,0 +1,31 @@
+/*
+ * 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.exception;
+
+import java.sql.SQLException;
+
+/**
+ *
+ * Super class for upgrade related exceptions whose occurrence shouldn't prevent the
+ * client from retrying or reestablishing connection.
+ */
+public abstract class RetriableUpgradeException extends SQLException {
+ public RetriableUpgradeException(String message, String sqlState, int sqlExceptionCode) {
+ super(message, sqlState, sqlExceptionCode);
+ }
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/58596bbc/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeInProgressException.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeInProgressException.java b/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeInProgressException.java
index 5b15216..08ae304 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeInProgressException.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeInProgressException.java
@@ -17,9 +17,8 @@
*/
package org.apache.phoenix.exception;
-import java.sql.SQLException;
-public class UpgradeInProgressException extends SQLException {
+public class UpgradeInProgressException extends RetriableUpgradeException {
public UpgradeInProgressException(String upgradeFrom, String upgradeTo) {
super("Cluster is being concurrently upgraded from " + upgradeFrom + " to " + upgradeTo
+ ". Please retry establishing connection.", SQLExceptionCode.CONCURRENT_UPGRADE_IN_PROGRESS
http://git-wip-us.apache.org/repos/asf/phoenix/blob/58596bbc/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeNotRequiredException.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeNotRequiredException.java b/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeNotRequiredException.java
index 0490319..7e94977 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeNotRequiredException.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeNotRequiredException.java
@@ -17,9 +17,8 @@
*/
package org.apache.phoenix.exception;
-import java.sql.SQLException;
-public class UpgradeNotRequiredException extends SQLException {
+public class UpgradeNotRequiredException extends RetriableUpgradeException {
public UpgradeNotRequiredException() {
super("Operation not allowed since cluster has already been upgraded. ", SQLExceptionCode.UPGRADE_NOT_REQUIRED
.getSQLState(), SQLExceptionCode.UPGRADE_NOT_REQUIRED.getErrorCode());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/58596bbc/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeRequiredException.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeRequiredException.java b/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeRequiredException.java
index 005a1bd..9352a50 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeRequiredException.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/exception/UpgradeRequiredException.java
@@ -17,9 +17,8 @@
*/
package org.apache.phoenix.exception;
-import java.sql.SQLException;
-public class UpgradeRequiredException extends SQLException {
+public class UpgradeRequiredException extends RetriableUpgradeException {
public UpgradeRequiredException() {
super("Operation not allowed since cluster hasn't been upgraded. Call EXECUTE UPGRADE. ",
http://git-wip-us.apache.org/repos/asf/phoenix/blob/58596bbc/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index dc07220..f5f85e4 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -130,6 +130,7 @@ import org.apache.phoenix.coprocessor.generated.MetaDataProtos.MetaDataResponse;
import org.apache.phoenix.coprocessor.generated.MetaDataProtos.MetaDataService;
import org.apache.phoenix.coprocessor.generated.MetaDataProtos.UpdateIndexStateRequest;
import org.apache.phoenix.exception.PhoenixIOException;
+import org.apache.phoenix.exception.RetriableUpgradeException;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.exception.UpgradeInProgressException;
@@ -2316,8 +2317,11 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
return null;
}
checkClosed();
+ boolean hConnectionEstablished = false;
+ boolean success = false;
try {
openConnection();
+ hConnectionEstablished = true;
boolean isDoNotUpgradePropSet = UpgradeUtil.isNoUpgradeSet(props);
try (HBaseAdmin admin = getAdmin()) {
boolean mappedSystemCatalogExists = admin
@@ -2364,6 +2368,11 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
}
}
scheduleRenewLeaseTasks();
+ success = true;
+ } catch (RetriableUpgradeException e) {
+ // Don't set it as initializationException because otherwise the clien't won't be able
+ // to retry establishing connection.
+ throw e;
} catch (Exception e) {
if (e instanceof SQLException) {
initializationException = (SQLException)e;
@@ -2372,7 +2381,20 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
initializationException = new SQLException(e);
}
} finally {
- initialized = true;
+ try {
+ if (!success && hConnectionEstablished) {
+ connection.close();
+ }
+ } catch (IOException e) {
+ SQLException ex = new SQLException(e);
+ if (initializationException != null) {
+ initializationException.setNextException(ex);
+ } else {
+ initializationException = ex;
+ }
+ } finally {
+ initialized = true;
+ }
}
}
return null;
[17/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java
index 6b53cd5..c61d970 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java
@@ -48,7 +48,7 @@ public class BaseTenantSpecificViewIndexIT extends ParallelStatsDisabledIT {
}
protected void testUpdatableView(Integer saltBuckets, boolean localIndex) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
createBaseTable(tableName, saltBuckets, true);
Connection conn = createTenantConnection(TENANT1_ID);
try {
@@ -61,7 +61,7 @@ public class BaseTenantSpecificViewIndexIT extends ParallelStatsDisabledIT {
}
protected void testUpdatableViewNonString(Integer saltBuckets, boolean localIndex) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
createBaseTable(tableName, saltBuckets, false);
Connection conn = createTenantConnection(NON_STRING_TENANT_ID);
try {
@@ -78,7 +78,7 @@ public class BaseTenantSpecificViewIndexIT extends ParallelStatsDisabledIT {
}
protected void testUpdatableViewsWithSameNameDifferentTenants(Integer saltBuckets, boolean localIndex) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
createBaseTable(tableName, saltBuckets, true);
Connection conn1 = createTenantConnection(TENANT1_ID);
Connection conn2 = createTenantConnection(TENANT2_ID);
@@ -115,7 +115,7 @@ public class BaseTenantSpecificViewIndexIT extends ParallelStatsDisabledIT {
}
private String createAndPopulateTenantView(Connection conn, String tenantId, String baseTable, String valuePrefix) throws SQLException {
- String viewName = generateRandomString();
+ String viewName = generateUniqueName();
String ddl = "CREATE VIEW " + viewName + "(v2 VARCHAR) AS SELECT * FROM " + baseTable + " WHERE k1 = 1";
conn.createStatement().execute(ddl);
tenantViewsToDelete.add(new Pair<String, String>(tenantId, viewName ));
@@ -127,7 +127,7 @@ public class BaseTenantSpecificViewIndexIT extends ParallelStatsDisabledIT {
}
private void createAndVerifyIndex(Connection conn, String viewName, String tableName, Integer saltBuckets, String tenantId, String valuePrefix, boolean localIndex) throws SQLException {
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
if(localIndex){
conn.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + viewName + "(v2)");
} else {
@@ -157,7 +157,7 @@ public class BaseTenantSpecificViewIndexIT extends ParallelStatsDisabledIT {
}
private void createAndVerifyIndexNonStringTenantId(Connection conn, String viewName, String tableName, String tenantId, String valuePrefix) throws SQLException {
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
conn.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + viewName + "(v2)");
conn.createStatement().execute("UPSERT INTO " + viewName + "(k2,v1,v2) VALUES (-1, 'blah', 'superblah')"); // sanity check that we can upsert after index is there
conn.commit();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
index 559c000..686b39f 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
@@ -83,7 +83,7 @@ public abstract class BaseViewIT extends ParallelStatsEnabledIT {
}
this.schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
this.tableDDLOptions = optionBuilder.toString();
- this.tableName = "T_" + generateRandomString();
+ this.tableName = "T_" + generateUniqueName();
this.fullTableName = SchemaUtil.getTableName(schemaName, tableName);
}
@@ -126,7 +126,7 @@ public abstract class BaseViewIT extends ParallelStatsEnabledIT {
tableDDLOptions+=",";
tableDDLOptions+=(" SALT_BUCKETS="+saltBuckets);
}
- String viewName = "V_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, k3 DECIMAL, s VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2, k3))" + tableDDLOptions;
conn.createStatement().execute(ddl);
ddl = "CREATE VIEW " + viewName + " AS SELECT * FROM " + fullTableName + " WHERE k1 = 1";
@@ -180,7 +180,7 @@ public abstract class BaseViewIT extends ParallelStatsEnabledIT {
protected Pair<String,Scan> testUpdatableViewIndex(Integer saltBuckets, boolean localIndex, String viewName) throws Exception {
ResultSet rs;
Connection conn = DriverManager.getConnection(getUrl());
- String viewIndexName1 = "I_" + generateRandomString();
+ String viewIndexName1 = "I_" + generateUniqueName();
String viewIndexPhysicalName = MetaDataUtil.getViewIndexName(schemaName, tableName);
if (localIndex) {
conn.createStatement().execute("CREATE LOCAL INDEX " + viewIndexName1 + " on " + viewName + "(k3)");
@@ -217,7 +217,7 @@ public abstract class BaseViewIT extends ParallelStatsEnabledIT {
queryPlan);
}
- String viewIndexName2 = "I_" + generateRandomString();
+ String viewIndexName2 = "I_" + generateUniqueName();
if (localIndex) {
conn.createStatement().execute("CREATE LOCAL INDEX " + viewIndexName2 + " on " + viewName + "(s)");
} else {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/BinaryRowKeyIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BinaryRowKeyIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BinaryRowKeyIT.java
index 02c27cd..cc43df5 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BinaryRowKeyIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BinaryRowKeyIT.java
@@ -77,7 +77,7 @@ public class BinaryRowKeyIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTableValues(tableName);
conn.setAutoCommit(true);
conn.createStatement().execute("DELETE FROM " + tableName );
@@ -105,7 +105,7 @@ public class BinaryRowKeyIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTableValues(tableName);
String query = "SELECT * FROM " + tableName;
PreparedStatement stmt = conn.prepareStatement(query);
@@ -131,7 +131,7 @@ public class BinaryRowKeyIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTableValues(tableName);
String query = "UPSERT INTO " + tableName + " (a_binary, a_string, b_binary) "
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/CSVCommonsLoaderIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CSVCommonsLoaderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CSVCommonsLoaderIT.java
index 8de2eda..9b5581d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CSVCommonsLoaderIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CSVCommonsLoaderIT.java
@@ -103,7 +103,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
+ "(SYMBOL VARCHAR NOT NULL PRIMARY KEY, COMPANY VARCHAR);";
@@ -147,7 +147,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
PhoenixConnection globalConn = null;
PhoenixConnection tenantConn = null;
try {
- String stockTableMultiName = generateRandomString();
+ String stockTableMultiName = generateUniqueName();
// Create table using the global connection
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableMultiName
@@ -196,7 +196,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
@@ -240,7 +240,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
@@ -285,7 +285,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
@@ -331,7 +331,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
@@ -376,7 +376,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
@@ -420,7 +420,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
@@ -454,7 +454,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
@@ -491,7 +491,7 @@ public class CSVCommonsLoaderIT extends ParallelStatsDisabledIT {
CSVParser parser = null;
PhoenixConnection conn = null;
try {
- String stockTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
// Create table
String statements = "CREATE TABLE IF NOT EXISTS " + stockTableName
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
index 6c5d209..98aa819 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
@@ -38,8 +38,8 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
private static final double ZERO = 1e-8;
- private static final String TEST_SIGNED = generateRandomString();
- private static final String TEST_UNSIGNED = generateRandomString();
+ private static final String TEST_SIGNED = generateUniqueName();
+ private static final String TEST_UNSIGNED = generateUniqueName();
@BeforeClass
public static void initTable() throws Exception {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/CoalesceFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CoalesceFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CoalesceFunctionIT.java
index 89a5fc9..0666f77 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CoalesceFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CoalesceFunctionIT.java
@@ -66,7 +66,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void coalesceWithSumExplicitLong() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID BIGINT NOT NULL, "
+ " COUNT BIGINT "
@@ -90,7 +90,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void coalesceWithSumImplicitLong() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID BIGINT NOT NULL, "
+ " COUNT BIGINT "
@@ -114,7 +114,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void coalesceWithSecondParamAsExpression() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID BIGINT NOT NULL, "
+ " COUNT BIGINT "
@@ -138,7 +138,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nonTypedSecondParameterLong() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID BIGINT NOT NULL, "
@@ -163,7 +163,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nonTypedSecondParameterUnsignedDataTypes() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID BIGINT NOT NULL, "
+ " COUNT UNSIGNED_INT " //first parameter to coalesce
@@ -188,7 +188,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testWithNthValueAggregationFunction() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID BIGINT NOT NULL, "
@@ -220,7 +220,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void wrongDataTypeOfSecondParameter() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID UNSIGNED_INT NOT NULL, "
@@ -247,7 +247,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testImplicitSecondArgCastingException() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID INTEGER NOT NULL, "
@@ -276,7 +276,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testImplicitSecondArgCasting() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "("
+ " ID DOUBLE NOT NULL, "
@@ -302,7 +302,7 @@ public class CoalesceFunctionIT extends ParallelStatsDisabledIT {
public void testCoalesceInRowKeyColumn() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + "(k1 decimal, k2 decimal, constraint pk primary key (k1,k2))");
conn.createStatement().execute("UPSERT INTO " + tableName + "(k2) VALUES (1)");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES (2,2)");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConvertTimezoneFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConvertTimezoneFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConvertTimezoneFunctionIT.java
index be5470e..229e705 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConvertTimezoneFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConvertTimezoneFunctionIT.java
@@ -41,7 +41,7 @@ public class ConvertTimezoneFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testConvertTimezoneEurope() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -61,7 +61,7 @@ public class ConvertTimezoneFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testConvertTimezoneAmerica() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -81,7 +81,7 @@ public class ConvertTimezoneFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nullInDateParameter() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -101,7 +101,7 @@ public class ConvertTimezoneFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nullInFirstTimezoneParameter() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE, tz VARCHAR, CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -121,7 +121,7 @@ public class ConvertTimezoneFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nullInSecondTimezoneParameter() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE, tz VARCHAR, CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -141,7 +141,7 @@ public class ConvertTimezoneFunctionIT extends ParallelStatsDisabledIT {
@Test
public void unknownTimezone() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -166,7 +166,7 @@ public class ConvertTimezoneFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testConvertMultipleRecords() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE CONSTRAINT pk PRIMARY KEY (k1))";
Statement stmt = conn.createStatement();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java
index 97fbaf4..ffcb472 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java
@@ -75,7 +75,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
}
private String initAtable() throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
ensureTableCreated(getUrl(), tableName, ATABLE_NAME, (byte[][])null);
PreparedStatement stmt = conn.prepareStatement(
"upsert into " + tableName +
@@ -295,7 +295,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
java.util.Date dateToday = cal.getTime();
cal.add(Calendar.DAY_OF_YEAR, 1);
java.util.Date dateTomorrow = cal.getTime();
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String today = formatter.format(dateToday);
String tomorrow = formatter.format(dateTomorrow);
String query = "SELECT entity_id FROM " + this.tableName + " WHERE a_integer < 4 AND a_date BETWEEN date '" + today + "' AND date '" + tomorrow + "' ";
@@ -454,7 +454,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testYearFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME, " +
"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))";
@@ -484,7 +484,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testMonthFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME, " +
"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))";
@@ -514,7 +514,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testUnsignedTimeDateWithLiteral() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL," +
"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))";
@@ -535,7 +535,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testSecondFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME, " +
"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))";
@@ -565,7 +565,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testWeekFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -587,7 +587,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testHourFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -612,7 +612,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testNowFunction() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Date date = new Date(System.currentTimeMillis());
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, timestamps TIMESTAMP CONSTRAINT pk PRIMARY KEY (k1))";
@@ -636,7 +636,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testMinuteFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME, " +
"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))";
@@ -663,7 +663,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testDayOfMonthFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -689,7 +689,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
*/
@Test
public void testDayOfWeekFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + tableName + " VALUES (1, TO_DATE('2012-03-08 11:01:10'), TO_TIMESTAMP('2013-06-16 12:02:20'), TO_TIME('2014-09-23 13:03:30'))";
@@ -708,7 +708,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testDayOfYearFuncAgainstColumns() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + tableName + " VALUES (1, TO_DATE('2012-03-01 11:01:10'), TO_TIMESTAMP('2013-02-01 12:02:20'), TO_TIME('2014-01-15 13:03:30'))";
@@ -748,7 +748,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
}
@Test
public void testSelectBetweenNanos() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER NOT NULL PRIMARY KEY, ts " +
"TIMESTAMP(3))";
@@ -772,8 +772,8 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testCurrentTimeWithProjectedTable () throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
String ddl = "CREATE TABLE " + tableName1 + " ( ID integer primary key)";
conn.createStatement().execute(ddl);
ddl = "CREATE TABLE " + tableName2 + " ( ID integer primary key)";
@@ -846,7 +846,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedDateTimestampUnequal() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates DATE, timestamps TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -889,7 +889,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedTimeTimestampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, times TIME, timestamps TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -932,7 +932,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedDateTimeCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates DATE, times TIME)";
conn.createStatement().execute(ddl);
@@ -965,7 +965,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedDateUnsignedTimestampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates DATE, timestamps UNSIGNED_TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -1008,7 +1008,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedTimeUnsignedTimestampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, times TIME, timestamps UNSIGNED_TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -1051,7 +1051,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedDateUnsignedTimeCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates DATE, times UNSIGNED_TIME)";
conn.createStatement().execute(ddl);
@@ -1084,7 +1084,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedDateTimestampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates UNSIGNED_DATE, timestamps TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -1127,7 +1127,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedTimeTimestampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, times UNSIGNED_TIME, timestamps TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -1170,7 +1170,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedDateTimeCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates UNSIGNED_DATE, times TIME)";
conn.createStatement().execute(ddl);
@@ -1203,7 +1203,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedDateUnsignedTimestampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates UNSIGNED_DATE, timestamps UNSIGNED_TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -1246,7 +1246,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedTimeUnsignedTimestampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, times UNSIGNED_TIME, timestamps UNSIGNED_TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -1289,7 +1289,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedDateUnsignedTimeCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, dates UNSIGNED_DATE, times UNSIGNED_TIME)";
conn.createStatement().execute(ddl);
@@ -1322,7 +1322,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedDateDateCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, date1 DATE, date2 DATE)";
conn.createStatement().execute(ddl);
@@ -1355,7 +1355,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedDateUnsignedDateCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, date1 UNSIGNED_DATE, date2 UNSIGNED_DATE)";
conn.createStatement().execute(ddl);
@@ -1388,7 +1388,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedTimeTimeCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, time1 TIME, time2 TIME)";
conn.createStatement().execute(ddl);
@@ -1421,7 +1421,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedTimeUnsignedTimeCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, time1 UNSIGNED_TIME, time2 UNSIGNED_TIME)";
conn.createStatement().execute(ddl);
@@ -1454,7 +1454,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedTimeStampTimeStampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, timestamp1 TIMESTAMP, timestamp2 TIMESTAMP)";
conn.createStatement().execute(ddl);
@@ -1497,7 +1497,7 @@ public class DateTimeIT extends ParallelStatsDisabledIT {
@Test
public void testProjectedUnsignedTimeStampUnsignedTimeStampCompare() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + tableName + " (k1 INTEGER PRIMARY KEY, timestamp1 UNSIGNED_TIMESTAMP, timestamp2 UNSIGNED_TIMESTAMP)";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/DecodeFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DecodeFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DecodeFunctionIT.java
index 424aa7b..a2fc59b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DecodeFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DecodeFunctionIT.java
@@ -41,7 +41,7 @@ public class DecodeFunctionIT extends ParallelStatsDisabledIT {
public void shouldPass() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable
+ " ( some_column BINARY(12) NOT NULL CONSTRAINT PK PRIMARY KEY (some_column))";
@@ -64,7 +64,7 @@ public class DecodeFunctionIT extends ParallelStatsDisabledIT {
public void upperCaseHexEncoding() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable
+ " ( some_column BINARY(12) NOT NULL CONSTRAINT PK PRIMARY KEY (some_column))";
@@ -86,7 +86,7 @@ public class DecodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void invalidCharacters() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable
+ " ( some_column BINARY(12) NOT NULL CONSTRAINT PK PRIMARY KEY (some_column))";
@@ -104,7 +104,7 @@ public class DecodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void invalidLength() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable
+ " ( some_column BINARY(12) NOT NULL CONSTRAINT PK PRIMARY KEY (some_column))";
@@ -122,7 +122,7 @@ public class DecodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nullEncoding() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable
+ " ( some_column BINARY(12) NOT NULL CONSTRAINT PK PRIMARY KEY (some_column))";
@@ -136,7 +136,7 @@ public class DecodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void invalidEncoding() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable
+ " ( some_column BINARY(12) NOT NULL CONSTRAINT PK PRIMARY KEY (some_column))";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
index a289634..9f514b3 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
@@ -42,7 +42,7 @@ public class DeleteIT extends ParallelStatsDisabledIT {
private static final int NTH_ROW_NULL = 5;
private static String initTableValues(Connection conn) throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
ensureTableCreated(getUrl(), tableName, "IntIntKeyTest");
String upsertStmt = "UPSERT INTO " + tableName + " VALUES(?,?)";
PreparedStatement stmt = conn.prepareStatement(upsertStmt);
@@ -157,8 +157,8 @@ public class DeleteIT extends ParallelStatsDisabledIT {
private void testDeleteRange(boolean autoCommit, boolean createIndex, boolean local) throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
String tableName = initTableValues(conn);
- String indexName = generateRandomString();
- String localIndexName = generateRandomString();
+ String indexName = generateUniqueName();
+ String localIndexName = generateUniqueName();
String indexInUse = indexName;
if (createIndex) {
@@ -294,7 +294,7 @@ public class DeleteIT extends ParallelStatsDisabledIT {
con.setAutoCommit(autoCommit);
Statement stm = con.createStatement();
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String s = "CREATE TABLE IF NOT EXISTS " + tableName + "(" +
"HOST CHAR(2) NOT NULL," +
"DOMAIN VARCHAR NOT NULL, " +
@@ -305,8 +305,8 @@ public class DeleteIT extends ParallelStatsDisabledIT {
"STATS.ACTIVE_VISITOR INTEGER " +
"CONSTRAINT PK PRIMARY KEY (HOST, DOMAIN, FEATURE, DATE))" + (isSalted ? " SALT_BUCKETS=3" : "");
stm.execute(s);
- String localIndexName = generateRandomString();
- String indexName = generateRandomString();
+ String localIndexName = generateUniqueName();
+ String indexName = generateUniqueName();
if (localIndex) {
stm.execute("CREATE LOCAL INDEX " + localIndexName + " ON " + tableName + " (CORE,DB,ACTIVE_VISITOR)");
} else {
@@ -372,9 +372,9 @@ public class DeleteIT extends ParallelStatsDisabledIT {
Statement stm = con.createStatement();
- String tableName = generateRandomString();
- String indexName1 = generateRandomString();
- String indexName2 = generateRandomString();
+ String tableName = generateUniqueName();
+ String indexName1 = generateUniqueName();
+ String indexName2 = generateUniqueName();
stm.execute("CREATE TABLE IF NOT EXISTS " + tableName + " (" +
"HOST CHAR(2) NOT NULL," +
@@ -458,7 +458,7 @@ public class DeleteIT extends ParallelStatsDisabledIT {
con = DriverManager.getConnection(getUrl());
con.setAutoCommit(autoCommit);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Statement stm = con.createStatement();
stm.execute("CREATE TABLE IF NOT EXISTS " + tableName + "(" +
@@ -505,13 +505,13 @@ public class DeleteIT extends ParallelStatsDisabledIT {
@Test
public void testDeleteForTableWithRowTimestampColServer() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
testDeleteForTableWithRowTimestampCol(true, tableName);
}
@Test
public void testDeleteForTableWithRowTimestampColClient() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
testDeleteForTableWithRowTimestampCol(false, tableName);
}
@@ -583,7 +583,7 @@ public class DeleteIT extends ParallelStatsDisabledIT {
}
private void testDeleteCount(boolean autoCommit, Integer limit) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " (pk1 DECIMAL NOT NULL, v1 VARCHAR CONSTRAINT PK PRIMARY KEY (pk1))";
int numRecords = 1010;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
index b34c61d..10f970f 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
@@ -57,7 +57,7 @@ public class DisableLocalIndexIT extends ParallelStatsDisabledIT {
public void testDisabledLocalIndexes() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
conn.setAutoCommit(true);
- String baseName = generateRandomString();
+ String baseName = generateUniqueName();
String tableName = baseName+ "_TABLE";
String viewName = baseName + "_VIEW";
String indexName1 = baseName + "_INDEX1";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
index df10c84..87edc25 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
@@ -36,8 +36,8 @@ import org.junit.BeforeClass;
import org.junit.Test;
public class DistinctPrefixFilterIT extends ParallelStatsDisabledIT {
- private static final String testTableF = generateRandomString();
- private static final String testTableV = generateRandomString();
+ private static final String testTableF = generateUniqueName();
+ private static final String testTableV = generateUniqueName();
private static final String testSeq = testTableF + "_seq";
private static final String PREFIX = "SERVER DISTINCT PREFIX";
private static Connection conn;
@@ -110,7 +110,7 @@ public class DistinctPrefixFilterIT extends ParallelStatsDisabledIT {
@Test
public void testCornerCases() throws Exception {
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable +
" (prefix1 INTEGER NOT NULL, prefix2 SMALLINT NOT NULL, prefix3 INTEGER NOT NULL, " +
"col1 FLOAT, CONSTRAINT pk PRIMARY KEY(prefix1, prefix2, prefix3))";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicFamilyIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicFamilyIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicFamilyIT.java
index 0b6a728..866a8d2 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicFamilyIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicFamilyIT.java
@@ -63,7 +63,7 @@ import org.junit.Test;
justification="Designed to ignore.")
public class DynamicFamilyIT extends ParallelStatsDisabledIT {
- private static final String WEB_STATS = generateRandomString();
+ private static final String WEB_STATS = generateUniqueName();
private static final String WEB_STATS_SCHEMA_NAME = "";
private static final byte[] A_CF = Bytes.toBytes(SchemaUtil.normalizeIdentifier("A"));
private static final byte[] B_CF = Bytes.toBytes(SchemaUtil.normalizeIdentifier("B"));
@@ -339,7 +339,7 @@ public class DynamicFamilyIT extends ParallelStatsDisabledIT {
ResultSet rs;
Connection conn = DriverManager.getConnection(getUrl());
conn.setAutoCommit(true);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName
+ " (Id VARCHAR NOT NULL PRIMARY KEY, COLFAM1.A VARCHAR, COLFAM1.B VARCHAR, COLFAM2.A VARCHAR )");
conn.createStatement().execute("UPSERT INTO " + tableName
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicUpsertIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicUpsertIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicUpsertIT.java
index 4cd2c6b..66ff35a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicUpsertIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicUpsertIT.java
@@ -51,7 +51,7 @@ public class DynamicUpsertIT extends ParallelStatsDisabledIT {
@Before
public void doBeforeTestSetup() throws Exception {
- tableName = BaseTest.generateRandomString();
+ tableName = BaseTest.generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
String ddl = "create table " + tableName + " (entry varchar not null primary key,"
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/EncodeFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/EncodeFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/EncodeFunctionIT.java
index b61ac73..7517dd6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/EncodeFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/EncodeFunctionIT.java
@@ -97,7 +97,7 @@ public class EncodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testUpperCaseEncodingType() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " ( pk VARCHAR(10) NOT NULL CONSTRAINT PK PRIMARY KEY (pk))";
conn.createStatement().execute(ddl);
@@ -114,7 +114,7 @@ public class EncodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testNullEncodingType() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " ( pk VARCHAR(10) NOT NULL CONSTRAINT PK PRIMARY KEY (pk))";
conn.createStatement().execute(ddl);
@@ -125,7 +125,7 @@ public class EncodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testUnsupportedEncodingType() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " ( pk VARCHAR(10) NOT NULL CONSTRAINT PK PRIMARY KEY (pk))";
conn.createStatement().execute(ddl);
@@ -140,7 +140,7 @@ public class EncodeFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testInvalidEncodingType() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE " + tableName + " ( some_column BINARY(12) NOT NULL CONSTRAINT PK PRIMARY KEY (some_column))";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/EvaluationOfORIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/EvaluationOfORIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/EvaluationOfORIT.java
index d976d23..1e450de 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/EvaluationOfORIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/EvaluationOfORIT.java
@@ -49,7 +49,7 @@ public class EvaluationOfORIT extends ParallelStatsDisabledIT{
public void testPKOrNotPKInOREvaluation() throws SQLException {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.setAutoCommit(false);
String create = "CREATE TABLE " + tableName + " ( ID INTEGER NOT NULL PRIMARY KEY,NAME VARCHAR(50))";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExecuteStatementsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExecuteStatementsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExecuteStatementsIT.java
index f82fffe..bc21af0 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExecuteStatementsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExecuteStatementsIT.java
@@ -54,7 +54,7 @@ public class ExecuteStatementsIT extends ParallelStatsDisabledIT {
public void testExecuteStatements() throws Exception {
String tenantId = getOrganizationId();
String tableName = initATableValues(tenantId, getDefaultSplits(tenantId), getUrl());
- String ptsdbTableName = generateRandomString();
+ String ptsdbTableName = generateUniqueName();
String statements =
"create table if not exists " + tableName + // Shouldn't error out b/c of if not exists clause
" (organization_id char(15) not null, \n" +
@@ -120,7 +120,7 @@ public class ExecuteStatementsIT extends ParallelStatsDisabledIT {
@Test
public void testCharPadding() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String rowKey = "hello";
String testString = "world";
String query = "create table " + tableName +
@@ -144,7 +144,7 @@ public class ExecuteStatementsIT extends ParallelStatsDisabledIT {
statement.execute();
conn.commit();
- String btableName = generateRandomString();
+ String btableName = generateUniqueName();
ensureTableCreated(getUrl(),btableName, BTABLE_NAME, nextTimestamp()-2);
statement = conn.prepareStatement(
"upsert into " + btableName + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExpFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExpFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExpFunctionEnd2EndIT.java
index 40b0637..4b61bdb 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExpFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExpFunctionEnd2EndIT.java
@@ -45,8 +45,8 @@ public class ExpFunctionEnd2EndIT extends ParallelStatsDisabledIT {
public void initTable() throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
- signedTableName = generateRandomString();
- unsignedTableName = generateRandomString();
+ signedTableName = generateUniqueName();
+ unsignedTableName = generateUniqueName();
try {
conn = DriverManager.getConnection(getUrl());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/FirstValueFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/FirstValueFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FirstValueFunctionIT.java
index e78c130..a2fa244 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/FirstValueFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FirstValueFunctionIT.java
@@ -33,7 +33,7 @@ public class FirstValueFunctionIT extends ParallelStatsDisabledIT {
public void signedLongAsBigInt() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " date BIGINT, \"value\" BIGINT)";
@@ -64,7 +64,7 @@ public class FirstValueFunctionIT extends ParallelStatsDisabledIT {
public void testSortOrderInSortCol() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " "
+ "(id INTEGER NOT NULL, page_id UNSIGNED_LONG,"
+ " dates BIGINT NOT NULL, \"value\" BIGINT CONSTRAINT pk PRIMARY KEY (id, dates DESC))";
@@ -95,7 +95,7 @@ public class FirstValueFunctionIT extends ParallelStatsDisabledIT {
public void testSortOrderInDataCol() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " "
+ "(id INTEGER NOT NULL, page_id UNSIGNED_LONG,"
+ " dates BIGINT NOT NULL, \"value\" BIGINT NOT NULL CONSTRAINT pk PRIMARY KEY (id, dates, \"value\" DESC))";
@@ -126,7 +126,7 @@ public class FirstValueFunctionIT extends ParallelStatsDisabledIT {
public void doubleDataType() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG, "
+ "date DOUBLE, \"value\" DOUBLE)";
@@ -157,7 +157,7 @@ public class FirstValueFunctionIT extends ParallelStatsDisabledIT {
public void varcharFixedLenghtDatatype() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String table_name = generateRandomString();
+ String table_name = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + table_name + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG, "
+ "date VARCHAR(3), \"value\" VARCHAR(3))";
@@ -188,7 +188,7 @@ public class FirstValueFunctionIT extends ParallelStatsDisabledIT {
public void floatDataType() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " date FLOAT, \"value\" FLOAT)";
@@ -220,7 +220,7 @@ public class FirstValueFunctionIT extends ParallelStatsDisabledIT {
public void allColumnsNull() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " date FLOAT, \"value\" FLOAT)";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
index e95ca4c..98d1478 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
@@ -42,7 +42,7 @@ import org.junit.Test;
public class GetSetByteBitFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
- private static final String TABLE_NAME = generateRandomString();
+ private static final String TABLE_NAME = generateUniqueName();
@BeforeClass
public static void initTable() throws Exception {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
index 0acfe02..48b926a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
@@ -69,7 +69,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testExpressionInGroupBy() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = " create table " + tableName + "(tgb_id integer NOT NULL,utc_date_epoch integer NOT NULL,tgb_name varchar(40),ack_success_count integer" +
",ack_success_one_ack_count integer, CONSTRAINT pk_tgb_counter PRIMARY KEY(tgb_id, utc_date_epoch))";
String query = "SELECT tgb_id, tgb_name, (utc_date_epoch/10)*10 AS utc_epoch_hour,SUM(ack_success_count + ack_success_one_ack_count) AS ack_tx_sum" +
@@ -112,7 +112,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testBooleanInGroupBy() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = " create table " + tableName + "(id varchar primary key,v1 boolean, v2 integer, v3 integer)";
createTestTable(getUrl(), ddl);
@@ -162,7 +162,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testScanUri() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initData(conn, tableName);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select uri from " + tableName);
@@ -190,7 +190,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testCount() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initData(conn, tableName);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select count(1) from " + tableName);
@@ -204,7 +204,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testGroupByCase() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String groupBy1 = "select " +
"case when uri LIKE 'Report%' then 'Reports' else 'Other' END category" +
", avg(appcpu) from " + tableName +
@@ -238,7 +238,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + "(\n" +
" a VARCHAR NOT NULL,\n" +
" b VARCHAR,\n" +
@@ -274,7 +274,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testGroupByOrderPreserving() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + "(ORGANIZATION_ID char(15) not null, \n" +
"JOURNEY_ID char(15) not null, \n" +
@@ -319,7 +319,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testGroupByOrderPreservingDescSort() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + " (k1 char(1) not null, k2 char(1) not null, constraint pk primary key (k1,k2)) split on ('ac','jc','nc')");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('a', 'a')");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('a', 'b')");
@@ -357,7 +357,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testSumGroupByOrderPreservingDesc() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
PreparedStatement stmt = conn.prepareStatement("CREATE TABLE " + tableName + " (k1 char(1) not null, k2 integer not null, constraint pk primary key (k1,k2)) split on (?,?,?)");
stmt.setBytes(1, ByteUtil.concat(PChar.INSTANCE.toBytes("a"), PInteger.INSTANCE.toBytes(3)));
@@ -404,7 +404,7 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testAvgGroupByOrderPreserving() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
PreparedStatement stmt = conn.prepareStatement("CREATE TABLE " + tableName + " (k1 char(1) not null, k2 integer not null, constraint pk primary key (k1,k2)) split on (?,?,?)");
stmt.setBytes(1, ByteUtil.concat(PChar.INSTANCE.toBytes("a"), PInteger.INSTANCE.toBytes(3)));
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
index c9530a8..5f04ead 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
@@ -103,8 +103,8 @@ public class HashJoinMoreIT extends ParallelStatsDisabledIT {
@Test
public void testJoinOverSaltedTables() throws Exception {
- String tempTableNoSalting = generateRandomString();
- String tempTableWithSalting = generateRandomString();
+ String tempTableNoSalting = generateUniqueName();
+ String tempTableWithSalting = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -241,8 +241,8 @@ public class HashJoinMoreIT extends ParallelStatsDisabledIT {
@Test
public void testJoinOnDynamicColumns() throws Exception {
- String tableA = generateRandomString();
- String tableB = generateRandomString();
+ String tableA = generateUniqueName();
+ String tableB = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = null;
PreparedStatement stmt = null;
@@ -272,7 +272,7 @@ public class HashJoinMoreIT extends ParallelStatsDisabledIT {
conn.commit();
stmt.close();
- String sequenceB = generateRandomString();
+ String sequenceB = generateUniqueName();
// upsert select dynamic columns in tableB
conn.createStatement().execute("CREATE SEQUENCE " + sequenceB );
String upsertBSelectA = "UPSERT INTO " + tableB + " (pkB, pkA INTEGER)"
@@ -311,7 +311,7 @@ public class HashJoinMoreIT extends ParallelStatsDisabledIT {
@Test
public void testJoinWithKeyRangeOptimization() throws Exception {
- String tempTableWithCompositePK = generateRandomString();
+ String tempTableWithCompositePK = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/InListIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InListIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InListIT.java
index b0c661e..fe88dc8 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InListIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InListIT.java
@@ -51,7 +51,7 @@ public class InListIT extends ParallelStatsDisabledIT {
public void testLeadingPKWithTrailingRVC() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName
+ "( col1 VARCHAR NOT NULL,"
+ " col2 VARCHAR NOT NULL, "
@@ -74,7 +74,7 @@ public class InListIT extends ParallelStatsDisabledIT {
public void testLeadingPKWithTrailingRVC2() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + " ( user VARCHAR, tenant_id VARCHAR(5) NOT NULL,tenant_type_id VARCHAR(3) NOT NULL, id INTEGER NOT NULL CONSTRAINT pk PRIMARY KEY (tenant_id, tenant_type_id, id))");
conn.createStatement().execute("upsert into " + tableName + " (tenant_id, tenant_type_id, id, user) values ('a', 'a', 1, 'BonA')");
@@ -144,7 +144,7 @@ public class InListIT extends ParallelStatsDisabledIT {
* @return the table or view name that should be used to access the created table
*/
private static String initializeAndGetTable(Connection baseConn, Connection conn, boolean isMultiTenant, PDataType pkType, int saltBuckets) throws SQLException {
- String tableName = generateRandomString() + "in_test" + pkType.getSqlTypeName() + saltBuckets + (isMultiTenant ? "_multi" : "_single");
+ String tableName = generateUniqueName() + "in_test" + pkType.getSqlTypeName() + saltBuckets + (isMultiTenant ? "_multi" : "_single");
String tableDDL = createTableDDL(tableName, pkType, saltBuckets, isMultiTenant);
baseConn.createStatement().execute(tableDDL);
@@ -445,7 +445,7 @@ public class InListIT extends ParallelStatsDisabledIT {
public void testWithFixedLengthKV() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + " ( id INTEGER PRIMARY KEY, k CHAR(3))");
conn.createStatement().execute("upsert into " + tableName + " values (1, 'aa')");
@@ -465,7 +465,7 @@ public class InListIT extends ParallelStatsDisabledIT {
private void testWithFixedLengthPK(SortOrder sortOrder) throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + " ( k CHAR(3) PRIMARY KEY " + (sortOrder == SortOrder.DESC ? "DESC" : "") + ")");
conn.createStatement().execute("upsert into " + tableName + " (k) values ('aa')");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
index 8314850..e3a541d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
@@ -120,10 +120,10 @@ public class IndexExtendedIT extends BaseOwnClusterIT {
if (!mutable || transactional) {
return;
}
- String schemaName = generateRandomString();
- String dataTableName = generateRandomString();
+ String schemaName = generateUniqueName();
+ String dataTableName = generateUniqueName();
String dataTableFullName = SchemaUtil.getTableName(schemaName, dataTableName);
- String indexTableName = generateRandomString();
+ String indexTableName = generateUniqueName();
String indexTableFullName = SchemaUtil.getTableName(schemaName, indexTableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -192,10 +192,10 @@ public class IndexExtendedIT extends BaseOwnClusterIT {
@Test
public void testSecondaryIndex() throws Exception {
- String schemaName = generateRandomString();
- String dataTableName = generateRandomString();
+ String schemaName = generateUniqueName();
+ String dataTableName = generateUniqueName();
String dataTableFullName = SchemaUtil.getTableName(schemaName, dataTableName);
- String indexTableName = generateRandomString();
+ String indexTableName = generateUniqueName();
String indexTableFullName = SchemaUtil.getTableName(schemaName, indexTableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -318,10 +318,10 @@ public class IndexExtendedIT extends BaseOwnClusterIT {
if (localIndex) { // TODO: remove this return once PHOENIX-3292 is fixed
return;
}
- String schemaName = generateRandomString();
- String dataTableName = generateRandomString();
+ String schemaName = generateUniqueName();
+ String dataTableName = generateUniqueName();
String dataTableFullName = SchemaUtil.getTableName(schemaName, dataTableName);
- String indexTableName = generateRandomString();
+ String indexTableName = generateUniqueName();
String indexTableFullName = SchemaUtil.getTableName(schemaName, indexTableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -400,9 +400,9 @@ public class IndexExtendedIT extends BaseOwnClusterIT {
if (!localIndex || transactional || mutable || directApi) {
return;
}
- String schemaName = generateRandomString();
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String schemaName = generateUniqueName();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), false);
String indexPhysicalTableName = physicalTableName.getNameAsString();
@@ -502,9 +502,9 @@ public class IndexExtendedIT extends BaseOwnClusterIT {
if (!localIndex || transactional || mutable || directApi) {
return;
}
- String schemaName = generateRandomString();
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String schemaName = generateUniqueName();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), false);
String indexPhysicalTableName = physicalTableName.getNameAsString();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java
index e77499a..270b1ec 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java
@@ -61,7 +61,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testSingleByteInstrAscending() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "ASC", "abcdefghijkl","fgh");
String queryToExecute = "SELECT INSTR(name, 'fgh') FROM " + tableName;
testInstr(conn, queryToExecute, 6);
@@ -70,7 +70,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testSingleByteInstrDescending() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "DESC", "abcdefghijkl","fgh");
String queryToExecute = "SELECT INSTR(name, 'fgh') FROM " + tableName;
testInstr(conn, queryToExecute, 6);
@@ -79,7 +79,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testSingleByteInstrAscendingNoString() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "ASC", "abcde fghijkl","lmn");
String queryToExecute = "SELECT INSTR(name, 'lmn') FROM " + tableName;
testInstr(conn, queryToExecute, 0);
@@ -88,7 +88,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testSingleByteInstrDescendingNoString() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "DESC", "abcde fghijkl","lmn");
String queryToExecute = "SELECT INSTR(name, 'lmn') FROM " + tableName;
testInstr(conn, queryToExecute, 0);
@@ -97,7 +97,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testMultiByteInstrAscending() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "ASC", "A\u025a\u0266FGH","\u025a\u0266");
String queryToExecute = "SELECT INSTR(name, '\u025a\u0266') FROM " + tableName;
testInstr(conn, queryToExecute, 2);
@@ -106,7 +106,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testMultiByteInstrDecending() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "DESC", "A\u025a\u0266FGH","\u025a\u0266");
String queryToExecute = "SELECT INSTR(name, '\u025a\u0266') FROM " + tableName;
testInstr(conn, queryToExecute, 2);
@@ -115,7 +115,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testByteInstrAscendingFilter() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "ASC", "abcdefghijkl","fgh");
String queryToExecute = "select NAME from " + tableName + " where instr(name, 'fgh') > 0";
testInstrFilter(conn, queryToExecute,"abcdefghijkl");
@@ -125,7 +125,7 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testByteInstrDecendingFilter() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, tableName, "DESC", "abcdefghijkl","fgh");
String queryToExecute = "select NAME from " + tableName + " where instr(name, 'fgh') > 0";
testInstrFilter(conn, queryToExecute,"abcdefghijkl");
[43/48] phoenix git commit: Fix merge conflicts
Posted by ma...@apache.org.
Fix merge conflicts
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7ca8e4b3
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7ca8e4b3
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7ca8e4b3
Branch: refs/heads/calcite
Commit: 7ca8e4b39647a056d91b627689d9d496b6136f18
Parents: ac544b4 34ba28e
Author: maryannxue <ma...@gmail.com>
Authored: Fri Oct 7 10:37:45 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Fri Oct 7 10:37:45 2016 -0700
----------------------------------------------------------------------
...ritesAndUncompressedWALInHBase_094_9_IT.java | 45 --
.../apache/phoenix/calcite/BaseCalciteIT.java | 21 +
.../org/apache/phoenix/calcite/CalciteIT.java | 12 +-
.../StatisticsCollectionRunTrackerIT.java | 38 +-
.../phoenix/end2end/AbsFunctionEnd2EndIT.java | 2 +-
.../AlterMultiTenantTableWithViewsIT.java | 16 +-
.../apache/phoenix/end2end/AlterSessionIT.java | 59 +-
.../apache/phoenix/end2end/AlterTableIT.java | 68 +-
.../phoenix/end2end/AlterTableWithViewsIT.java | 30 +-
.../phoenix/end2end/AppendOnlySchemaIT.java | 24 +-
.../phoenix/end2end/ArithmeticQueryIT.java | 36 +-
.../phoenix/end2end/ArrayAppendFunctionIT.java | 18 +-
.../phoenix/end2end/ArrayConcatFunctionIT.java | 16 +-
.../phoenix/end2end/ArrayFillFunctionIT.java | 76 +-
.../phoenix/end2end/ArrayPrependFunctionIT.java | 68 +-
.../end2end/ArrayToStringFunctionIT.java | 22 +-
.../phoenix/end2end/ArraysWithNullsIT.java | 32 +-
.../apache/phoenix/end2end/AutoCommitIT.java | 2 +-
.../phoenix/end2end/AutoPartitionViewsIT.java | 18 +-
.../org/apache/phoenix/end2end/BaseJoinIT.java | 456 +++++++++++
.../BaseOwnClusterClientManagedTimeIT.java | 29 -
.../BaseOwnClusterHBaseManagedTimeIT.java | 29 -
.../phoenix/end2end/BaseOwnClusterIT.java | 7 +
.../apache/phoenix/end2end/BaseParallelIT.java | 69 --
.../end2end/BaseTenantSpecificTablesIT.java | 87 +-
.../end2end/BaseTenantSpecificViewIndexIT.java | 12 +-
.../org/apache/phoenix/end2end/BaseViewIT.java | 92 +--
.../apache/phoenix/end2end/BinaryRowKeyIT.java | 6 +-
.../phoenix/end2end/CSVCommonsLoaderIT.java | 20 +-
.../phoenix/end2end/CbrtFunctionEnd2EndIT.java | 27 +-
.../phoenix/end2end/CoalesceFunctionIT.java | 20 +-
.../end2end/ConvertTimezoneFunctionIT.java | 14 +-
.../end2end/CountDistinctCompressionIT.java | 2 +-
.../phoenix/end2end/CsvBulkLoadToolIT.java | 2 +-
.../org/apache/phoenix/end2end/DateTimeIT.java | 68 +-
.../phoenix/end2end/DecodeFunctionIT.java | 12 +-
.../org/apache/phoenix/end2end/DeleteIT.java | 26 +-
.../phoenix/end2end/DisableLocalIndexIT.java | 26 +-
.../phoenix/end2end/DistinctPrefixFilterIT.java | 26 +-
.../apache/phoenix/end2end/DynamicColumnIT.java | 19 +-
.../apache/phoenix/end2end/DynamicFamilyIT.java | 4 +-
.../apache/phoenix/end2end/DynamicUpsertIT.java | 2 +-
.../phoenix/end2end/EncodeFunctionIT.java | 8 +-
.../phoenix/end2end/EvaluationOfORIT.java | 2 +-
.../phoenix/end2end/ExecuteStatementsIT.java | 6 +-
.../phoenix/end2end/ExpFunctionEnd2EndIT.java | 4 +-
.../phoenix/end2end/FirstValueFunctionIT.java | 14 +-
.../phoenix/end2end/FlappingAlterTableIT.java | 97 +++
.../phoenix/end2end/FlappingLocalIndexIT.java | 300 +++++++
.../end2end/GetSetByteBitFunctionEnd2EndIT.java | 8 +-
.../apache/phoenix/end2end/GroupByCaseIT.java | 59 +-
.../org/apache/phoenix/end2end/HashJoinIT.java | 808 +++++++++----------
.../phoenix/end2end/HashJoinLocalIndexIT.java | 70 +-
.../apache/phoenix/end2end/HashJoinMoreIT.java | 28 +-
.../org/apache/phoenix/end2end/InListIT.java | 10 +-
.../phoenix/end2end/InMemoryOrderByIT.java | 42 -
.../apache/phoenix/end2end/IndexExtendedIT.java | 36 +-
.../apache/phoenix/end2end/InstrFunctionIT.java | 16 +-
.../org/apache/phoenix/end2end/IsNullIT.java | 6 +-
.../org/apache/phoenix/end2end/KeyOnlyIT.java | 127 +--
.../phoenix/end2end/LastValueFunctionIT.java | 22 +-
.../phoenix/end2end/LikeExpressionIT.java | 26 +-
.../phoenix/end2end/LnLogFunctionEnd2EndIT.java | 4 +-
.../apache/phoenix/end2end/MD5FunctionIT.java | 6 +-
.../org/apache/phoenix/end2end/MapReduceIT.java | 8 +-
.../phoenix/end2end/MappingTableDataTypeIT.java | 2 +-
.../end2end/MinMaxAggregateFunctionIT.java | 2 +-
.../phoenix/end2end/ModulusExpressionIT.java | 10 +-
.../phoenix/end2end/MultiCfQueryExecIT.java | 306 +++----
.../end2end/NamespaceSchemaMappingIT.java | 2 +-
.../phoenix/end2end/NthValueFunctionIT.java | 22 +-
.../end2end/OctetLengthFunctionEnd2EndIT.java | 2 +-
.../org/apache/phoenix/end2end/OrderByIT.java | 16 +-
.../phoenix/end2end/ParallelIteratorsIT.java | 112 +--
.../phoenix/end2end/ParallelRunListener.java | 42 +
.../end2end/ParallelStatsDisabledIT.java | 14 +-
.../phoenix/end2end/ParallelStatsEnabledIT.java | 24 +-
.../apache/phoenix/end2end/PercentileIT.java | 15 +-
.../phoenix/end2end/PhoenixRuntimeIT.java | 18 +-
.../phoenix/end2end/PowerFunctionEnd2EndIT.java | 19 +-
.../apache/phoenix/end2end/PrimitiveTypeIT.java | 18 +-
.../org/apache/phoenix/end2end/QueryMoreIT.java | 8 +-
.../apache/phoenix/end2end/QueryTimeoutIT.java | 2 +-
.../phoenix/end2end/QueryWithLimitIT.java | 11 +-
.../phoenix/end2end/QueryWithOffsetIT.java | 78 +-
.../apache/phoenix/end2end/RTrimFunctionIT.java | 2 +-
.../org/apache/phoenix/end2end/ReadOnlyIT.java | 2 +-
.../end2end/RegexpReplaceFunctionIT.java | 2 +-
.../phoenix/end2end/RegexpSplitFunctionIT.java | 2 +-
.../phoenix/end2end/RegexpSubstrFunctionIT.java | 2 +-
.../apache/phoenix/end2end/RenewLeaseIT.java | 2 +-
.../phoenix/end2end/ReverseFunctionIT.java | 2 +-
.../apache/phoenix/end2end/ReverseScanIT.java | 4 +-
.../phoenix/end2end/RoundFloorCeilFuncIT.java | 2 +-
.../phoenix/end2end/SerialIteratorsIT.java | 21 +-
.../phoenix/end2end/ServerExceptionIT.java | 2 +-
.../phoenix/end2end/SignFunctionEnd2EndIT.java | 27 +-
.../end2end/SkipScanAfterManualSplitIT.java | 39 +-
.../apache/phoenix/end2end/SkipScanQueryIT.java | 22 +-
.../apache/phoenix/end2end/SortMergeJoinIT.java | 471 +++++------
.../phoenix/end2end/SortMergeJoinMoreIT.java | 36 +-
.../org/apache/phoenix/end2end/SortOrderIT.java | 88 +-
.../phoenix/end2end/SpillableGroupByIT.java | 127 ++-
.../phoenix/end2end/SpooledOrderByIT.java | 40 -
.../phoenix/end2end/SpooledSortMergeJoinIT.java | 45 --
.../phoenix/end2end/SpooledTmpFileDeleteIT.java | 64 +-
.../phoenix/end2end/SqrtFunctionEnd2EndIT.java | 4 +-
.../phoenix/end2end/StatementHintsIT.java | 2 +-
.../end2end/StatsCollectionDisabledIT.java | 79 --
.../end2end/StatsCollectorAbstractIT.java | 77 --
.../phoenix/end2end/StatsCollectorIT.java | 239 ++++--
.../StatsCollectorWithSplitsAndMultiCFIT.java | 186 -----
.../apache/phoenix/end2end/StoreNullsIT.java | 76 +-
.../org/apache/phoenix/end2end/StringIT.java | 10 +-
.../end2end/StringToArrayFunctionIT.java | 99 +--
.../org/apache/phoenix/end2end/SubqueryIT.java | 297 +++----
.../end2end/SubqueryUsingSortMergeJoinIT.java | 456 ++---------
.../apache/phoenix/end2end/TenantIdTypeIT.java | 2 +-
.../end2end/TenantSpecificTablesDDLIT.java | 272 +++----
.../end2end/TenantSpecificTablesDMLIT.java | 269 ++----
.../end2end/TenantSpecificViewIndexIT.java | 20 +-
.../end2end/TimezoneOffsetFunctionIT.java | 14 +-
.../phoenix/end2end/ToCharFunctionIT.java | 6 +-
.../phoenix/end2end/ToDateFunctionIT.java | 2 +-
.../phoenix/end2end/TransactionalViewIT.java | 57 +-
.../org/apache/phoenix/end2end/UnionAllIT.java | 80 +-
.../org/apache/phoenix/end2end/UpgradeIT.java | 181 +++--
.../phoenix/end2end/UpsertBigValuesIT.java | 8 +-
.../end2end/UpsertSelectAutoCommitIT.java | 10 +-
.../apache/phoenix/end2end/UpsertValuesIT.java | 2 +-
.../org/apache/phoenix/end2end/UseSchemaIT.java | 16 +-
.../phoenix/end2end/UserDefinedFunctionsIT.java | 155 +++-
.../java/org/apache/phoenix/end2end/ViewIT.java | 249 +++---
.../end2end/index/AsyncIndexDisabledIT.java | 17 +-
.../phoenix/end2end/index/BaseLocalIndexIT.java | 80 ++
.../index/ChildViewsUseParentViewIndexIT.java | 20 +-
.../phoenix/end2end/index/DropMetadataIT.java | 64 +-
.../index/GlobalIndexOptimizationIT.java | 48 +-
.../phoenix/end2end/index/ImmutableIndexIT.java | 31 +-
.../index/ImmutableIndexWithStatsIT.java | 26 +-
.../end2end/index/IndexExpressionIT.java | 87 +-
.../apache/phoenix/end2end/index/IndexIT.java | 111 ++-
.../phoenix/end2end/index/IndexMetadataIT.java | 35 +-
.../phoenix/end2end/index/LocalIndexIT.java | 356 +-------
.../end2end/index/MutableIndexFailureIT.java | 6 +-
.../phoenix/end2end/index/MutableIndexIT.java | 93 +--
.../end2end/index/ReadOnlyIndexFailureIT.java | 4 +-
.../phoenix/end2end/index/SaltedIndexIT.java | 43 +-
.../phoenix/end2end/index/ViewIndexIT.java | 33 +-
.../end2end/index/txn/MutableRollbackIT.java | 58 +-
.../phoenix/end2end/index/txn/RollbackIT.java | 33 +-
.../end2end/index/txn/TxWriteFailureIT.java | 4 +-
.../salted/SaltedTableUpsertSelectIT.java | 22 +-
.../salted/SaltedTableVarLengthRowKeyIT.java | 2 +-
.../apache/phoenix/execute/PartialCommitIT.java | 5 +
.../phoenix/iterate/PhoenixQueryTimeoutIT.java | 52 +-
.../iterate/RoundRobinResultIteratorIT.java | 48 +-
.../RoundRobinResultIteratorWithStatsIT.java | 4 +-
.../phoenix/monitoring/PhoenixMetricsIT.java | 4 +-
.../apache/phoenix/rpc/PhoenixClientRpcIT.java | 4 +-
.../apache/phoenix/rpc/PhoenixServerRpcIT.java | 4 +-
.../org/apache/phoenix/rpc/UpdateCacheIT.java | 41 +-
.../phoenix/rpc/UpdateCacheWithScnIT.java | 3 +-
.../apache/phoenix/trace/BaseTracingTestIT.java | 14 -
.../trace/PhoenixTableMetricsWriterIT.java | 4 +-
.../phoenix/trace/PhoenixTraceReaderIT.java | 4 +-
.../phoenix/trace/PhoenixTracingEndToEndIT.java | 24 +-
.../apache/phoenix/trace/TracingTestUtil.java | 8 +-
.../phoenix/tx/FlappingTransactionIT.java | 328 ++++++++
.../org/apache/phoenix/tx/TransactionIT.java | 363 +--------
.../org/apache/phoenix/tx/TxCheckpointIT.java | 51 +-
.../phoenix/calcite/PhoenixPrepareImpl.java | 10 +-
.../phoenix/compile/StatementContext.java | 2 +-
.../coprocessor/MetaDataEndpointImpl.java | 53 ++
.../phoenix/coprocessor/MetaDataProtocol.java | 17 +
.../coprocessor/generated/MetaDataProtos.java | 353 ++++++--
.../coprocessor/generated/PTableProtos.java | 779 +++++++-----------
.../exception/RetriableUpgradeException.java | 31 +
.../exception/UpgradeInProgressException.java | 3 +-
.../exception/UpgradeNotRequiredException.java | 3 +-
.../exception/UpgradeRequiredException.java | 3 +-
.../hbase/index/table/CachingHTableFactory.java | 104 ++-
.../index/table/CoprocessorHTableFactory.java | 6 +
.../hbase/index/table/HTableFactory.java | 4 +-
.../hbase/index/write/IndexWriterUtils.java | 3 +
.../write/ParallelWriterIndexCommitter.java | 21 +-
.../TrackingParallelWriterIndexCommitter.java | 18 +-
.../index/PhoenixIndexFailurePolicy.java | 2 +-
.../apache/phoenix/parse/ParseNodeRewriter.java | 16 +-
.../phoenix/query/ConnectionQueryServices.java | 2 +-
.../query/ConnectionQueryServicesImpl.java | 32 +-
.../query/ConnectionlessQueryServicesImpl.java | 8 +-
.../query/DelegateConnectionQueryServices.java | 4 +-
.../phoenix/query/QueryServicesOptions.java | 8 +-
.../apache/phoenix/schema/MetaDataClient.java | 88 +-
.../org/apache/phoenix/schema/PTableImpl.java | 13 +-
.../java/org/apache/phoenix/util/DateUtil.java | 2 +-
.../org/apache/phoenix/util/MetaDataUtil.java | 4 +
.../java/org/apache/phoenix/util/QueryUtil.java | 2 +-
.../phoenix/compile/JoinQueryCompilerTest.java | 35 +
.../TenantSpecificViewIndexCompileTest.java | 4 +-
.../hbase/index/write/FakeTableFactory.java | 9 +-
.../index/write/TestCachingHTableFactory.java | 37 +-
.../hbase/index/write/TestIndexWriter.java | 24 +-
.../index/write/TestParalleIndexWriter.java | 16 +-
.../write/TestParalleWriterIndexCommitter.java | 15 +-
.../apache/phoenix/jdbc/PhoenixDriverTest.java | 2 +
.../phoenix/jdbc/SecureUserConnectionsTest.java | 27 +-
.../query/BaseConnectionlessQueryTest.java | 28 +-
.../java/org/apache/phoenix/query/BaseTest.java | 413 ++--------
.../phoenix/query/QueryServicesTestImpl.java | 2 +
.../java/org/apache/phoenix/util/TestUtil.java | 101 ++-
.../org/apache/phoenix/flume/PhoenixSinkIT.java | 31 +-
.../phoenix/flume/RegexEventSerializerIT.java | 16 +-
.../apache/phoenix/pherf/ResultBaseTestIT.java | 12 +-
.../apache/phoenix/pherf/SchemaReaderIT.java | 4 +-
.../java/org/apache/phoenix/pig/BasePigIT.java | 6 +-
phoenix-protocol/src/main/MetaDataService.proto | 3 +
phoenix-protocol/src/main/PTable.proto | 2 +
.../phoenix/end2end/QueryServerBasicsIT.java | 2 +-
pom.xml | 101 ++-
221 files changed, 6018 insertions(+), 6555 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
index 75bce4c,0000000..4c89f8d
mode 100644,000000..100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
@@@ -1,737 -1,0 +1,758 @@@
+/*
+ * 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.calcite;
+
+import static org.apache.phoenix.util.PhoenixRuntime.PHOENIX_TEST_DRIVER_URL_PARAM;
+import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.Date;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.text.DecimalFormat;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.calcite.avatica.util.ArrayImpl;
+import org.apache.calcite.config.CalciteConnectionProperty;
+import org.apache.phoenix.calcite.rel.PhoenixRel;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
++import org.apache.phoenix.end2end.BaseJoinIT;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.schema.TableAlreadyExistsException;
+import org.apache.phoenix.util.PhoenixRuntime;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.ReadOnlyProps;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+public class BaseCalciteIT extends BaseHBaseManagedTimeIT {
+
+ @BeforeClass
+ public static void doSetup() throws Exception {
+ Map<String,String> props = Maps.newHashMapWithExpectedSize(5);
+ props.put(QueryServices.STATS_USE_CURRENT_TIME_ATTRIB, Boolean.FALSE.toString());
+ props.put(QueryServices.RUN_UPDATE_STATS_ASYNC, Boolean.FALSE.toString());
+ props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(1000));
+ props.put(QueryServices.THREAD_POOL_SIZE_ATTRIB, Integer.toString(200));
+ setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ }
+
+ public static Start start(boolean materializationEnabled, float rowCountFactor) {
+ return new Start(getConnectionProps(materializationEnabled, rowCountFactor));
+ }
+
+ public static Start start(Properties props) {
+ return new Start(props);
+ }
+
+ public static Start startPhoenixStandalone(Properties props) {
+ return new Start(props) {
+ Connection createConnection() throws Exception {
+ return DriverManager.getConnection(
+ getOldUrl(),
+ props);
+ }
+
+ String getExplainPlanString() {
+ return "explain";
+ }
+ };
+ }
+
+ public static class Start {
+ protected final Properties props;
+ private Connection connection;
+
+ Start(Properties props) {
+ this.props = props;
+ }
+
+ Connection createConnection() throws Exception {
+ // FIXME Cannot get correct stats with 'test=true' property
+ final String testProp = PhoenixRuntime.JDBC_PROTOCOL_TERMINATOR + PHOENIX_TEST_DRIVER_URL_PARAM;
+ final String url = getUrl().replaceAll(testProp, "");
+ return DriverManager.getConnection(url, props);
+ }
+
+ String getExplainPlanString() {
+ return "explain plan for";
+ }
+
+ public Sql sql(String sql) {
+ return new Sql(this, sql);
+ }
+
+ public Connection getConnection() {
+ if (connection == null) {
+ try {
+ connection = createConnection();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return connection;
+ }
+
+ public void commit() {
+ if (connection != null) {
+ try {
+ connection.commit();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ public void close() {
+ if (connection != null) {
+ try {
+ connection.commit();
+ connection.close();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+
+ /** Fluid class for a test that has specified a SQL query. */
+ static class Sql {
+ private final Start start;
+ private final String sql;
+
+ public Sql(Start start, String sql) {
+ this.start = start;
+ this.sql = sql;
+ }
+
+ private static void populateResult(ResultSet resultSet, List<Object[]> list) throws SQLException {
+ final int columnCount = resultSet.getMetaData().getColumnCount();
+ while (resultSet.next()) {
+ Object[] row = new Object[columnCount];
+ for (int i = 0; i < columnCount; i++) {
+ row[i] = resultSet.getObject(i + 1);
+ }
+ list.add(row);
+ }
+ }
+
+ public Sql explainIs(String expected) throws SQLException {
+ return checkExplain(expected, true);
+ }
+
+ public Sql explainMatches(String expected) throws SQLException {
+ return checkExplain(expected, false);
+ }
+
+ private Sql checkExplain(String expected, boolean exact) throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ final ResultSet resultSet = statement.executeQuery(start.getExplainPlanString() + " " + sql);
+ String explain = QueryUtil.getExplainPlan(resultSet);
+ resultSet.close();
+ statement.close();
+ if (exact) {
+ Assert.assertEquals(explain, expected);
+ } else {
+ Assert.assertTrue(
+ "Explain plan \"" + explain
+ + "\" does not match \"" + expected + "\"",
+ explain.matches(expected));
+ }
+ return this;
+ }
+
+ public List<Object[]> getResult() throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ final ResultSet resultSet = statement.executeQuery(sql);
+ final List<Object[]> list = Lists.newArrayList();
+ populateResult(resultSet, list);
+ resultSet.close();
+ statement.close();
+ return list;
+ }
+
+ public Sql execute() throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ statement.execute(sql);
+ statement.close();
+ return this;
+ }
+
+ public Sql executeUpdate() throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ statement.executeUpdate(sql);
+ statement.close();
+ return this;
+ }
+
+ public PreparedStatement prepareStatement() throws SQLException {
+ return start.getConnection().prepareStatement(sql);
+ }
+
+ public void commit() {
+ start.commit();
+ }
+
+ public void close() {
+ start.close();
+ }
+
+ public Sql resultIs(Object[][] expected) throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ final ResultSet resultSet = statement.executeQuery(sql);
+ checkResultOrdered(resultSet, expected);
+ resultSet.close();
+ statement.close();
+ return this;
+ }
+
+ public Sql resultIs(int orderedCount, Object[][] expected) throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ final ResultSet resultSet = statement.executeQuery(sql);
+ checkResultUnordered(resultSet, expected, orderedCount, null);
+ resultSet.close();
+ statement.close();
+ return this;
+ }
+
+ public Sql resultIsSomeOf(int count, Object[][] expected) throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ final ResultSet resultSet = statement.executeQuery(sql);
+ checkResultUnordered(resultSet, expected, 0, count);
+ resultSet.close();
+ statement.close();
+ return this;
+ }
+
+ public Sql sameResultAsPhoenixStandalone() throws SQLException {
+ Start phoenixStart = startPhoenixStandalone(this.start.props);
+ List<Object[]> result = phoenixStart.sql(this.sql).getResult();
+ phoenixStart.close();
+ return resultIs(result.toArray(new Object[result.size()][]));
+ }
+
+ public Sql sameResultAsPhoenixStandalone(int orderedCount) throws SQLException {
+ Start phoenixStart = startPhoenixStandalone(this.start.props);
+ List<Object[]> result = phoenixStart.sql(this.sql).getResult();
+ phoenixStart.close();
+ return resultIs(orderedCount, result.toArray(new Object[result.size()][]));
+ }
+
+ private void checkResultOrdered(ResultSet resultSet, Object[][] expected) throws SQLException {
+ int expectedCount = expected.length;
+ int count = 0;
+ for (int i = 0; i < expectedCount; i++) {
+ assertTrue(
+ "Expected " + expectedCount + " rows, but got " + count + " rows.",
+ resultSet.next());
+ count++;
+ Object[] row = expected[i];
+ for (int j = 0; j < row.length; j++) {
+ Object obj = resultSet.getObject(j + 1);
+ Assert.assertEquals(canonicalize(row[j]), canonicalize(obj));
+ }
+ }
+ assertFalse("Got more rows than expected.", resultSet.next());
+ }
+
+ private void checkResultUnordered(ResultSet resultSet, Object[][] expected, int orderedCount, Integer checkContains) throws SQLException {
+ List<List<Object>> expectedResults = Lists.newArrayList();
+ List<List<Object>> actualResults = Lists.newArrayList();
+ List<List<Object>> errorResults = Lists.newArrayList();
+ int columnCount = expected.length > 0 ? expected[0].length : 0;
+ for (Object[] e : expected) {
+ List<Object> row = Lists.newArrayList();
+ for (int i = orderedCount; i < e.length; i++) {
+ row.add(canonicalize(e[i]));
+ }
+ expectedResults.add(row);
+ }
+ while (resultSet.next()) {
+ if (actualResults.size() >= expected.length) {
+ fail("Got more rows than expected after getting results: " + actualResults);
+ }
+ // check the ordered part
+ Object[] row = expected[actualResults.size()];
+ for (int i = 0; i < orderedCount; i++) {
+ Object obj = resultSet.getObject(i + 1);
+ Assert.assertEquals(canonicalize(row[i]), canonicalize(obj));
+ }
+ // check the unordered part
+ List<Object> result = Lists.newArrayList();
+ for (int i = orderedCount; i < columnCount; i++) {
+ result.add(canonicalize(resultSet.getObject(i+1)));
+ }
+ if (!expectedResults.remove(result)) {
+ errorResults.add(result);
+ }
+ actualResults.add(result);
+ }
+ boolean allContainedInExpected = errorResults.isEmpty();
+ boolean allExpectedFound = checkContains == null ? expectedResults.isEmpty() : checkContains == actualResults.size();
+ assertTrue(
+ (allContainedInExpected ? "" : "Could not find " + errorResults + " in expected results.\n") +
+ (allExpectedFound ? "" :
+ (checkContains == null
+ ? ("Count not find " + expectedResults + " in actual results: " + actualResults + ".\n")
+ : ("Expected " + checkContains + " rows, but got " + actualResults.size() + " rows."))),
+ allContainedInExpected && allExpectedFound);
+ }
+
+ private Object canonicalize(Object obj) {
+ if (obj == null) {
+ return obj;
+ }
+
+ if (obj instanceof ArrayImpl) {
+ return obj.toString();
+ }
+
+ if (obj.getClass().isArray()) {
+ final StringBuilder buf = new StringBuilder("[");
+ for (Object o : (Object[]) obj) {
+ if (buf.length() > 1) {
+ buf.append(", ");
+ }
+ String s = o.toString();
+ // Remove nano suffix
+ if (o instanceof Timestamp) {
+ s = s.substring(0, s.lastIndexOf('.'));
+ }
+ buf.append(s);
+ }
+ return buf.append("]").toString();
+ }
+
+ return obj;
+ }
+ }
+
+ private static final String FOODMART_SCHEMA = " {\n"
+ + " type: 'jdbc',\n"
+ + " name: 'foodmart',\n"
+ + " jdbcDriver: 'org.hsqldb.jdbcDriver',\n"
+ + " jdbcUser: 'FOODMART',\n"
+ + " jdbcPassword: 'FOODMART',\n"
+ + " jdbcUrl: 'jdbc:hsqldb:res:foodmart',\n"
+ + " jdbcCatalog: null,\n"
+ + " jdbcSchema: 'foodmart'\n"
+ + " }";
+
+ private static final String getPhoenixSchema() {
+ return " {\n"
+ + " name: 'phoenix',\n"
+ + " type: 'custom',\n"
+ + " factory: 'org.apache.phoenix.calcite.PhoenixSchema$Factory',\n"
+ + " operand: {\n"
+ + " url: \"" + getOldUrl() + "\"\n"
+ + " }\n"
+ + " }";
+ }
+
+ protected static Connection connectUsingModel(Properties props) throws Exception {
+ final File file = File.createTempFile("model", ".json");
+ final String url = getOldUrl();
+ final PrintWriter pw = new PrintWriter(new FileWriter(file));
+ pw.print(
+ "{\n"
+ + " version: '1.0',\n"
+ + " defaultSchema: 'HR',\n"
+ + " schemas: [\n"
+ + " {\n"
+ + " name: 'HR',\n"
+ + " type: 'custom',\n"
+ + " factory: 'org.apache.phoenix.calcite.PhoenixSchema$Factory',\n"
+ + " operand: {\n"
+ + " url: \"" + url + "\",\n"
+ + " user: \"scott\",\n"
+ + " password: \"tiger\"\n"
+ + " }\n"
+ + " }\n"
+ + " ]\n"
+ + "}\n");
+ pw.close();
+ final Connection connection =
+ DriverManager.getConnection("jdbc:phoenixcalcite:model=" + file.getAbsolutePath(), props);
+ return connection;
+ }
+
+ protected static Connection connectWithHsqldbUsingModel(Properties props) throws Exception {
+ final File file = File.createTempFile("model", ".json");
+ final PrintWriter pw = new PrintWriter(new FileWriter(file));
+ pw.print(
+ "{\n"
+ + " version: '1.0',\n"
+ + " defaultSchema: 'phoenix',\n"
+ + " schemas: [\n"
+ + getPhoenixSchema() + ",\n"
+ + FOODMART_SCHEMA + "\n"
+ + " ]\n"
+ + "}\n");
+ pw.close();
+ final Connection connection =
+ DriverManager.getConnection("jdbc:phoenixcalcite:model=" + file.getAbsolutePath(), props);
+ return connection;
+ }
+
+ protected static Properties getConnectionProps(boolean enableMaterialization, float rowCountFactor) {
+ Properties props = new Properties();
+ if (!enableMaterialization) {
+ props.setProperty(
+ CalciteConnectionProperty.MATERIALIZATIONS_ENABLED.camelName(),
+ Boolean.toString(enableMaterialization));
+ }
+ props.setProperty(
+ CalciteConnectionProperty.CREATE_MATERIALIZATIONS.camelName(),
+ Boolean.toString(false));
+ props.setProperty(PhoenixRel.ROW_COUNT_FACTOR, Float.toString(rowCountFactor));
+ return props;
+ }
+
+ protected static final String SCORES_TABLE_NAME = "scores";
+
++ protected void initJoinTableValues(String url) throws Exception {
++ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
++ Connection conn = DriverManager.getConnection(url, props);
++ try {
++ for (String tableName : new String[] {
++ BaseJoinIT.JOIN_CUSTOMER_TABLE_FULL_NAME,
++ BaseJoinIT.JOIN_ITEM_TABLE_FULL_NAME,
++ BaseJoinIT.JOIN_ORDER_TABLE_FULL_NAME,
++ BaseJoinIT.JOIN_SUPPLIER_TABLE_FULL_NAME}) {
++ try {
++ BaseJoinIT.createTable(conn, tableName, tableName);
++ } catch (TableAlreadyExistsException e) {
++ }
++ BaseJoinIT.initValues(conn, tableName, tableName);
++ }
++ } finally {
++ conn.close();
++ }
++ }
++
+ protected void initArrayTable(String url) throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(url, props);
+ try {
+ conn.createStatement().execute(
+ "CREATE TABLE " + SCORES_TABLE_NAME
+ + "(student_id INTEGER NOT NULL, subject_id INTEGER NOT NULL, scores INTEGER[], exam_date DATE[], exam_time TIME[], exam_timestamp TIMESTAMP[] CONSTRAINT pk PRIMARY KEY (student_id, subject_id))");
+ PreparedStatement stmt = conn.prepareStatement(
+ "UPSERT INTO " + SCORES_TABLE_NAME
+ + " VALUES(?, ?, ?, ?, ?, ?)");
+ stmt.setInt(1, 1);
+ stmt.setInt(2, 1);
+ stmt.setArray(3, conn.createArrayOf("INTEGER", new Integer[] {85, 80, 82}));
+ stmt.setArray(4, conn.createArrayOf("DATE", new Date[] {Date.valueOf("2016-3-22"), Date.valueOf("2016-5-23"), Date.valueOf("2016-7-24")}));
+ stmt.setArray(5, conn.createArrayOf("TIME", new Time[] {Time.valueOf("15:30:28"), Time.valueOf("13:26:50"), Time.valueOf("16:20:00")}));
+ stmt.setArray(6, conn.createArrayOf("TIMESTAMP", new Timestamp[] {Timestamp.valueOf("2016-3-22 15:30:28"), Timestamp.valueOf("2016-5-23 13:26:50"), Timestamp.valueOf("2016-7-24 16:20:00")}));
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setInt(2, 1);
+ stmt.setArray(3, null);
+ stmt.setArray(4, null);
+ stmt.setArray(5, null);
+ stmt.setArray(6, null);
+ stmt.execute();
+ stmt.setInt(1, 3);
+ stmt.setInt(2, 2);
+ stmt.setArray(3, conn.createArrayOf("INTEGER", new Integer[] {87, 88, 80}));
+ stmt.setArray(4, conn.createArrayOf("DATE", new Date[] {Date.valueOf("2016-3-22"), Date.valueOf("2016-5-23"), Date.valueOf("2016-7-24")}));
+ stmt.setArray(5, conn.createArrayOf("TIME", new Time[] {Time.valueOf("15:30:16"), Time.valueOf("13:26:52"), Time.valueOf("16:20:40")}));
+ stmt.setArray(6, conn.createArrayOf("TIMESTAMP", new Timestamp[] {Timestamp.valueOf("2016-3-22 15:30:16"), Timestamp.valueOf("2016-5-23 13:26:52"), Timestamp.valueOf("2016-7-24 16:20:40")}));
+ stmt.execute();
+ conn.commit();
+ } catch (TableAlreadyExistsException e) {
+ }
+ conn.close();
+ }
+
+ protected static final String NOSALT_TABLE_NAME = "nosalt_test_table";
+ protected static final String NOSALT_TABLE_SALTED_INDEX_NAME = "idxsalted_nosalt_test_table";
+ protected static final String SALTED_TABLE_NAME = "salted_test_table";
+ protected static final String SALTED_TABLE_NOSALT_INDEX_NAME = "idx_salted_test_table";
+ protected static final String SALTED_TABLE_SALTED_INDEX_NAME = "idxsalted_salted_test_table";
+
+ protected void initSaltedTables(String url, String index) throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(url, props);
+ try {
+ conn.createStatement().execute(
+ "CREATE TABLE " + NOSALT_TABLE_NAME + " (mypk0 INTEGER NOT NULL, mypk1 INTEGER NOT NULL, col0 INTEGER, col1 INTEGER CONSTRAINT pk PRIMARY KEY (mypk0, mypk1))");
+ PreparedStatement stmt = conn.prepareStatement(
+ "UPSERT INTO " + NOSALT_TABLE_NAME
+ + " VALUES(?, ?, ?, ?)");
+ for (int i = 0; i < 1000; i++) {
+ stmt.setInt(1, i + 1);
+ stmt.setInt(2, i + 2);
+ stmt.setInt(3, i + 3);
+ stmt.setInt(4, i + 4);
+ stmt.execute();
+ }
+ conn.commit();
+
+ if (index != null) {
+ conn.createStatement().execute(
+ "CREATE " + index + " " + NOSALT_TABLE_SALTED_INDEX_NAME + " ON " + NOSALT_TABLE_NAME + " (col0)"
+ + (index.toUpperCase().startsWith("LOCAL") ? "" : " SALT_BUCKETS=4"));
+ conn.commit();
+ }
+
+ conn.createStatement().execute(
+ "CREATE TABLE " + SALTED_TABLE_NAME + " (mypk0 INTEGER NOT NULL, mypk1 INTEGER NOT NULL, col0 INTEGER, col1 INTEGER CONSTRAINT pk PRIMARY KEY (mypk0, mypk1)) SALT_BUCKETS=4");
+ stmt = conn.prepareStatement(
+ "UPSERT INTO " + SALTED_TABLE_NAME
+ + " VALUES(?, ?, ?, ?)");
+ for (int i = 0; i < 1000; i++) {
+ stmt.setInt(1, i + 1);
+ stmt.setInt(2, i + 2);
+ stmt.setInt(3, i + 3);
+ stmt.setInt(4, i + 4);
+ stmt.execute();
+ }
+ conn.commit();
+
+ if (index != null) {
+ conn.createStatement().execute("CREATE " + index + " " + SALTED_TABLE_NOSALT_INDEX_NAME + " ON " + SALTED_TABLE_NAME + " (col0)");
+ conn.createStatement().execute(
+ "CREATE " + index + " " + SALTED_TABLE_SALTED_INDEX_NAME + " ON " + SALTED_TABLE_NAME + " (col1) INCLUDE (col0)"
+ + (index.toUpperCase().startsWith("LOCAL") ? "" : " SALT_BUCKETS=4"));
+ conn.commit();
+ }
+ } catch (TableAlreadyExistsException e) {
+ }
+ conn.close();
+ }
+
+ protected static final String KEY_ORDERING_TABLE_1_NAME = "key_ordering_test_table_1";
+ protected static final String KEY_ORDERING_TABLE_2_NAME = "key_ordering_test_table_2";
+
+ protected void initKeyOrderingTable(String url) throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(url, props);
+ try {
+ conn.createStatement().execute(
+ "CREATE TABLE " + KEY_ORDERING_TABLE_1_NAME
+ + "(k0 BIGINT NOT NULL, k1 INTEGER NOT NULL, v0 INTEGER, v1 BIGINT CONSTRAINT pk PRIMARY KEY (k0 DESC, k1))");
+ conn.createStatement().execute(
+ "CREATE TABLE " + KEY_ORDERING_TABLE_2_NAME
+ + "(k0 BIGINT NOT NULL, k1 BIGINT NOT NULL, v0 INTEGER, v1 BIGINT CONSTRAINT pk PRIMARY KEY (k0 DESC, k1 DESC))");
+ PreparedStatement stmt = conn.prepareStatement(
+ "UPSERT INTO " + KEY_ORDERING_TABLE_1_NAME
+ + " VALUES(?, ?, ?, ?)");
+ stmt.setInt(1, 1);
+ stmt.setInt(2, 2);
+ stmt.setInt(3, 1);
+ stmt.setInt(4, 2);
+ stmt.execute();
+ stmt.setInt(1, 1);
+ stmt.setInt(2, 3);
+ stmt.setInt(3, 1);
+ stmt.setInt(4, 3);
+ stmt.execute();
+ stmt.setInt(1, 1);
+ stmt.setInt(2, 4);
+ stmt.setInt(3, 1);
+ stmt.setInt(4, 4);
+ stmt.execute();
+ stmt.setInt(1, 1);
+ stmt.setInt(2, 5);
+ stmt.setInt(3, 1);
+ stmt.setInt(4, 5);
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setInt(2, 3);
+ stmt.setInt(3, 2);
+ stmt.setInt(4, 3);
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setInt(2, 5);
+ stmt.setInt(3, 2);
+ stmt.setInt(4, 5);
+ stmt.execute();
+ stmt.setInt(1, 3);
+ stmt.setInt(2, 2);
+ stmt.setInt(3, 3);
+ stmt.setInt(4, 2);
+ stmt.execute();
+ stmt.setInt(1, 5);
+ stmt.setInt(2, 2);
+ stmt.setInt(3, 5);
+ stmt.setInt(4, 2);
+ stmt.execute();
+ stmt.setInt(1, 5);
+ stmt.setInt(2, 5);
+ stmt.setInt(3, 5);
+ stmt.setInt(4, 5);
+ stmt.execute();
+ conn.commit();
+ stmt = conn.prepareStatement(
+ "UPSERT INTO " + KEY_ORDERING_TABLE_2_NAME
+ + " VALUES(?, ?, ?, ?)");
+ stmt.setInt(1, 1);
+ stmt.setInt(2, 2);
+ stmt.setInt(3, 1);
+ stmt.setInt(4, 2);
+ stmt.execute();
+ stmt.setInt(1, 1);
+ stmt.setInt(2, 5);
+ stmt.setInt(3, 1);
+ stmt.setInt(4, 5);
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setInt(2, 2);
+ stmt.setInt(3, 2);
+ stmt.setInt(4, 2);
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setInt(2, 3);
+ stmt.setInt(3, 2);
+ stmt.setInt(4, 3);
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setInt(2, 4);
+ stmt.setInt(3, 2);
+ stmt.setInt(4, 4);
+ stmt.execute();
+ stmt.setInt(1, 2);
+ stmt.setInt(2, 5);
+ stmt.setInt(3, 2);
+ stmt.setInt(4, 5);
+ stmt.execute();
+ stmt.setInt(1, 4);
+ stmt.setInt(2, 3);
+ stmt.setInt(3, 4);
+ stmt.setInt(4, 3);
+ stmt.execute();
+ stmt.setInt(1, 5);
+ stmt.setInt(2, 4);
+ stmt.setInt(3, 5);
+ stmt.setInt(4, 4);
+ stmt.execute();
+ stmt.setInt(1, 5);
+ stmt.setInt(2, 5);
+ stmt.setInt(3, 5);
+ stmt.setInt(4, 5);
+ stmt.execute();
+ conn.commit();
+ } catch (TableAlreadyExistsException e) {
+ }
+ conn.close();
+ }
+
+ protected static final String MULTI_TENANT_TABLE = "multitenant_test_table";
+ protected static final String MULTI_TENANT_TABLE_INDEX = "idx_multitenant_test_table";
+ protected static final String MULTI_TENANT_VIEW1 = "s1.multitenant_test_view1";
+ protected static final String MULTI_TENANT_VIEW1_INDEX = "idx_multitenant_test_view1";
+ protected static final String MULTI_TENANT_VIEW2 = "s2.multitenant_test_view2";
+ protected static final String MULTI_TENANT_VIEW2_INDEX = "idx_multitenant_test_view2";
+
+ protected void initMultiTenantTables(String url, String index) throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(url, props);
+ try {
+ conn.createStatement().execute(
+ "CREATE TABLE " + MULTI_TENANT_TABLE + " (tenant_id VARCHAR NOT NULL, id VARCHAR NOT NULL, col0 INTEGER, col1 INTEGER, col2 INTEGER CONSTRAINT pk PRIMARY KEY (tenant_id, id)) MULTI_TENANT=true");
+ PreparedStatement stmt = conn.prepareStatement(
+ "UPSERT INTO " + MULTI_TENANT_TABLE
+ + " VALUES(?, ?, ?, ?, ?)");
+ DecimalFormat formatter = new DecimalFormat("0000");
+ for (int i = 0; i < 1000; i++) {
+ stmt.setString(1, "10");
+ stmt.setString(2, formatter.format(2 + i));
+ stmt.setInt(3, 3 + i);
+ stmt.setInt(4, 4 + i);
+ stmt.setInt(5, 5 + i);
+ stmt.execute();
+ }
+ for (int i = 0; i < 1000; i++) {
+ stmt.setString(1, "15");
+ stmt.setString(2, formatter.format(3 + i));
+ stmt.setInt(3, 4 + i);
+ stmt.setInt(4, 5 + i);
+ stmt.setInt(5, 6 + i);
+ stmt.execute();
+ }
+ for (int i = 0; i < 1000; i++) {
+ stmt.setString(1, "20");
+ stmt.setString(2, formatter.format(4 + i));
+ stmt.setInt(3, 5 + i);
+ stmt.setInt(4, 6 + i);
+ stmt.setInt(5, 7 + i);
+ stmt.execute();
+ }
+ conn.commit();
+
+ if (index != null) {
+ conn.createStatement().execute(
+ "CREATE " + index + " " + MULTI_TENANT_TABLE_INDEX
+ + " ON " + MULTI_TENANT_TABLE + "(col1) INCLUDE (col0, col2)");
+ conn.commit();
+ }
+
+ conn.close();
+ props.setProperty("TenantId", "10");
+ conn = DriverManager.getConnection(getOldUrl(), props);
+ conn.createStatement().execute("CREATE VIEW " + MULTI_TENANT_VIEW1
+ + " AS select * from " + MULTI_TENANT_TABLE);
+ conn.commit();
+
+ if (index != null) {
+ conn.createStatement().execute(
+ "CREATE " + index + " " + MULTI_TENANT_VIEW1_INDEX
+ + " ON " + MULTI_TENANT_VIEW1 + "(col0)");
+ conn.commit();
+ }
+
+ conn.close();
+ props.setProperty("TenantId", "20");
+ conn = DriverManager.getConnection(getOldUrl(), props);
+ conn.createStatement().execute("CREATE VIEW " + MULTI_TENANT_VIEW2
+ + " AS select * from " + MULTI_TENANT_TABLE + " where col2 > 7");
+ conn.commit();
+
+ if (index != null) {
+ conn.createStatement().execute(
+ "CREATE " + index + " " + MULTI_TENANT_VIEW2_INDEX
+ + " ON " + MULTI_TENANT_VIEW2 + "(col0)");
+ conn.commit();
+ }
+ } catch (TableAlreadyExistsException e) {
+ } finally {
+ conn.close();
+ }
+ }
+
+}
[30/48] phoenix git commit: PHOENIX-3181 Run test methods in parallel
to reduce test suite run time
Posted by ma...@apache.org.
PHOENIX-3181 Run test methods in parallel to reduce test suite run time
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3032a6f6
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3032a6f6
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3032a6f6
Branch: refs/heads/calcite
Commit: 3032a6f6f70fe0abdf24731fdc0058e22f345247
Parents: 58596bb
Author: James Taylor <ja...@apache.org>
Authored: Wed Sep 28 15:43:42 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Wed Sep 28 15:43:42 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/ParallelRunListener.java | 2 +-
pom.xml | 14 ++++++++++----
2 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3032a6f6/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
index 27808f5..bf3a969 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
@@ -24,7 +24,7 @@ import org.junit.runner.notification.RunListener;
public class ParallelRunListener extends RunListener {
// This causes output to go to the console when run through maven
// private static final Log LOG = LogFactory.getLog(ParallelRunListener.class);
- private static final int TEAR_DOWN_THRESHOLD = 150;
+ private static final int TEAR_DOWN_THRESHOLD = 100;
private int testRuns = 0;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3032a6f6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 85e6970..dac2b4d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -234,9 +234,8 @@
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
<runOrder>alphabetical</runOrder>
- <!--parallel>classesAndMethods</parallel>
+ <parallel>classesAndMethods</parallel>
<threadCount>20</threadCount>
- <enableAssertions>false</enableAssertions-->
<argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
@@ -262,9 +261,16 @@
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
<runOrder>alphabetical</runOrder>
- <!--parallel>classesAndMethods</parallel>
+ <parallel>classesAndMethods</parallel>
<threadCount>20</threadCount>
- <enableAssertions>false</enableAssertions-->
+ <!-- We're intermittantly hitting this assertion:
+ Caused by: java.lang.AssertionError: we should never remove a different context
+ at org.apache.hadoop.hbase.regionserver.HRegion$RowLockContext.cleanUp(HRegion.java:5206)
+ at org.apache.hadoop.hbase.regionserver.HRegion$RowLockImpl.release(HRegion.java:5246)
+ at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.doGetTable(MetaDataEndpointImpl.java:2898)
+ at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.doGetTable(MetaDataEndpointImpl.java:2835)
+ at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.getTable(MetaDataEndpointImpl.java:490) -->
+ <enableAssertions>false</enableAssertions>
<argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
[45/48] phoenix git commit: PHOENIX-3363 Join-related IT had
problematic usage of generating new table names
Posted by ma...@apache.org.
PHOENIX-3363 Join-related IT had problematic usage of generating new table names
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/ad999527
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/ad999527
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/ad999527
Branch: refs/heads/calcite
Commit: ad99952792b8b119085499d8d0d734c3d2dc053b
Parents: dfe6719
Author: maryannxue <ma...@gmail.com>
Authored: Fri Oct 7 11:46:30 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Fri Oct 7 11:46:30 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/SortMergeJoinIT.java | 324 ++++++++++++-------
.../org/apache/phoenix/end2end/SubqueryIT.java | 99 +++---
.../end2end/SubqueryUsingSortMergeJoinIT.java | 54 ++--
3 files changed, 296 insertions(+), 181 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad999527/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
index eade3cb..b387ee8 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
@@ -187,7 +187,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testDefaultJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -232,7 +234,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testInnerJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + tableName1 + " item INNER JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -283,10 +287,12 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testLeftJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
String query[] = new String[3];
- query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
- query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"item_id\", " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".name, " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".\"supplier_id\", " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " ON " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"supplier_id\" = " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".\"supplier_id\" ORDER BY \"item_id\"";
- query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".name, supp.\"supplier_id\", " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ " + tableName1 + ".\"item_id\", " + tableName1 + ".name, " + tableName2 + ".\"supplier_id\", " + tableName2 + ".name, next value for " + seqName + " FROM " + tableName1 + " LEFT JOIN " + tableName2 + " ON " + tableName1 + ".\"supplier_id\" = " + tableName2 + ".\"supplier_id\" ORDER BY \"item_id\"";
+ query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", " + tableName1 + ".name, supp.\"supplier_id\", " + tableName2 + ".name, next value for " + seqName + " FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON " + tableName1 + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
@@ -340,7 +346,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testRightJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName2 + " supp RIGHT JOIN " + tableName1 + " item ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -390,8 +398,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testInnerJoinWithPreFilters() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item INNER JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item INNER JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -452,7 +462,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testLeftJoinWithPreFilters() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -502,8 +514,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithPostFilters() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005' ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName2 + " supp RIGHT JOIN " + tableName1 + " item ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005' ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -564,22 +578,25 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testStarJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
String[] query = new String[5];
- query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o, "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c, "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[3] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o, "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c), "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[4] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o, ("
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c, "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
+ query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o JOIN "
+ + tableName3 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
+ query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o, "
+ + tableName3 + " c, "
+ + tableName1 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
+ query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o JOIN "
+ + tableName3 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
+ query[3] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + tableName4 + " o, "
+ + tableName3 + " c), "
+ + tableName1 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
+ query[4] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o, ("
+ + tableName3 + " c, "
+ + tableName1 + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
try {
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
@@ -630,12 +647,14 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testLeftJoinWithAggregation() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC";
- String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i LEFT JOIN "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + tableName4 + " o LEFT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + tableName4 + " o LEFT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC";
+ String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + tableName1 + " i LEFT JOIN "
+ + tableName4 + " o ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -705,10 +724,12 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testRightJoinWithAggregation() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + tableName4 + " o RIGHT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + tableName4 + " o RIGHT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -770,11 +791,14 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testLeftRightJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + "(" + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i RIGHT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ + "(" + tableName1 + " i RIGHT JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query1);
@@ -873,11 +897,14 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testRightLeftJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i RIGHT JOIN "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"";
- String query2 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
- + "(" + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + tableName1 + " i RIGHT JOIN "
+ + tableName4 + " o ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"";
+ String query2 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o RIGHT JOIN "
+ + "(" + tableName1 + " i LEFT JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query1);
@@ -976,12 +1003,15 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testMultiLeftJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
String[] queries = {
- "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"",
- "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + "(" + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\") "
+ "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"",
+ "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ + "(" + tableName1 + " i LEFT JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\") "
+ "ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\""};
try {
for (String query : queries) {
@@ -1029,9 +1059,12 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testMultiRightJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o RIGHT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1104,9 +1137,12 @@ public class SortMergeJoinIT extends BaseJoinIT {
props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, "1");
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o RIGHT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1175,7 +1211,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithWildcard() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + tableName1 + " LEFT JOIN " + tableName2 + " supp ON " + tableName1 + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1281,9 +1319,12 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithTableWildcard() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.*, "+ getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".*, \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.*, "+ tableName1 + ".*, \"order_id\" FROM " + tableName4 + " o RIGHT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1427,7 +1468,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinMultiJoinKeys() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ c.name, s.name FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON \"customer_id\" = \"supplier_id\" AND c.loc_id = s.loc_id AND substr(s.name, 2, 1) = substr(c.name, 2, 1) ORDER BY \"customer_id\"";
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ c.name, s.name FROM " + tableName3 + " c LEFT JOIN " + tableName2 + " s ON \"customer_id\" = \"supplier_id\" AND c.loc_id = s.loc_id AND substr(s.name, 2, 1) = substr(c.name, 2, 1) ORDER BY \"customer_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1460,8 +1503,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithDifferentNumericJoinKeyTypes() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" AND o.price = (i.price * (100 - discount2)) / 100.0 WHERE quantity < 5000";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + tableName4 + " o INNER JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" AND o.price = (i.price * (100 - discount2)) / 100.0 WHERE quantity < 5000";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1482,8 +1527,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithDifferentDateJoinKeyTypes() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.date = c.date ORDER BY \"order_id\"";
+ String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, o.date FROM " + tableName4 + " o INNER JOIN "
+ + tableName3 + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.date = c.date ORDER BY \"order_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1514,8 +1561,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithIncomparableJoinKeyTypes() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" AND o.price / 100 = substr(i.name, 2, 1)";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + tableName4 + " o INNER JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" AND o.price / 100 = substr(i.name, 2, 1)";
try {
PreparedStatement statement = conn.prepareStatement(query);
statement.executeQuery();
@@ -1531,8 +1580,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinPlanWithIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON substr(item.name, 2, 1) = substr(supp.name, 2, 1) AND (supp.name BETWEEN 'S1' AND 'S5') WHERE item.name BETWEEN 'T1' AND 'T5' ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE (item.name = 'T1' OR item.name = 'T5') AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item LEFT JOIN " + tableName2 + " supp ON substr(item.name, 2, 1) = substr(supp.name, 2, 1) AND (supp.name BETWEEN 'S1' AND 'S5') WHERE item.name BETWEEN 'T1' AND 'T5' ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item INNER JOIN " + tableName2 + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE (item.name = 'T1' OR item.name = 'T5') AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -1587,9 +1638,12 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithSkipMergeOptimization() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" AND quantity < 5000 RIGHT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.name FROM " + tableName1 + " i JOIN "
+ + tableName4 + " o ON o.\"item_id\" = i.\"item_id\" AND quantity < 5000 RIGHT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1623,10 +1677,11 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testSelfJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i2.\"item_id\", i1.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i1 JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i2 ON i1.\"item_id\" = i2.\"item_id\" ORDER BY i1.\"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i1.name, i2.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i1 JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i2 ON i1.\"item_id\" = i2.\"supplier_id\" ORDER BY i1.name, i2.name";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i2.\"item_id\", i1.name FROM " + tableName1 + " i1 JOIN "
+ + tableName1 + " i2 ON i1.\"item_id\" = i2.\"item_id\" ORDER BY i1.\"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i1.name, i2.name FROM " + tableName1 + " i1 JOIN "
+ + tableName1 + " i2 ON i1.\"item_id\" = i2.\"supplier_id\" ORDER BY i1.name, i2.name";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -1690,6 +1745,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
conn.createStatement().execute("CREATE TABLE " + tempTable
+ " (\"order_id\" varchar not null, "
@@ -1701,14 +1759,14 @@ public class SortMergeJoinIT extends BaseJoinIT {
conn.createStatement().execute("UPSERT /*+ USE_SORT_MERGE_JOIN*/ INTO " + tempTable
+ "(\"order_id\", item_name, supplier_name, quantity, date) "
+ "SELECT \"order_id\", i.name, s.name, quantity, date FROM "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\"");
+ + tableName4 + " o LEFT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\"");
conn.createStatement().execute("UPSERT /*+ USE_SORT_MERGE_JOIN*/ INTO " + tempTable
+ "(\"order_id\", item_name, quantity) "
+ "SELECT 'ORDER_SUM', i.name, sum(quantity) FROM "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" "
+ + tableName4 + " o LEFT JOIN "
+ + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" "
+ "GROUP BY i.name ORDER BY i.name");
String query = "SELECT * FROM " + tempTable;
@@ -1842,13 +1900,17 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testSubJoin() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, count(c.name), min(s.name), max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
- + "(" + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, count(c.name), min(s.name), max(quantity) FROM " + tableName4 + " o LEFT JOIN "
+ + "(" + tableName2 + " s RIGHT JOIN " + tableName1 + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON c.\"customer_id\" = o.\"customer_id\" GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c INNER JOIN "
- + "(" + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
- + "(" + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ + tableName3 + " c ON c.\"customer_id\" = o.\"customer_id\" GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + tableName3 + " c INNER JOIN "
+ + "(" + tableName4 + " o INNER JOIN "
+ + "(" + tableName2 + " s RIGHT JOIN " + tableName1 + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\") ON c.\"customer_id\" = o.\"customer_id\""
+ " WHERE c.\"customer_id\" <= '0000000005' AND \"order_id\" != '000000000000003' AND i.name != 'T3' ORDER BY c.\"customer_id\", i.name";
try {
@@ -1965,8 +2027,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.sid, supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\" sid, name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " WHERE name BETWEEN 'S1' AND 'S5') AS supp ON item.\"supplier_id\" = supp.sid ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.sid, supp.name FROM " + tableName1 + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\" sid, name FROM " + tableName2 + " WHERE name BETWEEN 'S1' AND 'S5') AS supp ON item.\"supplier_id\" = supp.sid ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + tableName2 + ") AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2028,7 +2092,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " LIMIT 5) AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name != 'S1') ORDER BY \"item_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + tableName1 + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + tableName2 + " LIMIT 5) AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name != 'S1') ORDER BY \"item_id\"";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -2057,14 +2123,16 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithSubqueryAndAggregation() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN (SELECT name, \"item_id\" iid FROM "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON o.\"item_id\" = i.iid GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.iid, sum(o.quantity) q FROM (SELECT \"item_id\" iid, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o LEFT JOIN (SELECT \"item_id\" FROM "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON o.iid = i.\"item_id\" GROUP BY o.iid ORDER BY q DESC";
- String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i LEFT JOIN (SELECT \"item_id\" iid, sum(quantity) q FROM "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " GROUP BY \"item_id\") AS o ON o.iid = i.iid ORDER BY o.q DESC NULLS LAST, i.iid";
- String query4 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " GROUP BY \"item_id\") AS o JOIN (SELECT \"item_id\" iid FROM "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON o.iid = i.iid ORDER BY o.q DESC, i.iid";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + tableName4 + " o LEFT JOIN (SELECT name, \"item_id\" iid FROM "
+ + tableName1 + ") AS i ON o.\"item_id\" = i.iid GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.iid, sum(o.quantity) q FROM (SELECT \"item_id\" iid, quantity FROM " + tableName4 + ") AS o LEFT JOIN (SELECT \"item_id\" FROM "
+ + tableName1 + ") AS i ON o.iid = i.\"item_id\" GROUP BY o.iid ORDER BY q DESC";
+ String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid FROM " + tableName1 + ") AS i LEFT JOIN (SELECT \"item_id\" iid, sum(quantity) q FROM "
+ + tableName4 + " GROUP BY \"item_id\") AS o ON o.iid = i.iid ORDER BY o.q DESC NULLS LAST, i.iid";
+ String query4 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid, sum(quantity) q FROM " + tableName4 + " GROUP BY \"item_id\") AS o JOIN (SELECT \"item_id\" iid FROM "
+ + tableName1 + ") AS i ON o.iid = i.iid ORDER BY o.q DESC, i.iid";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2151,13 +2219,17 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testNestedSubqueries() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ q.iname, count(c.name), min(q.sname), max(o.quantity) FROM (SELECT \"customer_id\" cid, \"item_id\" iid, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o LEFT JOIN "
- + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iid, s.name sname, i.name iname FROM (SELECT \"supplier_id\" sid, name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, \"supplier_id\" sid FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON i.sid = s.sid) AS q"
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ q.iname, count(c.name), min(q.sname), max(o.quantity) FROM (SELECT \"customer_id\" cid, \"item_id\" iid, quantity FROM " + tableName4 + ") AS o LEFT JOIN "
+ + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iid, s.name sname, i.name iname FROM (SELECT \"supplier_id\" sid, name FROM " + tableName2 + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, \"supplier_id\" sid FROM " + tableName1 + ") AS i ON i.sid = s.sid) AS q"
+ " ON o.iid = q.iid LEFT JOIN (SELECT \"customer_id\" cid, name FROM "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + ") AS c ON c.cid = o.cid GROUP BY q.iname ORDER BY q.iname";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, date FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + ") AS c INNER JOIN "
- + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.date odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o INNER JOIN "
- + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iiid, i.name iname, i.price iprice, i.discount1 idiscount1, i.discount2 idiscount2, i.sid isid, i.description idescription, s.sid ssid, s.name sname, s.phone sphone, s.address saddress, s.loc_id sloc_id FROM (SELECT \"supplier_id\" sid, name, phone, address, loc_id FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, price, discount1, discount2, \"supplier_id\" sid, description FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON i.sid = s.sid) as qi"
+ + tableName3 + ") AS c ON c.cid = o.cid GROUP BY q.iname ORDER BY q.iname";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, date FROM " + tableName3 + ") AS c INNER JOIN "
+ + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.date odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, date FROM " + tableName4 + ") AS o INNER JOIN "
+ + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iiid, i.name iname, i.price iprice, i.discount1 idiscount1, i.discount2 idiscount2, i.sid isid, i.description idescription, s.sid ssid, s.name sname, s.phone sphone, s.address saddress, s.loc_id sloc_id FROM (SELECT \"supplier_id\" sid, name, phone, address, loc_id FROM " + tableName2 + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, price, discount1, discount2, \"supplier_id\" sid, description FROM " + tableName1 + ") AS i ON i.sid = s.sid) as qi"
+ " ON o.iid = qi.iiid) as qo ON c.cid = qo.ocid"
+ " WHERE c.cid <= '0000000005' AND qo.ooid != '000000000000003' AND qo.iname != 'T3' ORDER BY c.cid, qo.iname";
try {
@@ -2271,12 +2343,15 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithLimit() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 4";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s JOIN "
- + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 3";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + tableName2 + " s LEFT JOIN "
+ + tableName1 + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN "
+ + tableName4 + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 4";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + tableName2 + " s JOIN "
+ + tableName1 + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN "
+ + tableName4 + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 3";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2338,13 +2413,16 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithOffset() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME)
- + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME)
+ + tableName2 + " s LEFT JOIN " + tableName1
+ + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN " + tableName4
+ " o ON o.\"item_id\" = i.\"item_id\" LIMIT 2 OFFSET 1";
String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM "
- + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME)
- + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME)
+ + tableName2 + " s JOIN " + tableName1
+ + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN " + tableName4
+ " o ON o.\"item_id\" = i.\"item_id\" LIMIT 1 OFFSET 2";
try {
PreparedStatement statement = conn.prepareStatement(query1);
@@ -2383,7 +2461,9 @@ public class SortMergeJoinIT extends BaseJoinIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item, " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp WHERE item.\"supplier_id\" > supp.\"supplier_id\"";
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + tableName1 + " item, " + tableName2 + " supp WHERE item.\"supplier_id\" > supp.\"supplier_id\"";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -2422,7 +2502,7 @@ public class SortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" > supp.\"supplier_id\"";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + tableName1 + " item JOIN " + tableName2 + " supp ON item.\"supplier_id\" > supp.\"supplier_id\"";
statement = conn.prepareStatement(query);
try {
statement.executeQuery();
@@ -2439,11 +2519,13 @@ public class SortMergeJoinIT extends BaseJoinIT {
public void testJoinWithSetMaxRows() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
String [] queries = new String[2];
- queries[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, quantity FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN "
- + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\"";
- queries[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.\"order_id\", i.name, o.quantity FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN "
- + "(SELECT \"order_id\", \"item_id\", quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") o "
+ queries[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, quantity FROM " + tableName1 + " i JOIN "
+ + tableName4 + " o ON o.\"item_id\" = i.\"item_id\"";
+ queries[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.\"order_id\", i.name, o.quantity FROM " + tableName1 + " i JOIN "
+ + "(SELECT \"order_id\", \"item_id\", quantity FROM " + tableName4 + ") o "
+ "ON o.\"item_id\" = i.\"item_id\"";
try {
for (int i = 0; i < queries.length; i++) {
[15/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortOrderIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortOrderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortOrderIT.java
index dc22ff8..e9c0c55 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortOrderIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortOrderIT.java
@@ -60,12 +60,12 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Before
public void generateTableName() {
- baseTableName = generateRandomString();
+ baseTableName = generateUniqueName();
}
@Test
public void noOrder() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (pk VARCHAR NOT NULL PRIMARY KEY)";
runQueryTest(ddl, "pk", new Object[][]{{"a"}, {"b"}, {"c"}}, new Object[][]{{"a"}, {"b"}, {"c"}},
table);
@@ -73,7 +73,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void noOrderCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid, code))";
Object[][] rows = new Object[][]{{"o1", 1}, {"o2", 2}, {"o3", 3}};
runQueryTest(ddl, upsert("oid", "code"), rows, rows, table);
@@ -81,7 +81,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void ascOrderInlinePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (pk VARCHAR NOT NULL PRIMARY KEY ASC)";
runQueryTest(ddl, "pk", new Object[][]{{"a"}, {"b"}, {"c"}}, new Object[][]{{"a"}, {"b"}, {"c"}},
table);
@@ -89,7 +89,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void ascOrderCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid ASC, code DESC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o1", 2}, {"o1", 3}};
Object[][] expectedRows = new Object[][]{{"o1", 3}, {"o1", 2}, {"o1", 1}};
@@ -98,7 +98,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descOrderInlinePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
for (String type : new String[]{"CHAR(2)", "VARCHAR"}) {
String ddl = "CREATE table " + table + " (pk ${type} NOT NULL PRIMARY KEY DESC)".replace("${type}", type);
runQueryTest(ddl, "pk", new Object[][]{{"aa"}, {"bb"}, {"cc"}}, new Object[][]{{"cc"}, {"bb"}, {"aa"}},
@@ -108,7 +108,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descOrderCompositePK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o2", 2}, {"o3", 3}};
Object[][] expectedRows = new Object[][]{{"o3", 3}, {"o2", 2}, {"o1", 1}};
@@ -117,7 +117,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descOrderCompositePK2() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o1", 2}, {"o1", 3}};
Object[][] expectedRows = new Object[][]{{"o1", 3}, {"o1", 2}, {"o1", 1}};
@@ -126,7 +126,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void equalityDescInlinePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (pk VARCHAR NOT NULL PRIMARY KEY DESC)";
runQueryTest(ddl, upsert("pk"), new Object[][]{{"a"}, {"b"}, {"c"}}, new Object[][]{{"b"}}, new WhereCondition("pk", "=", "'b'"),
table);
@@ -134,7 +134,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void equalityDescCompositePK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o2", 2}, {"o3", 3}};
runQueryTest(ddl, upsert("oid", "code"), insertedRows, new Object[][]{{"o2", 2}}, new WhereCondition("oid", "=", "'o2'"),
@@ -143,7 +143,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void equalityDescCompositePK2() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o1", 2}, {"o1", 3}};
runQueryTest(ddl, upsert("oid", "code"), insertedRows, new Object[][]{{"o1", 2}}, new WhereCondition("code", "=", "2"),
@@ -152,7 +152,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void inDescCompositePK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o1", 2}, {"o1", 3}};
runQueryTest(ddl, upsert("oid", "code"), insertedRows, new Object[][]{{"o1", 2}}, new WhereCondition("code", "IN", "(2)"),
@@ -161,7 +161,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void inDescCompositePK2() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o2", 2}, {"o3", 3}};
runQueryTest(ddl, upsert("oid", "code"), insertedRows, new Object[][]{{"o2", 2}}, new WhereCondition("oid", "IN", "('o2')"),
@@ -170,7 +170,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void likeDescCompositePK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"a1", 1}, {"b2", 2}, {"c3", 3}};
runQueryTest(ddl, upsert("oid", "code"), insertedRows, new Object[][]{{"b2", 2}}, new WhereCondition("oid", "LIKE", "('b%')"),
@@ -179,7 +179,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void likeDescCompositePK2() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code CHAR(2) NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"a1", "11"}, {"b2", "22"}, {"c3", "33"}};
runQueryTest(ddl, upsert("oid", "code"), insertedRows, new Object[][]{{"b2", "22"}}, new WhereCondition("code", "LIKE", "('2%')"),
@@ -188,7 +188,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void greaterThanDescCompositePK3() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o1", 2}, {"o1", 3}};
Object[][] expectedRows = new Object[][]{{"o1", 2}, {"o1", 1}};
@@ -198,7 +198,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void substrDescCompositePK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(3) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code ASC))";
Object[][] insertedRows = new Object[][]{{"ao1", 1}, {"bo2", 2}, {"co3", 3}};
Object[][] expectedRows = new Object[][]{{"co3", 3}, {"bo2", 2}};
@@ -208,7 +208,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void substrDescCompositePK2() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(4) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code ASC))";
Object[][] insertedRows = new Object[][]{{"aaaa", 1}, {"bbbb", 2}, {"cccd", 3}};
Object[][] expectedRows = new Object[][]{{"cccd", 3}};
@@ -218,7 +218,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void substrFixedLengthDescPK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(3) PRIMARY KEY DESC)";
Object[][] insertedRows = new Object[][]{{"a"}, {"ab"}};
Object[][] expectedRows = new Object[][]{{"ab"}, {"a"} };
@@ -228,7 +228,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void substrVarLengthDescPK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid VARCHAR PRIMARY KEY DESC)";
Object[][] insertedRows = new Object[][]{{"a"}, {"ab"}};
Object[][] expectedRows = new Object[][]{{"ab"}, {"a"} };
@@ -238,7 +238,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void likeVarLengthDescPK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid VARCHAR PRIMARY KEY DESC)";
Object[][] insertedRows = new Object[][]{{"a"}, {"ab"}};
Object[][] expectedRows = new Object[][]{{"ab"}, {"a"} };
@@ -248,7 +248,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void likeFixedLengthDescPK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(3) PRIMARY KEY DESC)";
Object[][] insertedRows = new Object[][]{{"a"}, {"ab"}};
Object[][] expectedRows = new Object[][]{{"ab"}, {"a"} };
@@ -258,7 +258,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void decimalRangeDescPK1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid DECIMAL PRIMARY KEY DESC)";
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute(ddl);
@@ -284,7 +284,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void lTrimDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid VARCHAR NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{" o1 ", 1}, {" o2", 2}, {" o3", 3}};
Object[][] expectedRows = new Object[][]{{" o2", 2}};
@@ -294,7 +294,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void lPadDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid VARCHAR NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"aaaa", 1}, {"bbbb", 2}, {"cccc", 3}};
Object[][] expectedRows = new Object[][]{{"bbbb", 2}};
@@ -304,7 +304,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void countDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (oid CHAR(2) NOT NULL, code INTEGER NOT NULL constraint pk primary key (oid DESC, code ASC))";
Object[][] insertedRows = new Object[][]{{"o1", 1}, {"o2", 2}, {"o3", 3}};
Object[][] expectedRows = new Object[][]{{3l}};
@@ -314,7 +314,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void sumDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (n1 INTEGER NOT NULL, n2 DECIMAL(10, 2) NOT NULL, n3 BIGINT NOT NULL " +
"constraint pk primary key (n1 DESC, n2 DESC, n3 DESC))";
Object[][] insertedRows = new Object[][]{{10, bdec(10.2), 21l}, {20, bdec(20.2), 32l}, {30, bdec(30.2), 43l}};
@@ -325,7 +325,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void avgDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (n1 INTEGER NOT NULL, n2 DECIMAL(10, 2) NOT NULL, n3 BIGINT NOT NULL " +
"constraint pk primary key (n1 DESC, n2 DESC, n3 DESC))";
Object[][] insertedRows = new Object[][]{{10, bdec(10.2), 21l}, {20, bdec(20.2), 32l}, {30, bdec(30.2), 43l}};
@@ -336,7 +336,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void minDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (n1 INTEGER NOT NULL, n2 DECIMAL(10, 2) NOT NULL, n3 BIGINT NOT NULL " +
"constraint pk primary key (n1 DESC, n2 DESC, n3 DESC))";
Object[][] insertedRows = new Object[][]{{10, bdec(10.2), 21l}, {20, bdec(20.2), 32l}, {30, bdec(30.2), 43l}};
@@ -347,7 +347,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void maxDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (n1 INTEGER NOT NULL, n2 DECIMAL(10, 2) NOT NULL, n3 BIGINT NOT NULL " +
"constraint pk primary key (n1 DESC, n2 DESC, n3 DESC))";
Object[][] insertedRows = new Object[][]{{10, bdec(10.2), 21l}, {20, bdec(20.2), 32l}, {30, bdec(30.2), 43l}};
@@ -358,7 +358,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void havingSumDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (name CHAR(1) NOT NULL, code INTEGER NOT NULL " +
"constraint pk primary key (name DESC, code DESC))";
Object[][] insertedRows = new Object[][]{{"a", 10}, {"a", 20}, {"b", 100}};
@@ -369,7 +369,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void queryDescDateWithExplicitOrderBy() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (c1 CHAR(1) NOT NULL, c2 CHAR(1) NOT NULL, d1 DATE NOT NULL, c3 CHAR(1) NOT NULL " +
"constraint pk primary key (c1, c2, d1 DESC, c3))";
Object[] row1 = {"1", "2", date(10, 11, 2001), "3"};
@@ -381,7 +381,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void additionOnDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (n1 INTEGER NOT NULL, n2 DECIMAL(10, 2) NOT NULL, n3 BIGINT NOT NULL, d1 DATE NOT NULL " +
"constraint pk primary key (n1 DESC, n2 DESC, n3 DESC, d1 DESC))";
Object[][] insertedRows = new Object[][]{
@@ -394,7 +394,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void subtractionOnDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (n1 INTEGER NOT NULL, n2 DECIMAL(10, 2) NOT NULL, n3 BIGINT NOT NULL, d1 DATE NOT NULL " +
"constraint pk primary key (n1 DESC, n2 DESC, n3 DESC, d1 DESC))";
Object[][] insertedRows = new Object[][]{
@@ -407,7 +407,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void lessThanLeadingDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (id INTEGER NOT NULL, date DATE NOT NULL constraint pk primary key (id DESC, date))";
Object[][] insertedRows = new Object[][]{{1, date(1, 1, 2012)}, {3, date(1, 1, 2013)}, {2, date(1, 1, 2011)}};
Object[][] expectedRows = new Object[][]{{1, date(1, 1, 2012)}};
@@ -417,7 +417,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void lessThanTrailingDescCompositePK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (id INTEGER NOT NULL, date DATE NOT NULL constraint pk primary key (id DESC, date))";
Object[][] insertedRows = new Object[][]{{1, date(1, 1, 2002)}, {3, date(1, 1, 2003)}, {2, date(1, 1, 2001)}};
Object[][] expectedRows = new Object[][]{{2, date(1, 1, 2001)}};
@@ -427,7 +427,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descVarLengthPK() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (id VARCHAR PRIMARY KEY DESC)";
Object[][] insertedRows = new Object[][]{{"a"}, {"ab"}, {"abc"}};
Object[][] expectedRows = new Object[][]{{"abc"}, {"ab"}, {"a"}};
@@ -437,7 +437,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descVarLengthAscPKGT() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (k1 INTEGER NOT NULL, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1, k2))";
Object[][] insertedRows = new Object[][]{{0, null}, {1, "a"}, {2, "b"}, {3, "ba"}, {4, "baa"}, {5, "c"}, {6, "d"}};
Object[][] expectedRows = new Object[][]{{3}, {4}, {5}, {6}};
@@ -447,7 +447,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descVarLengthDescPKGT() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (k1 INTEGER NOT NULL, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1, k2 desc))";
Object[][] insertedRows = new Object[][]{{0, null}, {1, "a"}, {2, "b"}, {3, "ba"}, {4, "baa"}, {5, "c"}, {6, "d"}};
Object[][] expectedRows = new Object[][]{{3}, {4}, {5}, {6}};
@@ -457,7 +457,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descVarLengthDescPKLTE() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (k1 INTEGER NOT NULL, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1, k2 desc))";
Object[][] insertedRows = new Object[][]{{0, null}, {1, "a"}, {2, "b"}, {3, "ba"}, {4, "bb"}, {5, "bc"}, {6, "bba"}, {7, "c"}};
Object[][] expectedRows = new Object[][]{{1}, {2}, {3}, {4}};
@@ -467,7 +467,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void descVarLengthAscPKLTE() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (k1 INTEGER NOT NULL, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1, k2))";
Object[][] insertedRows = new Object[][]{{0, null}, {1, "a"}, {2, "b"}, {3, "ba"}, {4, "bb"}, {5, "bc"}, {6, "bba"}, {7, "c"}};
Object[][] expectedRows = new Object[][]{{1}, {2}, {3}, {4}};
@@ -477,7 +477,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void varLengthAscLT() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (k1 VARCHAR NOT NULL, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1, k2))";
Object[][] insertedRows = new Object[][]{{"a", ""}, {"b",""}, {"b","a"}};
Object[][] expectedRows = new Object[][]{{"a"}};
@@ -487,7 +487,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void varLengthDescLT() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (k1 VARCHAR NOT NULL, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1 desc, k2))";
Object[][] insertedRows = new Object[][]{{"a", ""}, {"b",""}, {"b","a"}};
Object[][] expectedRows = new Object[][]{{"a"}};
@@ -497,7 +497,7 @@ public class SortOrderIT extends ParallelStatsDisabledIT {
@Test
public void varLengthDescGT() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE table " + table + " (k1 VARCHAR NOT NULL, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1 desc, k2))";
Object[][] insertedRows = new Object[][]{{"a", ""}, {"b",""}, {"b","a"}, {"ba","a"}};
Object[][] expectedRows = new Object[][]{{"ba"}};
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
index 02a5d71..51bcb31 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
@@ -57,7 +57,7 @@ public class SpooledTmpFileDeleteIT extends ParallelStatsDisabledIT {
@Before
public void setup() throws SQLException {
- tableName = generateRandomString();
+ tableName = generateUniqueName();
props = new Properties();
spoolDir = Files.createTempDir();
props.put(QueryServices.SPOOL_DIRECTORY, spoolDir.getPath());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SqrtFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SqrtFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SqrtFunctionEnd2EndIT.java
index 1426564..657c3fd 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SqrtFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SqrtFunctionEnd2EndIT.java
@@ -45,8 +45,8 @@ public class SqrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
public void initTable() throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
- testUnsignedTable = generateRandomString();
- testSignedTable = generateRandomString();
+ testUnsignedTable = generateUniqueName();
+ testSignedTable = generateUniqueName();
try {
conn = DriverManager.getConnection(getUrl());
String ddl;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatementHintsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatementHintsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatementHintsIT.java
index a0960e5..d740ae4 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatementHintsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatementHintsIT.java
@@ -39,7 +39,7 @@ import org.junit.Test;
public class StatementHintsIT extends ParallelStatsDisabledIT {
- private static final String TABLE_NAME = generateRandomString();
+ private static final String TABLE_NAME = generateUniqueName();
private static void initTableValues() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
index 9a1ea26..0b5a92d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
@@ -89,7 +89,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
@Before
public void generateTableNames() {
schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
- tableName = "T_" + generateRandomString();
+ tableName = "T_" + generateUniqueName();
fullTableName = SchemaUtil.getTableName(schemaName, tableName);
}
@@ -224,7 +224,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
@Test
public void testUpdateStatsWithMultipleTables() throws Throwable {
- String fullTableName2 = SchemaUtil.getTableName(schemaName, "T_" + generateRandomString());
+ String fullTableName2 = SchemaUtil.getTableName(schemaName, "T_" + generateUniqueName());
Connection conn;
PreparedStatement stmt;
ResultSet rs;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
index c14cf39..bb13f1b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
@@ -64,10 +64,10 @@ public class StoreNullsIT extends ParallelStatsDisabledIT {
@Before
public void setUp() throws SQLException {
- WITH_NULLS = generateRandomString();
- WITHOUT_NULLS = generateRandomString();
- IMMUTABLE_WITH_NULLS = generateRandomString();
- IMMUTABLE_WITHOUT_NULLS = generateRandomString();
+ WITH_NULLS = generateUniqueName();
+ WITHOUT_NULLS = generateUniqueName();
+ IMMUTABLE_WITH_NULLS = generateUniqueName();
+ IMMUTABLE_WITHOUT_NULLS = generateUniqueName();
conn = DriverManager.getConnection(getUrl());
conn.setAutoCommit(true);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringIT.java
index bcf31ca..680935b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringIT.java
@@ -116,7 +116,7 @@ public class StringIT extends ParallelStatsDisabledIT {
public void testCharPadding() throws Exception {
ResultSet rs;
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + " (k CHAR(3) PRIMARY KEY)");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('a')");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('ab')");
@@ -127,7 +127,7 @@ public class StringIT extends ParallelStatsDisabledIT {
assertTrue(rs.next());
assertEquals("ab", rs.getString(1));
assertFalse(rs.next());
- String tableNameDesc = generateRandomString();
+ String tableNameDesc = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableNameDesc + " (k CHAR(3) PRIMARY KEY DESC)");
conn.createStatement().execute("UPSERT INTO " + tableNameDesc + " VALUES('a')");
conn.createStatement().execute("UPSERT INTO " + tableNameDesc + " VALUES('ab')");
@@ -144,7 +144,7 @@ public class StringIT extends ParallelStatsDisabledIT {
public void testBinaryPadding() throws Exception {
ResultSet rs;
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + " (k BINARY(3) PRIMARY KEY)");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('a')");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('ab')");
@@ -156,7 +156,7 @@ public class StringIT extends ParallelStatsDisabledIT {
assertArrayEquals(ByteUtil.concat(Bytes.toBytes("ab"), QueryConstants.SEPARATOR_BYTE_ARRAY), rs.getBytes(1));
assertFalse(rs.next());
- String tableNameDesc = generateRandomString();
+ String tableNameDesc = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableNameDesc + " (k BINARY(3) PRIMARY KEY DESC)");
conn.createStatement().execute("UPSERT INTO " + tableNameDesc + " VALUES('a')");
conn.createStatement().execute("UPSERT INTO " + tableNameDesc + " VALUES('ab')");
@@ -245,7 +245,7 @@ public class StringIT extends ParallelStatsDisabledIT {
@Test
public void testStrConcat() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("create table " + tableName + " (PK1 integer, F1 varchar, F2 varchar, F3 varchar, F4 varchar, constraint PK primary key (PK1))");
conn.createStatement().execute("upsert into " + tableName + "(PK1, F1,F3) values(0, 'tortilla', 'chip')");
conn.commit();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
index d0f45c7..c11d765 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
@@ -30,7 +30,7 @@ import org.junit.Test;
public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
- private static final String TABLE_NAME = generateRandomString();
+ private static final String TABLE_NAME = generateUniqueName();
@BeforeClass
public static void initTables() throws Exception {
@@ -295,7 +295,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
public void testStringToArrayFunctionWithUpsert1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
@@ -320,7 +320,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
public void testStringToArrayFunctionWithUpsert2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
@@ -345,12 +345,12 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
public void testStringToArrayFunctionWithUpsertSelect1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String table1 = generateRandomString();
+ String table1 = generateUniqueName();
String ddl =
"CREATE TABLE " + table1 + " (region_name VARCHAR PRIMARY KEY, varchar VARCHAR)";
conn.createStatement().execute(ddl);
- String table2 = generateRandomString();
+ String table2 = generateUniqueName();
ddl = "CREATE TABLE " + table2 + " (region_name VARCHAR PRIMARY KEY, varchars VARCHAR[])";
conn.createStatement().execute(ddl);
@@ -388,13 +388,13 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
public void testStringToArrayFunctionWithUpsertSelect2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String sourceTable = generateRandomString();
+ String sourceTable = generateUniqueName();
String ddl =
"CREATE TABLE " + sourceTable + " (region_name VARCHAR PRIMARY KEY, varchar VARCHAR)";
conn.createStatement().execute(ddl);
- String targetTable = generateRandomString();
+ String targetTable = generateUniqueName();
ddl = "CREATE TABLE " + targetTable
+ " (region_name VARCHAR PRIMARY KEY, varchars VARCHAR[])";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantIdTypeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantIdTypeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantIdTypeIT.java
index 22b3655..73b3212 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantIdTypeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantIdTypeIT.java
@@ -78,7 +78,7 @@ public class TenantIdTypeIT extends ParallelStatsDisabledIT {
this.dataType = dataType;
this.tenantId = tenantId;
this.otherTenantId = otherTenantId;
- String tbl = generateRandomString();
+ String tbl = generateUniqueName();
if(tbl.contains("(")){
tbl = tbl.substring(0, tbl.indexOf("("));
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
index 11eb40e..b8f8177 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
@@ -84,10 +84,10 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testCreateTenantViewFromNonMultiTenant() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
createTestTable(getUrl(), "CREATE TABLE " + tableName + " (K VARCHAR PRIMARY KEY)");
try {
- String viewName = generateRandomString();
+ String viewName = generateUniqueName();
// Only way to get this exception is to attempt to derive from a global, multi-type table, as we won't find
// a tenant-specific table when we attempt to resolve the base table.
createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + viewName + " (COL VARCHAR) AS SELECT * FROM " + tableName);
@@ -99,8 +99,8 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testAlteringMultiTenancyForTableWithViewsNotAllowed() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String multiTenantTable = "MT_" + generateRandomString();
- String globalTable = "G_" + generateRandomString();
+ String multiTenantTable = "MT_" + generateUniqueName();
+ String globalTable = "G_" + generateUniqueName();
// create the two base tables
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
String ddl = "CREATE TABLE " + multiTenantTable + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR, V3 VARCHAR CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT = true ";
@@ -108,18 +108,18 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
ddl = "CREATE TABLE " + globalTable + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR, V3 VARCHAR CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) ";
conn.createStatement().execute(ddl);
}
- String t1 = generateRandomString();
+ String t1 = generateUniqueName();
props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, t1);
// create view on multi-tenant table
try (Connection tenantConn = DriverManager.getConnection(getUrl(), props)) {
- String viewName = "V_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
String viewDDL = "CREATE VIEW " + viewName + " AS SELECT * FROM " + multiTenantTable;
tenantConn.createStatement().execute(viewDDL);
}
props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
// create view on global table
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- String viewName = "V_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
conn.createStatement().execute("CREATE VIEW " + viewName + " AS SELECT * FROM " + globalTable);
}
props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
@@ -151,7 +151,7 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
public void testCreationOfParentTableFailsOnTenantSpecificConnection() throws Exception {
try {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE TABLE " + generateRandomString() + "( \n" +
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE TABLE " + generateUniqueName() + "( \n" +
" user VARCHAR ,\n" +
" id INTEGER not null primary key desc\n" +
" ) ");
@@ -163,7 +163,7 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testTenantSpecificAndParentTablesMayBeInDifferentSchemas() throws SQLException {
- String fullTableName = "DIFFSCHEMA." + generateRandomString();
+ String fullTableName = "DIFFSCHEMA." + generateUniqueName();
createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + fullTableName + " ( \n" +
" tenant_col VARCHAR) AS SELECT * \n" +
" FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'");
@@ -191,14 +191,14 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testTenantSpecificTableCanDeclarePK() throws SQLException {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + generateRandomString() + "( \n" +
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + generateUniqueName() + "( \n" +
" tenant_col VARCHAR PRIMARY KEY) AS SELECT *\n" +
" FROM " + PARENT_TABLE_NAME);
}
@Test(expected=ColumnAlreadyExistsException.class)
public void testTenantSpecificTableCannotOverrideParentCol() throws SQLException {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + generateRandomString() + " ( \n" +
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + generateUniqueName() + " ( \n" +
" user INTEGER) AS SELECT *\n" +
" FROM " + PARENT_TABLE_NAME);
}
@@ -208,7 +208,7 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
// only two PK columns for multi_tenant, multi_type
try {
createTestTable(getUrl(),
- "CREATE TABLE " + generateRandomString() +
+ "CREATE TABLE " + generateUniqueName() +
"(TENANT_ID VARCHAR NOT NULL PRIMARY KEY, ID VARCHAR, A INTEGER) MULTI_TENANT=true");
fail();
}
@@ -338,7 +338,7 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testAllDropParentTableWithCascadeWithMultipleTenantTablesAndIndexes() throws Exception {
// Create a second tenant table
- String tenantTable2 = "V_" + generateRandomString();
+ String tenantTable2 = "V_" + generateUniqueName();
createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL2, TENANT_TABLE_DDL.replace(TENANT_TABLE_NAME, tenantTable2));
//TODO Create some tenant specific table indexes
@@ -418,9 +418,9 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testTableMetadataScan() throws Exception {
// create a tenant table with same name for a different tenant to make sure we are not picking it up in metadata scans for TENANT_ID
- String tenantId2 = "T_" + generateRandomString();
+ String tenantId2 = "T_" + generateUniqueName();
String secondTenatConnectionURL = PHOENIX_JDBC_TENANT_SPECIFIC_URL.replace(TENANT_ID, tenantId2);
- String tenantTable2 = "V_" + generateRandomString();
+ String tenantTable2 = "V_" + generateUniqueName();
createTestTable(secondTenatConnectionURL, TENANT_TABLE_DDL.replace(TENANT_TABLE_NAME, tenantTable2));
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
index f26e6dd..76625c0 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
@@ -361,7 +361,7 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testUpsertSelectOnlyUpsertsTenantDataWithDifferentTenantTable() throws Exception {
- String anotherTableName = "V_" + generateRandomString();
+ String anotherTableName = "V_" + generateUniqueName();
createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + anotherTableName + " ( " +
"tenant_col VARCHAR) AS SELECT * FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'def'");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
index c99c95f..f47e078 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
@@ -117,8 +117,8 @@ public class TenantSpecificViewIndexIT extends BaseTenantSpecificViewIndexIT {
}
private void testMultiCFViewIndex(boolean localIndex, boolean isNamespaceEnabled) throws Exception {
- String tableName = "XYZ." + generateRandomString();
- String baseViewName = generateRandomString() ;
+ String tableName = "XYZ." + generateUniqueName();
+ String baseViewName = generateUniqueName() ;
createTableAndValidate(tableName, isNamespaceEnabled);
createViewAndIndexesWithTenantId(tableName, baseViewName, localIndex, "b", isNamespaceEnabled);
createViewAndIndexesWithTenantId(tableName, baseViewName, localIndex, "a", isNamespaceEnabled);
@@ -248,8 +248,8 @@ public class TenantSpecificViewIndexIT extends BaseTenantSpecificViewIndexIT {
public void testNonPaddedTenantId() throws Exception {
String tenantId1 = "org1";
String tenantId2 = "org2";
- String tableName = generateRandomString();
- String viewName = generateRandomString();
+ String tableName = generateUniqueName();
+ String viewName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (tenantId char(15) NOT NULL, pk1 varchar NOT NULL, pk2 INTEGER NOT NULL, val1 VARCHAR CONSTRAINT pk primary key (tenantId,pk1,pk2)) MULTI_TENANT = true";
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/TimezoneOffsetFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TimezoneOffsetFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TimezoneOffsetFunctionIT.java
index 48eb87e..65d47be 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TimezoneOffsetFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TimezoneOffsetFunctionIT.java
@@ -39,7 +39,7 @@ public class TimezoneOffsetFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testTimezoneOffset() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -64,7 +64,7 @@ public class TimezoneOffsetFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testUnknownTimezone() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test
+ " (k1 INTEGER NOT NULL, dates DATE CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -89,7 +89,7 @@ public class TimezoneOffsetFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testInRowKeyDSTTimezoneDesc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test + " "
+ "(k1 INTEGER NOT NULL, dates DATE NOT NULL CONSTRAINT pk PRIMARY KEY (k1, dates DESC))";
conn.createStatement().execute(ddl);
@@ -114,7 +114,7 @@ public class TimezoneOffsetFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testBothParametersNull() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test + " "
+ "(k1 INTEGER NOT NULL, dates DATE, v1 VARCHAR CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -134,7 +134,7 @@ public class TimezoneOffsetFunctionIT extends ParallelStatsDisabledIT {
@Test
public void timezoneParameterNull() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test + " "
+ "(k1 INTEGER NOT NULL, dates DATE, v1 VARCHAR CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -155,7 +155,7 @@ public class TimezoneOffsetFunctionIT extends ParallelStatsDisabledIT {
@Test
public void dateParameterNull() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String timezone_offset_test = generateRandomString();
+ String timezone_offset_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + timezone_offset_test + " "
+ "(k1 INTEGER NOT NULL, dates DATE, v1 VARCHAR CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -176,7 +176,7 @@ public class TimezoneOffsetFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testInsertingRetrivingTimestamp() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t = generateRandomString();
+ String t = generateUniqueName();
String ddl = "CREATE TABLE " + t + " (K INTEGER NOT NULL PRIMARY KEY, V TIMESTAMP)";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + t + " VALUES (?, ?)";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToCharFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToCharFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToCharFunctionIT.java
index 7181918..022197c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToCharFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToCharFunctionIT.java
@@ -67,7 +67,7 @@ public class ToCharFunctionIT extends ParallelStatsDisabledIT {
value="DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE",
justification="Test code.")
public void initTable() throws Exception {
- TO_CHAR_TABLE_NAME = generateRandomString();
+ TO_CHAR_TABLE_NAME = generateUniqueName();
String ddl = "create table " + TO_CHAR_TABLE_NAME +
"(pk integer not null, \n" +
"col_date date, \n" +
@@ -236,7 +236,7 @@ public class ToCharFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testToCharWithCloneMethod() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "create table " + tableName + " (k varchar primary key, v integer[])";
conn.createStatement().execute(ddl);
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('x',ARRAY[1234])");
@@ -250,7 +250,7 @@ public class ToCharFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testIndexedNull() throws SQLException {
- final String tableName = generateRandomString();
+ final String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute("create table " + tableName +
" (id integer primary key, ts1 timestamp, ts2 timestamp)");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToDateFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToDateFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToDateFunctionIT.java
index 3b11419..6053ef5 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToDateFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ToDateFunctionIT.java
@@ -255,7 +255,7 @@ public class ToDateFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testToDateWithCloneMethod() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "create table " + tableName + " (k varchar primary key, v varchar[])";
conn.createStatement().execute(ddl);
String dateStr = "2100-01-01";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
index 95e7266..18e6e5a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
@@ -55,9 +55,9 @@ public class TransactionalViewIT extends ParallelStatsEnabledIT {
@Before
public void generateTableNames() {
String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
- String tableName = "T_" + generateRandomString();
+ String tableName = "T_" + generateUniqueName();
fullTableName = SchemaUtil.getTableName(schemaName, tableName);
- String viewName = "V_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
fullViewName = SchemaUtil.getTableName(schemaName, viewName);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
index 8f9a294..419459a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
@@ -41,8 +41,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testUnionAllSelects() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -96,8 +96,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testAggregate() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -151,8 +151,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testGroupBy() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -200,8 +200,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testOrderByLimit() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -276,8 +276,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testSelectDiff() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -305,8 +305,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testJoinInUnionAll() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -380,8 +380,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTable() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -428,8 +428,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testUnionAllInDerivedTable() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -497,8 +497,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testUnionAllInSubquery() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -553,8 +553,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testUnionAllWithBindParam() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -601,8 +601,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testExplainUnionAll() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -660,10 +660,10 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testBug2295() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
- String itableName1 = generateRandomString();
- String itableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
+ String itableName1 = generateUniqueName();
+ String itableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -694,8 +694,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testParameterMetaDataNotNull() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -741,10 +741,10 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testDiffDataTypes() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
- String tableName3 = generateRandomString();
- String tableName4 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
+ String tableName3 = generateUniqueName();
+ String tableName4 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -827,10 +827,10 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testDiffScaleSortOrder() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
- String tableName3 = generateRandomString();
- String tableName4 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
+ String tableName3 = generateUniqueName();
+ String tableName4 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -915,8 +915,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testVarcharChar() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -979,8 +979,8 @@ public class UnionAllIT extends ParallelStatsDisabledIT {
@Test
public void testCoerceExpr() throws Exception {
- String tableName1 = generateRandomString();
- String tableName2 = generateRandomString();
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
index 84fa217..d37419b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
@@ -73,13 +73,13 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Before
public void generateTenantId() {
- tenantId = "T_" + generateRandomString();
+ tenantId = "T_" + generateUniqueName();
}
@Test
public void testUpgradeForTenantViewWithSameColumnsAsBaseTable() throws Exception {
- String tableWithViewName = generateRandomString();
- String viewTableName = generateRandomString();
+ String tableWithViewName = generateUniqueName();
+ String viewTableName = generateUniqueName();
testViewUpgrade(true, tenantId, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.EQUAL);
testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
ColumnDiff.EQUAL);
@@ -93,8 +93,8 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Test
public void testUpgradeForTenantViewWithMoreColumnsThanBaseTable() throws Exception {
- String tableWithViewName = generateRandomString();
- String viewTableName = generateRandomString();
+ String tableWithViewName = generateUniqueName();
+ String viewTableName = generateUniqueName();
testViewUpgrade(true, tenantId, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.MORE);
testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
ColumnDiff.MORE);
@@ -108,8 +108,8 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Test
public void testUpgradeForViewWithSameColumnsAsBaseTable() throws Exception {
- String tableWithViewName = generateRandomString();
- String viewTableName = generateRandomString();
+ String tableWithViewName = generateUniqueName();
+ String viewTableName = generateUniqueName();
testViewUpgrade(false, null, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.EQUAL);
testViewUpgrade(false, null, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
ColumnDiff.EQUAL);
@@ -123,8 +123,8 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Test
public void testUpgradeForViewWithMoreColumnsThanBaseTable() throws Exception {
- String tableWithViewName = generateRandomString();
- String viewTableName = generateRandomString();
+ String tableWithViewName = generateUniqueName();
+ String viewTableName = generateUniqueName();
testViewUpgrade(false, null, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.MORE);
testViewUpgrade(false, null, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2", ColumnDiff.MORE);
testViewUpgrade(false, null, null, tableWithViewName + "3", "VIEWSCHEMA", viewTableName + "3", ColumnDiff.MORE);
@@ -136,8 +136,8 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Test
public void testSettingBaseColumnCountWhenBaseTableColumnDropped() throws Exception {
- String tableWithViewName = generateRandomString();
- String viewTableName = generateRandomString();
+ String tableWithViewName = generateUniqueName();
+ String viewTableName = generateUniqueName();
testViewUpgrade(true, tenantId, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.MORE);
testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
ColumnDiff.LESS);
@@ -156,12 +156,12 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
try (Connection conn = DriverManager.getConnection(getUrl())) {
String schemaName = "TEST";
- String phoenixFullTableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
- String localIndexName = "LIDX_" + generateRandomString();
+ String phoenixFullTableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
+ String localIndexName = "LIDX_" + generateUniqueName();
- String viewName = "VIEW_" + generateRandomString();
- String viewIndexName = "VIDX_" + generateRandomString();
+ String viewName = "VIEW_" + generateUniqueName();
+ String viewIndexName = "VIDX_" + generateUniqueName();
String[] tableNames = new String[] { phoenixFullTableName, schemaName + "." + indexName,
schemaName + "." + localIndexName, "diff." + viewName, "test." + viewName, viewName};
@@ -275,19 +275,20 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
public void testMapMultiTenantTableToNamespaceDuringUpgrade() throws SQLException, SnapshotCreationException,
IllegalArgumentException, IOException, InterruptedException {
String[] strings = new String[] { "a", "b", "c", "d" };
- String schemaName = "TEST";
- String phoenixFullTableName = schemaName + "." + generateRandomString();
+ String schemaName1 = "S_" +generateUniqueName(); // TEST
+ String schemaName2 = "S_" +generateUniqueName(); // DIFF
+ String phoenixFullTableName = schemaName1 + "." + generateUniqueName();
String hbaseTableName = SchemaUtil.getPhysicalTableName(Bytes.toBytes(phoenixFullTableName), true)
.getNameAsString();
- String indexName = "IDX_" + generateRandomString();
- String viewName = "V_" + generateRandomString();
- String viewName1 = "V1_" + generateRandomString();
- String viewIndexName = "V_IDX_" + generateRandomString();
- String tenantViewIndexName = "V1_IDX_" + generateRandomString();
-
- String[] tableNames = new String[] { phoenixFullTableName, "diff." + viewName1, "test." + viewName1, viewName1 };
- String[] viewIndexes = new String[] { "test." + viewIndexName, "diff." + viewIndexName };
- String[] tenantViewIndexes = new String[] { "test." + tenantViewIndexName, "diff." + tenantViewIndexName };
+ String indexName = "IDX_" + generateUniqueName();
+ String viewName = "V_" + generateUniqueName();
+ String viewName1 = "V1_" + generateUniqueName();
+ String viewIndexName = "V_IDX_" + generateUniqueName();
+ String tenantViewIndexName = "V1_IDX_" + generateUniqueName();
+
+ String[] tableNames = new String[] { phoenixFullTableName, schemaName2 + "." + viewName1, schemaName1 + "." + viewName1, viewName1 };
+ String[] viewIndexes = new String[] { schemaName1 + "." + viewIndexName, schemaName2 + "." + viewIndexName };
+ String[] tenantViewIndexes = new String[] { schemaName1 + "." + tenantViewIndexName, schemaName2 + "." + tenantViewIndexName };
try (Connection conn = DriverManager.getConnection(getUrl())) {
conn.createStatement().execute("CREATE TABLE " + phoenixFullTableName
+ "(k VARCHAR not null, v INTEGER not null, f INTEGER, g INTEGER NULL, h INTEGER NULL CONSTRAINT pk PRIMARY KEY(k,v)) MULTI_TENANT=true");
@@ -304,16 +305,16 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
// creating global index
conn.createStatement().execute("create index " + indexName + " on " + phoenixFullTableName + "(f)");
// creating view in schema 'diff'
- conn.createStatement().execute("CREATE VIEW diff." + viewName + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
+ conn.createStatement().execute("CREATE VIEW " + schemaName2 + "." + viewName + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
// creating view in schema 'test'
- conn.createStatement().execute("CREATE VIEW test." + viewName + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
+ conn.createStatement().execute("CREATE VIEW " + schemaName1 + "." + viewName + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
conn.createStatement().execute("CREATE VIEW " + viewName + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
// Creating index on views
- conn.createStatement().execute("create local index " + viewIndexName + " on diff." + viewName + "(col)");
- conn.createStatement().execute("create local index " + viewIndexName + " on test." + viewName + "(col)");
+ conn.createStatement().execute("create local index " + viewIndexName + " on " + schemaName2 + "." + viewName + "(col)");
+ conn.createStatement().execute("create local index " + viewIndexName + " on " + schemaName1 + "." + viewName + "(col)");
}
Properties props = new Properties();
- String tenantId = "a";
+ String tenantId = strings[0];
props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, tenantId);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
PreparedStatement upsertStmt = conn
@@ -327,14 +328,14 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
conn.commit();
// creating view in schema 'diff'
conn.createStatement()
- .execute("CREATE VIEW diff." + viewName1 + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
+ .execute("CREATE VIEW " + schemaName2 + "." + viewName1 + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
// creating view in schema 'test'
conn.createStatement()
- .execute("CREATE VIEW test." + viewName1 + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
+ .execute("CREATE VIEW " + schemaName1 + "." + viewName1 + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
conn.createStatement().execute("CREATE VIEW " + viewName1 + " (col VARCHAR) AS SELECT * FROM " + phoenixFullTableName);
// Creating index on views
- conn.createStatement().execute("create index " + tenantViewIndexName + " on diff." + viewName1 + "(col)");
- conn.createStatement().execute("create index " + tenantViewIndexName + " on test." + viewName1 + "(col)");
+ conn.createStatement().execute("create index " + tenantViewIndexName + " on " + schemaName2 + "." + viewName1 + "(col)");
+ conn.createStatement().execute("create index " + tenantViewIndexName + " on " + schemaName1 + "." + viewName1 + "(col)");
}
props = new Properties();
@@ -393,18 +394,18 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Test
public void testSettingBaseColumnCountForMultipleViewsOnTable() throws Exception {
- String baseSchema = "S_" + generateRandomString();
- String baseTable = "T_" + generateRandomString();
+ String baseSchema = "S_" + generateUniqueName();
+ String baseTable = "T_" + generateUniqueName();
String fullBaseTableName = SchemaUtil.getTableName(baseSchema, baseTable);
try (Connection conn = DriverManager.getConnection(getUrl())) {
String baseTableDDL = "CREATE TABLE " + fullBaseTableName + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 INTEGER, V2 INTEGER CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT = true";
conn.createStatement().execute(baseTableDDL);
- String[] tenants = new String[] {"T_" + generateRandomString(), "T_" + generateRandomString()};
+ String[] tenants = new String[] {"T_" + generateUniqueName(), "T_" + generateUniqueName()};
Collections.sort(Arrays.asList(tenants));
- String[] tenantViews = new String[] {"V_" + generateRandomString(), "V_" + generateRandomString(), "V_" + generateRandomString()};
+ String[] tenantViews = new String[] {"V_" + generateUniqueName(), "V_" + generateUniqueName(), "V_" + generateUniqueName()};
Collections.sort(Arrays.asList(tenantViews));
- String[] globalViews = new String[] {"G_" + generateRandomString(), "G_" + generateRandomString(), "G_" + generateRandomString()};
+ String[] globalViews = new String[] {"G_" + generateUniqueName(), "G_" + generateUniqueName(), "G_" + generateUniqueName()};
Collections.sort(Arrays.asList(globalViews));
for (int i = 0; i < 2; i++) {
// Create views for tenants;
@@ -601,7 +602,7 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Test
public void testUpgradeRequiredPreventsSQL() throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
try (Connection conn = getConnection(false, null)) {
conn.createStatement().execute(
"CREATE TABLE " + tableName
@@ -617,7 +618,7 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
conn.unwrap(PhoenixConnection.class), HConstants.LATEST_TIMESTAMP)) {
try {
phxConn.createStatement().execute(
- "CREATE TABLE " + generateRandomString()
+ "CREATE TABLE " + generateUniqueName()
+ " (k1 VARCHAR NOT NULL, k2 VARCHAR, CONSTRAINT PK PRIMARY KEY(K1,K2))");
fail("CREATE TABLE should have failed with UpgradeRequiredException");
} catch (UpgradeRequiredException expected) {
@@ -655,7 +656,7 @@ public class UpgradeIT extends ParallelStatsDisabledIT {
@Test
public void testUpgradingConnectionBypassesUpgradeRequiredCheck() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
try (Connection conn = getConnection(false, null)) {
conn.createStatement()
.execute(
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertBigValuesIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertBigValuesIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertBigValuesIT.java
index 132c0ae..0f97a94 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertBigValuesIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertBigValuesIT.java
@@ -39,7 +39,7 @@ public class UpsertBigValuesIT extends ParallelStatsDisabledIT {
public void testIntegerPK() throws Exception {
int[] testNumbers = {Integer.MIN_VALUE, Integer.MIN_VALUE + 1,
-2, -1, 0, 1, 2, Integer.MAX_VALUE - 1, Integer.MAX_VALUE};
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
ensureTableCreated(getUrl(), tableName,"PKIntValueTest");
Properties props = new Properties();
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -124,7 +124,7 @@ public class UpsertBigValuesIT extends ParallelStatsDisabledIT {
// NOTE: Due to how we parse negative long, -9223372036854775808L, the minimum value of
// bigint is not recognizable in the current version. As a result, we start with
// Long.MIN_VALUE+1 as the smallest value.
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
long[] testNumbers = {Long.MIN_VALUE+1 , Long.MIN_VALUE+2 ,
-2L, -1L, 0L, 1L, 2L, Long.MAX_VALUE-1, Long.MAX_VALUE};
ensureTableCreated(getUrl(), tableName, "PKBigIntValueTest" );
@@ -208,7 +208,7 @@ public class UpsertBigValuesIT extends ParallelStatsDisabledIT {
@Test
public void testIntegerKV() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
int[] testNumbers = {Integer.MIN_VALUE, Integer.MIN_VALUE + 1,
-2, -1, 0, 1, 2, Integer.MAX_VALUE - 1, Integer.MAX_VALUE};
ensureTableCreated(getUrl(), tableName, "KVIntValueTest" );
@@ -292,7 +292,7 @@ public class UpsertBigValuesIT extends ParallelStatsDisabledIT {
// NOTE: Due to how we parse negative long, -9223372036854775808L, the minimum value of
// bigint is not recognizable in the current version. As a result, we start with
// Long.MIN_VALUE+1 as the smallest value.
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
long[] testNumbers = {Long.MIN_VALUE+1, Long.MIN_VALUE+2,
-2L, -1L, 0L, 1L, 2L, Long.MAX_VALUE-1, Long.MAX_VALUE};
ensureTableCreated(getUrl(), tableName, "KVBigIntValueTest" );
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java
index 3fbe5d7..37482de 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java
@@ -47,7 +47,7 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
- String atable = generateRandomString();
+ String atable = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + atable
+ " (ORGANIZATION_ID CHAR(15) NOT NULL, ENTITY_ID CHAR(15) NOT NULL, A_STRING VARCHAR\n"
+
@@ -77,7 +77,7 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT {
assertEquals(A_VALUE, rs.getString(2));
assertFalse(rs.next());
- String atable2 = generateRandomString();
+ String atable2 = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + atable2
+ " (ORGANIZATION_ID CHAR(15) NOT NULL, ENTITY_ID CHAR(15) NOT NULL, A_STRING VARCHAR\n"
+
@@ -98,7 +98,7 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT {
@Test
public void testDynamicUpsertSelect() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String cursorDDL = " CREATE TABLE IF NOT EXISTS " + tableName
+ " (ORGANIZATION_ID VARCHAR(15) NOT NULL, \n"
+ "QUERY_ID VARCHAR(15) NOT NULL, \n"
@@ -107,7 +107,7 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT {
+ "SALT_BUCKETS = 4";
conn.createStatement().execute(cursorDDL);
- String tableName2 = generateRandomString();
+ String tableName2 = generateUniqueName();
String dataTableDDL = "CREATE TABLE IF NOT EXISTS " + tableName2 +
"(" +
"ORGANIZATION_ID CHAR(15) NOT NULL, " +
@@ -158,7 +158,7 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
conn.createStatement().execute("CREATE SEQUENCE keys");
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + tableName + " (pk INTEGER PRIMARY KEY, val INTEGER)");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertValuesIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertValuesIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertValuesIT.java
index 9725175..21ccbf4 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertValuesIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertValuesIT.java
@@ -471,7 +471,7 @@ public class UpsertValuesIT extends BaseClientManagedTimeIT {
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
Connection conn = null;
PreparedStatement pstmt = null;
- String tableName = BaseTest.generateRandomString();
+ String tableName = BaseTest.generateUniqueName();
try {
conn = DriverManager.getConnection(getUrl(), props);
pstmt = conn.prepareStatement("create table " + tableName + " (k varchar primary key, v integer)");
[04/48] phoenix git commit: PHOENIX-3290 Move and/or combine as many
NeedsOwnCluster tests to bring down test run time
Posted by ma...@apache.org.
PHOENIX-3290 Move and/or combine as many NeedsOwnCluster tests to bring down test run time
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2d27179b
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2d27179b
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2d27179b
Branch: refs/heads/calcite
Commit: 2d27179b3fcfc7a8d2c8f7bad4a37b3071c81961
Parents: 7601d59
Author: James Taylor <ja...@apache.org>
Authored: Tue Sep 20 18:39:05 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Tue Sep 20 18:39:05 2016 -0700
----------------------------------------------------------------------
.../StatisticsCollectionRunTrackerIT.java | 25 +-
.../BaseOwnClusterClientManagedTimeIT.java | 29 --
.../BaseOwnClusterHBaseManagedTimeIT.java | 29 --
.../phoenix/end2end/BaseOwnClusterIT.java | 7 +
.../end2end/BaseTenantSpecificTablesIT.java | 87 +++---
.../org/apache/phoenix/end2end/BaseViewIT.java | 81 ++---
.../end2end/CountDistinctCompressionIT.java | 2 +-
.../phoenix/end2end/CsvBulkLoadToolIT.java | 2 +-
.../apache/phoenix/end2end/IndexExtendedIT.java | 2 +-
.../org/apache/phoenix/end2end/KeyOnlyIT.java | 127 +++-----
.../phoenix/end2end/MultiCfQueryExecIT.java | 306 ++++++++-----------
.../phoenix/end2end/ParallelIteratorsIT.java | 112 +++----
.../phoenix/end2end/ParallelStatsEnabledIT.java | 16 +-
.../apache/phoenix/end2end/QueryTimeoutIT.java | 2 +-
.../phoenix/end2end/QueryWithLimitIT.java | 10 +-
.../phoenix/end2end/QueryWithOffsetIT.java | 78 ++---
.../apache/phoenix/end2end/RenewLeaseIT.java | 2 +-
.../phoenix/end2end/SpillableGroupByIT.java | 127 ++++----
.../end2end/StatsCollectionDisabledIT.java | 79 -----
.../end2end/StatsCollectorAbstractIT.java | 77 -----
.../phoenix/end2end/StatsCollectorIT.java | 161 +++++++++-
.../StatsCollectorWithSplitsAndMultiCFIT.java | 186 -----------
.../end2end/TenantSpecificTablesDDLIT.java | 272 ++++++++---------
.../end2end/TenantSpecificTablesDMLIT.java | 269 ++++++----------
.../phoenix/end2end/TransactionalViewIT.java | 48 ++-
.../org/apache/phoenix/end2end/UpgradeIT.java | 104 ++++---
.../phoenix/end2end/UserDefinedFunctionsIT.java | 7 +-
.../java/org/apache/phoenix/end2end/ViewIT.java | 249 ++++++++-------
.../index/ImmutableIndexWithStatsIT.java | 26 +-
.../end2end/index/MutableIndexFailureIT.java | 4 +-
.../end2end/index/ReadOnlyIndexFailureIT.java | 4 +-
.../end2end/index/txn/TxWriteFailureIT.java | 4 +-
.../apache/phoenix/execute/PartialCommitIT.java | 5 +
.../RoundRobinResultIteratorWithStatsIT.java | 4 +-
.../phoenix/monitoring/PhoenixMetricsIT.java | 4 +-
.../apache/phoenix/rpc/PhoenixClientRpcIT.java | 4 +-
.../apache/phoenix/rpc/PhoenixServerRpcIT.java | 4 +-
.../org/apache/phoenix/util/MetaDataUtil.java | 4 +
.../java/org/apache/phoenix/query/BaseTest.java | 4 -
.../java/org/apache/phoenix/util/TestUtil.java | 17 +-
pom.xml | 3 -
41 files changed, 1105 insertions(+), 1478 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
index bf567f0..bd88922 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
@@ -33,20 +33,26 @@ import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.BaseOwnClusterHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.ParallelStatsEnabledIT;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.stats.StatisticsCollectionRunTracker;
import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.google.common.collect.Maps;
-public class StatisticsCollectionRunTrackerIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class StatisticsCollectionRunTrackerIT extends ParallelStatsEnabledIT {
private static final StatisticsCollectionRunTracker tracker = StatisticsCollectionRunTracker
.getInstance(new Configuration());
+
+ private String fullTableName;
+
@BeforeClass
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
@@ -56,9 +62,16 @@ public class StatisticsCollectionRunTrackerIT extends BaseOwnClusterHBaseManaged
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
+ @Before
+ public void generateTableNames() {
+ String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
+ String tableName = "T_" + generateRandomString();
+ fullTableName = SchemaUtil.getTableName(schemaName, tableName);
+ }
+
@Test
public void testStateBeforeAndAfterUpdateStatsCommand() throws Exception {
- String tableName = "testStateBeforeAndAfterUpdateStatsCommand".toUpperCase();
+ String tableName = fullTableName;
HRegionInfo regionInfo = createTableAndGetRegion(tableName);
StatisticsCollectionRunTracker tracker =
StatisticsCollectionRunTracker.getInstance(new Configuration());
@@ -73,7 +86,7 @@ public class StatisticsCollectionRunTrackerIT extends BaseOwnClusterHBaseManaged
@Test
public void testStateBeforeAndAfterMajorCompaction() throws Exception {
- String tableName = "testStateBeforeAndAfterMajorCompaction".toUpperCase();
+ String tableName = fullTableName;
HRegionInfo regionInfo = createTableAndGetRegion(tableName);
StatisticsCollectionRunTracker tracker =
StatisticsCollectionRunTracker.getInstance(new Configuration());
@@ -101,7 +114,7 @@ public class StatisticsCollectionRunTrackerIT extends BaseOwnClusterHBaseManaged
@Test
public void testMajorCompactionPreventsUpdateStatsFromRunning() throws Exception {
- String tableName = "testMajorCompactionPreventsUpdateStatsFromRunning".toUpperCase();
+ String tableName = fullTableName;
HRegionInfo regionInfo = createTableAndGetRegion(tableName);
// simulate stats collection via major compaction by marking the region as compacting in the tracker
markRegionAsCompacting(regionInfo);
@@ -114,7 +127,7 @@ public class StatisticsCollectionRunTrackerIT extends BaseOwnClusterHBaseManaged
@Test
public void testUpdateStatsPreventsAnotherUpdateStatsFromRunning() throws Exception {
- String tableName = "testUpdateStatsPreventsAnotherUpdateStatsFromRunning".toUpperCase();
+ String tableName = fullTableName;
HRegionInfo regionInfo = createTableAndGetRegion(tableName);
markRunningUpdateStats(regionInfo);
Assert.assertEquals("Row count didn't match", CONCURRENT_UPDATE_STATS_ROW_COUNT,
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterClientManagedTimeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterClientManagedTimeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterClientManagedTimeIT.java
deleted file mode 100644
index 6ece674..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterClientManagedTimeIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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 maynot 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 applicablelaw 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;
-
-import org.junit.After;
-
-
-public class BaseOwnClusterClientManagedTimeIT extends BaseOwnClusterIT {
- @After
- public void cleanUpAfterTest() throws Exception {
- long ts = nextTimestamp();
- deletePriorMetaData(ts - 1, getUrl());
- }
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterHBaseManagedTimeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterHBaseManagedTimeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterHBaseManagedTimeIT.java
deleted file mode 100644
index 63a4300..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterHBaseManagedTimeIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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 maynot 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 applicablelaw 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;
-
-import org.apache.hadoop.hbase.HConstants;
-import org.junit.After;
-
-
-public class BaseOwnClusterHBaseManagedTimeIT extends BaseOwnClusterIT {
- @After
- public void cleanUpAfterTest() throws Exception {
- deletePriorMetaData(HConstants.LATEST_TIMESTAMP, getUrl());
- }
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
index 222efcb..44bd3a1 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
@@ -17,7 +17,9 @@
*/
package org.apache.phoenix.end2end;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.phoenix.query.BaseTest;
+import org.junit.After;
import org.junit.AfterClass;
import org.junit.experimental.categories.Category;
@@ -27,4 +29,9 @@ public class BaseOwnClusterIT extends BaseTest {
public static void doTeardown() throws Exception {
tearDownMiniCluster();
}
+
+ @After
+ public void cleanUpAfterTest() throws Exception {
+ deletePriorMetaData(HConstants.LATEST_TIMESTAMP, getUrl());
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
index 1e87b8f..17918d6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
@@ -20,64 +20,61 @@ package org.apache.phoenix.end2end;
import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
import java.sql.SQLException;
-import java.util.Map;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.query.BaseTest;
import org.junit.Before;
-import org.junit.BeforeClass;
-import com.google.common.collect.Maps;
-
-public abstract class BaseTenantSpecificTablesIT extends BaseOwnClusterClientManagedTimeIT {
- protected static final String TENANT_ID = "ZZTop";
- protected static final String TENANT_TYPE_ID = "abc";
- protected static String PHOENIX_JDBC_TENANT_SPECIFIC_URL;
- protected static final String TENANT_ID2 = "Styx";
- protected static String PHOENIX_JDBC_TENANT_SPECIFIC_URL2;
+public abstract class BaseTenantSpecificTablesIT extends ParallelStatsEnabledIT {
+ protected String TENANT_ID;
+ protected String TENANT_TYPE_ID = "abc";
+ protected String PHOENIX_JDBC_TENANT_SPECIFIC_URL;
+ protected String TENANT_ID2;
+ protected String PHOENIX_JDBC_TENANT_SPECIFIC_URL2;
- protected static final String PARENT_TABLE_NAME = "PARENT_TABLE";
- protected static final String PARENT_TABLE_DDL = "CREATE TABLE " + PARENT_TABLE_NAME + " ( \n" +
- " user VARCHAR ,\n" +
- " tenant_id VARCHAR(5) NOT NULL,\n" +
- " tenant_type_id VARCHAR(3) NOT NULL, \n" +
- " id INTEGER NOT NULL\n" +
- " CONSTRAINT pk PRIMARY KEY (tenant_id, tenant_type_id, id)) MULTI_TENANT=true, IMMUTABLE_ROWS=true";
+ protected String PARENT_TABLE_NAME;
+ protected String PARENT_TABLE_DDL;
- protected static final String TENANT_TABLE_NAME = "TENANT_TABLE";
- protected static final String TENANT_TABLE_DDL = "CREATE VIEW " + TENANT_TABLE_NAME + " ( \n" +
- " tenant_col VARCHAR) AS SELECT *\n" +
- " FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id= '" + TENANT_TYPE_ID + "'";
+ protected String TENANT_TABLE_NAME;
+ protected String TENANT_TABLE_DDL;
- protected static final String PARENT_TABLE_NAME_NO_TENANT_TYPE_ID = "PARENT_TABLE_NO_TENANT_TYPE_ID";
- protected static final String PARENT_TABLE_DDL_NO_TENANT_TYPE_ID = "CREATE TABLE " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " ( \n" +
- " user VARCHAR ,\n" +
- " tenant_id VARCHAR(5) NOT NULL,\n" +
- " id INTEGER NOT NULL,\n" +
- " CONSTRAINT pk PRIMARY KEY (tenant_id, id)) MULTI_TENANT=true, IMMUTABLE_ROWS=true";
+ protected String PARENT_TABLE_NAME_NO_TENANT_TYPE_ID;
+ protected String PARENT_TABLE_DDL_NO_TENANT_TYPE_ID;
- protected static final String TENANT_TABLE_NAME_NO_TENANT_TYPE_ID = "TENANT_TABLE_NO_TENANT_TYPE_ID";
- protected static final String TENANT_TABLE_DDL_NO_TENANT_TYPE_ID = "CREATE VIEW " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID + " ( \n" +
- " tenant_col VARCHAR) AS SELECT *\n" +
- " FROM " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID;
+ protected String TENANT_TABLE_NAME_NO_TENANT_TYPE_ID;
+ protected String TENANT_TABLE_DDL_NO_TENANT_TYPE_ID;
@Before
public void createTables() throws SQLException {
- createTestTable(getUrl(), PARENT_TABLE_DDL, null, nextTimestamp());
- createTestTable(getUrl(), PARENT_TABLE_DDL_NO_TENANT_TYPE_ID, null, nextTimestamp());
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, TENANT_TABLE_DDL, null, nextTimestamp());
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, TENANT_TABLE_DDL_NO_TENANT_TYPE_ID, null, nextTimestamp());
- }
-
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ TENANT_ID = "T_" + BaseTest.generateRandomString();
+ TENANT_ID2 = "T_" + BaseTest.generateRandomString();
PHOENIX_JDBC_TENANT_SPECIFIC_URL = getUrl() + ';' + TENANT_ID_ATTRIB + '=' + TENANT_ID;
PHOENIX_JDBC_TENANT_SPECIFIC_URL2 = getUrl() + ';' + TENANT_ID_ATTRIB + '=' + TENANT_ID2;
+ PARENT_TABLE_NAME = "P_" + BaseTest.generateRandomString();
+ TENANT_TABLE_NAME = "V_" + BaseTest.generateRandomString();
+ PARENT_TABLE_NAME_NO_TENANT_TYPE_ID = "P_" + BaseTest.generateRandomString();
+ TENANT_TABLE_NAME_NO_TENANT_TYPE_ID = "V_" + BaseTest.generateRandomString();
+ PARENT_TABLE_DDL = "CREATE TABLE " + PARENT_TABLE_NAME + " ( \n" +
+ " user VARCHAR ,\n" +
+ " tenant_id VARCHAR NOT NULL,\n" +
+ " tenant_type_id VARCHAR(3) NOT NULL, \n" +
+ " id INTEGER NOT NULL\n" +
+ " CONSTRAINT pk PRIMARY KEY (tenant_id, tenant_type_id, id)) MULTI_TENANT=true, IMMUTABLE_ROWS=true";
+ TENANT_TABLE_DDL = "CREATE VIEW " + TENANT_TABLE_NAME + " ( \n" +
+ " tenant_col VARCHAR) AS SELECT *\n" +
+ " FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id= '" + TENANT_TYPE_ID + "'";
+ PARENT_TABLE_DDL_NO_TENANT_TYPE_ID = "CREATE TABLE " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " ( \n" +
+ " user VARCHAR ,\n" +
+ " tenant_id VARCHAR NOT NULL,\n" +
+ " id INTEGER NOT NULL,\n" +
+ " CONSTRAINT pk PRIMARY KEY (tenant_id, id)) MULTI_TENANT=true, IMMUTABLE_ROWS=true";
+ TENANT_TABLE_DDL_NO_TENANT_TYPE_ID = "CREATE VIEW " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID + " ( \n" +
+ " tenant_col VARCHAR) AS SELECT *\n" +
+ " FROM " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID;
+ createTestTable(getUrl(), PARENT_TABLE_DDL);
+ createTestTable(getUrl(), PARENT_TABLE_DDL_NO_TENANT_TYPE_ID);
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, TENANT_TABLE_DDL);
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, TENANT_TABLE_DDL_NO_TENANT_TYPE_ID);
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
index a3c36fa..559c000 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
@@ -44,6 +44,7 @@ import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixStatement;
import org.apache.phoenix.query.KeyRange;
import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.util.MetaDataUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.ScanUtil;
@@ -57,19 +58,20 @@ import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
+public abstract class BaseViewIT extends ParallelStatsEnabledIT {
protected String tableName;
+ protected String schemaName;
protected String fullTableName;
protected String tableDDLOptions;
- protected String tableSuffix;
protected boolean transactional;
@BeforeClass
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Integer.toString(20));
props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
+ // TODO: don't repeat this
+ props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
@@ -79,10 +81,10 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
if (transactional) {
optionBuilder.append(" TRANSACTIONAL=true ");
}
+ this.schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
this.tableDDLOptions = optionBuilder.toString();
- tableSuffix = transactional ? "_TXN" : "";
- this.tableName = TestUtil.DEFAULT_DATA_TABLE_NAME + tableSuffix;
- this.fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ this.tableName = "T_" + generateRandomString();
+ this.fullTableName = SchemaUtil.getTableName(schemaName, tableName);
}
@Parameters(name="transactional = {0}")
@@ -92,7 +94,7 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
protected void testUpdatableViewWithIndex(Integer saltBuckets, boolean localIndex) throws Exception {
String viewName = testUpdatableView(saltBuckets);
- Pair<String,Scan> pair = testUpdatableViewIndex(saltBuckets, localIndex);
+ Pair<String,Scan> pair = testUpdatableViewIndex(saltBuckets, localIndex, viewName);
Scan scan = pair.getSecond();
String tableName = pair.getFirst();
// Confirm that dropping the view also deletes the rows in the index
@@ -124,7 +126,7 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
tableDDLOptions+=",";
tableDDLOptions+=(" SALT_BUCKETS="+saltBuckets);
}
- String viewName = "V";
+ String viewName = "V_" + generateRandomString();
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, k3 DECIMAL, s VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2, k3))" + tableDDLOptions;
conn.createStatement().execute(ddl);
ddl = "CREATE VIEW " + viewName + " AS SELECT * FROM " + fullTableName + " WHERE k1 = 1";
@@ -138,10 +140,10 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
assertTrue(rs.next());
assertEquals(10, rs.getInt(1));
- rs = conn.createStatement().executeQuery("SELECT count(*) FROM v");
+ rs = conn.createStatement().executeQuery("SELECT count(*) FROM " + viewName);
assertTrue(rs.next());
assertEquals(3, rs.getInt(1));
- rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM v");
+ rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM " + viewName);
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertEquals(101, rs.getInt(2));
@@ -156,10 +158,10 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
assertEquals(2, rs.getInt(3));
assertFalse(rs.next());
- conn.createStatement().execute("UPSERT INTO v(k2,S,k3) VALUES(120,'foo',50.0)");
- conn.createStatement().execute("UPSERT INTO v(k2,S,k3) VALUES(121,'bar',51.0)");
+ conn.createStatement().execute("UPSERT INTO " + viewName + "(k2,S,k3) VALUES(120,'foo',50.0)");
+ conn.createStatement().execute("UPSERT INTO " + viewName + "(k2,S,k3) VALUES(121,'bar',51.0)");
conn.commit();
- rs = conn.createStatement().executeQuery("SELECT k1, k2 FROM v WHERE k2 >= 120");
+ rs = conn.createStatement().executeQuery("SELECT k1, k2 FROM " + viewName + " WHERE k2 >= 120");
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertEquals(120, rs.getInt(2));
@@ -171,27 +173,29 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
return viewName;
}
- protected Pair<String,Scan> testUpdatableViewIndex(Integer saltBuckets) throws Exception {
- return testUpdatableViewIndex(saltBuckets, false);
+ protected Pair<String,Scan> testUpdatableViewIndex(Integer saltBuckets, String viewName) throws Exception {
+ return testUpdatableViewIndex(saltBuckets, false, viewName);
}
- protected Pair<String,Scan> testUpdatableViewIndex(Integer saltBuckets, boolean localIndex) throws Exception {
+ protected Pair<String,Scan> testUpdatableViewIndex(Integer saltBuckets, boolean localIndex, String viewName) throws Exception {
ResultSet rs;
Connection conn = DriverManager.getConnection(getUrl());
+ String viewIndexName1 = "I_" + generateRandomString();
+ String viewIndexPhysicalName = MetaDataUtil.getViewIndexName(schemaName, tableName);
if (localIndex) {
- conn.createStatement().execute("CREATE LOCAL INDEX i1 on v(k3)");
+ conn.createStatement().execute("CREATE LOCAL INDEX " + viewIndexName1 + " on " + viewName + "(k3)");
} else {
- conn.createStatement().execute("CREATE INDEX i1 on v(k3) include (s)");
+ conn.createStatement().execute("CREATE INDEX " + viewIndexName1 + " on " + viewName + "(k3) include (s)");
}
- conn.createStatement().execute("UPSERT INTO v(k2,S,k3) VALUES(120,'foo',50.0)");
+ conn.createStatement().execute("UPSERT INTO " + viewName + "(k2,S,k3) VALUES(120,'foo',50.0)");
conn.commit();
- analyzeTable(conn, "v");
- List<KeyRange> splits = getAllSplits(conn, "i1");
+ analyzeTable(conn, viewName);
+ List<KeyRange> splits = getAllSplits(conn, viewIndexName1);
// More guideposts with salted, since it's already pre-split at salt buckets
assertEquals(saltBuckets == null ? 6 : 8, splits.size());
- String query = "SELECT k1, k2, k3, s FROM v WHERE k3 = 51.0";
+ String query = "SELECT k1, k2, k3, s FROM " + viewName + " WHERE k3 = 51.0";
rs = conn.createStatement().executeQuery(query);
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
@@ -202,34 +206,35 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
String queryPlan = QueryUtil.getExplainPlan(rs);
if (localIndex) {
- assertEquals("CLIENT PARALLEL "+ (saltBuckets == null ? 1 : saltBuckets) +"-WAY RANGE SCAN OVER " + tableName +" [1,51]\n"
+ assertEquals("CLIENT PARALLEL "+ (saltBuckets == null ? 1 : saltBuckets) +"-WAY RANGE SCAN OVER " + fullTableName +" [1,51]\n"
+ " SERVER FILTER BY FIRST KEY ONLY\n"
+ "CLIENT MERGE SORT",
queryPlan);
} else {
assertEquals(saltBuckets == null
- ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + tableName +" [" + Short.MIN_VALUE + ",51]"
- : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER _IDX_T" + (transactional ? "_TXN" : "") + " [0," + Short.MIN_VALUE + ",51] - ["+(saltBuckets.intValue()-1)+"," + Short.MIN_VALUE + ",51]\nCLIENT MERGE SORT",
+ ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName +" [" + Short.MIN_VALUE + ",51]"
+ : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [0," + Short.MIN_VALUE + ",51] - ["+(saltBuckets.intValue()-1)+"," + Short.MIN_VALUE + ",51]\nCLIENT MERGE SORT",
queryPlan);
}
+ String viewIndexName2 = "I_" + generateRandomString();
if (localIndex) {
- conn.createStatement().execute("CREATE LOCAL INDEX i2 on v(s)");
+ conn.createStatement().execute("CREATE LOCAL INDEX " + viewIndexName2 + " on " + viewName + "(s)");
} else {
- conn.createStatement().execute("CREATE INDEX i2 on v(s)");
+ conn.createStatement().execute("CREATE INDEX " + viewIndexName2 + " on " + viewName + "(s)");
}
// new index hasn't been analyzed yet
- splits = getAllSplits(conn, "i2");
+ splits = getAllSplits(conn, viewIndexName2);
assertEquals(saltBuckets == null ? 1 : 3, splits.size());
// analyze table should analyze all view data
- analyzeTable(conn, tableName);
- splits = getAllSplits(conn, "i2");
+ analyzeTable(conn, fullTableName);
+ splits = getAllSplits(conn, viewIndexName2);
assertEquals(saltBuckets == null ? 6 : 8, splits.size());
- query = "SELECT k1, k2, s FROM v WHERE s = 'foo'";
+ query = "SELECT k1, k2, s FROM " + viewName + " WHERE s = 'foo'";
Statement statement = conn.createStatement();
rs = statement.executeQuery(query);
Scan scan = statement.unwrap(PhoenixStatement.class).getQueryPlan().getContext().getScan();
@@ -238,24 +243,24 @@ public abstract class BaseViewIT extends BaseOwnClusterHBaseManagedTimeIT {
assertEquals(120, rs.getInt(2));
assertEquals("foo", rs.getString(3));
assertFalse(rs.next());
- String htableName;
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
+ String physicalTableName;
if (localIndex) {
- htableName = tableName;
- assertEquals("CLIENT PARALLEL "+ (saltBuckets == null ? 1 : saltBuckets) +"-WAY RANGE SCAN OVER " + htableName +" [" + (2) + ",'foo']\n"
+ physicalTableName = tableName;
+ assertEquals("CLIENT PARALLEL "+ (saltBuckets == null ? 1 : saltBuckets) +"-WAY RANGE SCAN OVER " + fullTableName +" [" + (2) + ",'foo']\n"
+ " SERVER FILTER BY FIRST KEY ONLY\n"
+ "CLIENT MERGE SORT",QueryUtil.getExplainPlan(rs));
} else {
- htableName = "_IDX_" + tableName;
+ physicalTableName = viewIndexPhysicalName;
assertEquals(saltBuckets == null
- ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + htableName +" [" + (Short.MIN_VALUE+1) + ",'foo']\n"
+ ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName +" [" + (Short.MIN_VALUE+1) + ",'foo']\n"
+ " SERVER FILTER BY FIRST KEY ONLY"
- : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + htableName + " [0," + (Short.MIN_VALUE+1) + ",'foo'] - ["+(saltBuckets.intValue()-1)+"," + (Short.MIN_VALUE+1) + ",'foo']\n"
+ : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [0," + (Short.MIN_VALUE+1) + ",'foo'] - ["+(saltBuckets.intValue()-1)+"," + (Short.MIN_VALUE+1) + ",'foo']\n"
+ " SERVER FILTER BY FIRST KEY ONLY\n"
+ "CLIENT MERGE SORT",
QueryUtil.getExplainPlan(rs));
}
conn.close();
- return new Pair<>(htableName,scan);
+ return new Pair<>(physicalTableName,scan);
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java
index 677d76f..aa7a89c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java
@@ -40,7 +40,7 @@ import org.junit.Test;
import com.google.common.collect.Maps;
-public class CountDistinctCompressionIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class CountDistinctCompressionIT extends BaseOwnClusterIT {
@BeforeClass
public static void doSetup() throws Exception {
Map<String, String> props = Maps.newHashMapWithExpectedSize(3);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java
index 4971fc3..6aaaeb1 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java
@@ -48,7 +48,7 @@ import org.junit.Test;
import com.google.common.collect.Maps;
-public class CsvBulkLoadToolIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class CsvBulkLoadToolIT extends BaseOwnClusterIT {
private static Connection conn;
private static String zkQuorum;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
index b23e342..8314850 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
@@ -64,7 +64,7 @@ import com.google.common.collect.Maps;
* Tests for the {@link IndexTool}
*/
@RunWith(Parameterized.class)
-public class IndexExtendedIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class IndexExtendedIT extends BaseOwnClusterIT {
private final boolean localIndex;
private final boolean transactional;
private final boolean directApi;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
index 50e0709..7ec37ce 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
@@ -17,7 +17,6 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.KEYONLY_NAME;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.apache.phoenix.util.TestUtil.analyzeTable;
import static org.apache.phoenix.util.TestUtil.getAllSplits;
@@ -29,48 +28,41 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.query.KeyRange;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
-public class KeyOnlyIT extends BaseOwnClusterClientManagedTimeIT {
+public class KeyOnlyIT extends ParallelStatsEnabledIT {
+ private String tableName;
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ @Before
+ public void createTable() throws SQLException {
+ tableName = generateRandomString();
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ conn.createStatement().execute("create table " + tableName +
+ " (i1 integer not null, i2 integer not null\n" +
+ " CONSTRAINT pk PRIMARY KEY (i1,i2))");
+ }
}
@Test
public void testKeyOnly() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),KEYONLY_NAME,KEYONLY_NAME,null, ts);
- initTableValues(ts+1);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+30));
- Connection conn3 = DriverManager.getConnection(getUrl(), props);
- analyzeTable(conn3, KEYONLY_NAME);
- conn3.close();
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ initTableValues(conn);
+ analyzeTable(conn, tableName);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+50));
- Connection conn5 = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT i1, i2 FROM KEYONLY";
- PreparedStatement statement = conn5.prepareStatement(query);
+ String query = "SELECT i1, i2 FROM " + tableName;
+ PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
@@ -79,36 +71,24 @@ public class KeyOnlyIT extends BaseOwnClusterClientManagedTimeIT {
assertEquals(3, rs.getInt(1));
assertEquals(4, rs.getInt(2));
assertFalse(rs.next());
- List<KeyRange> splits = getAllSplits(conn5, "KEYONLY");
+ List<KeyRange> splits = getAllSplits(conn, tableName);
assertEquals(3, splits.size());
- conn5.close();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+60));
- Connection conn6 = DriverManager.getConnection(getUrl(), props);
- conn6.createStatement().execute("ALTER TABLE KEYONLY ADD s1 varchar");
- conn6.close();
+ conn.createStatement().execute("ALTER TABLE " + tableName + " ADD s1 varchar");
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+70));
- Connection conn7 = DriverManager.getConnection(getUrl(), props);
- PreparedStatement stmt = conn7.prepareStatement(
+ PreparedStatement stmt = conn.prepareStatement(
"upsert into " +
- "KEYONLY VALUES (?, ?, ?)");
+ tableName + " VALUES (?, ?, ?)");
stmt.setInt(1, 5);
stmt.setInt(2, 6);
stmt.setString(3, "foo");
stmt.execute();
- conn7.commit();
- conn7.close();
+ conn.commit();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+80));
- Connection conn8 = DriverManager.getConnection(getUrl(), props);
- analyzeTable(conn8, KEYONLY_NAME);
- conn8.close();
+ analyzeTable(conn, tableName);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+90));
- Connection conn9 = DriverManager.getConnection(getUrl(), props);
- query = "SELECT i1 FROM KEYONLY";
- statement = conn9.prepareStatement(query);
+ query = "SELECT i1 FROM " + tableName;
+ statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
@@ -118,8 +98,8 @@ public class KeyOnlyIT extends BaseOwnClusterClientManagedTimeIT {
assertEquals(5, rs.getInt(1));
assertFalse(rs.next());
- query = "SELECT i1,s1 FROM KEYONLY";
- statement = conn9.prepareStatement(query);
+ query = "SELECT i1,s1 FROM " + tableName;
+ statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
@@ -131,67 +111,49 @@ public class KeyOnlyIT extends BaseOwnClusterClientManagedTimeIT {
assertEquals(5, rs.getInt(1));
assertEquals("foo", rs.getString(2));
assertFalse(rs.next());
-
- conn9.close();
}
@Test
public void testOr() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),KEYONLY_NAME,KEYONLY_NAME,null, ts);
- initTableValues(ts+1);
Properties props = new Properties();
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ initTableValues(conn);
+ analyzeTable(conn, tableName);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+3));
- Connection conn3 = DriverManager.getConnection(getUrl(), props);
- analyzeTable(conn3, KEYONLY_NAME);
- conn3.close();
-
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+5));
- Connection conn5 = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT i1 FROM KEYONLY WHERE i1 < 2 or i1 = 3";
- PreparedStatement statement = conn5.prepareStatement(query);
+ String query = "SELECT i1 FROM " + tableName + " WHERE i1 < 2 or i1 = 3";
+ PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertTrue(rs.next());
assertEquals(3, rs.getInt(1));
assertFalse(rs.next());
- conn5.close();
}
@Test
public void testQueryWithLimitAndStats() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),KEYONLY_NAME,KEYONLY_NAME,null, ts);
- initTableValues(ts+1, 100);
-
- TestUtil.analyzeTable(getUrl(), ts+10, KEYONLY_NAME);
Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ initTableValues(conn, 100);
+ analyzeTable(conn, tableName);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+50));
- Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT i1 FROM KEYONLY LIMIT 1";
+ String query = "SELECT i1 FROM " + tableName + " LIMIT 1";
ResultSet rs = conn.createStatement().executeQuery(query);
assertTrue(rs.next());
assertEquals(0, rs.getInt(1));
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals("CLIENT SERIAL 1-WAY FULL SCAN OVER KEYONLY\n" +
+ assertEquals("CLIENT SERIAL 1-WAY FULL SCAN OVER " + tableName + "\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER 1 ROW LIMIT\n" +
"CLIENT 1 ROW LIMIT", QueryUtil.getExplainPlan(rs));
- conn.close();
}
- protected static void initTableValues(long ts) throws Exception {
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(url, props);
+ private void initTableValues(Connection conn) throws Exception {
PreparedStatement stmt = conn.prepareStatement(
"upsert into " +
- "KEYONLY VALUES (?, ?)");
+ tableName + " VALUES (?, ?)");
stmt.setInt(1, 1);
stmt.setInt(2, 2);
stmt.execute();
@@ -201,16 +163,12 @@ public class KeyOnlyIT extends BaseOwnClusterClientManagedTimeIT {
stmt.execute();
conn.commit();
- conn.close();
}
- protected static void initTableValues(long ts, int nRows) throws Exception {
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(url, props);
+ private void initTableValues(Connection conn, int nRows) throws Exception {
PreparedStatement stmt = conn.prepareStatement(
"upsert into " +
- "KEYONLY VALUES (?, ?)");
+ tableName + " VALUES (?, ?)");
for (int i = 0; i < nRows; i++) {
stmt.setInt(1, i);
stmt.setInt(2, i+1);
@@ -218,6 +176,5 @@ public class KeyOnlyIT extends BaseOwnClusterClientManagedTimeIT {
}
conn.commit();
- conn.close();
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
index b9d27ca..4a0bb01 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
@@ -29,50 +29,44 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.query.KeyRange;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
+import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Before;
import org.junit.Test;
-import com.google.common.collect.Maps;
+public class MultiCfQueryExecIT extends ParallelStatsEnabledIT {
+ private String fullTableName;
-public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
- private static final String MULTI_CF = "MULTI_CF";
-
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ @Before
+ public void generateTableNames() throws SQLException {
+ String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
+ String tableName = "T_" + generateRandomString();
+ fullTableName = SchemaUtil.getTableName(schemaName, tableName);
}
-
- protected static void initTableValues(long ts) throws Exception {
- ensureTableCreated(getUrl(),MULTI_CF,MULTI_CF,null, ts-2);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(url, props);
- conn.setAutoCommit(true);
+
+ private void createTable(Connection conn) throws SQLException {
+ conn.createStatement().execute(
+ "create table " + fullTableName + " (id char(15) not null primary key,\n"
+ + " a.unique_user_count integer,\n" + " b.unique_org_count integer,\n"
+ + " c.db_cpu_utilization decimal(31,10),\n" + " d.transaction_count bigint,\n"
+ + " e.cpu_utilization decimal(31,10),\n" + " f.response_time bigint,\n"
+ + " g.response_time bigint)");
+ }
+
+ private void initTableValues(Connection conn) throws Exception {
// Insert all rows at ts
PreparedStatement stmt = conn.prepareStatement(
- "upsert into " +
- "MULTI_CF(" +
- " ID, " +
- " TRANSACTION_COUNT, " +
- " CPU_UTILIZATION, " +
- " DB_CPU_UTILIZATION," +
- " UNIQUE_USER_COUNT," +
- " F.RESPONSE_TIME," +
- " G.RESPONSE_TIME)" +
+"upsert into " + fullTableName + "(" + " ID, "
+ + " TRANSACTION_COUNT, " + " CPU_UTILIZATION, " + " DB_CPU_UTILIZATION,"
+ + " UNIQUE_USER_COUNT," + " F.RESPONSE_TIME," + " G.RESPONSE_TIME)"
+ +
"VALUES (?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, "000000000000001");
stmt.setInt(2, 100);
@@ -90,18 +84,18 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
stmt.setLong(6, 2222);
stmt.setLong(7, 22222);
stmt.execute();
+ conn.commit();
}
@Test
public void testConstantCount() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT count(1) from multi_cf";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT count(1) from " + fullTableName;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(ts);
- analyzeTable(getUrl(), ts + 3, "MULTI_CF");
+ createTable(conn);
+ initTableValues(conn);
+ analyzeTable(conn, fullTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -111,17 +105,16 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
conn.close();
}
}
-
+
@Test
public void testCFToDisambiguateInSelectOnly1() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from multi_cf where ID = '000000000000002'";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from " + fullTableName + " where ID = '000000000000002'";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(ts);
- analyzeTable(getUrl(), ts + 3, "MULTI_CF");
+ createTable(conn);
+ initTableValues(conn);
+ analyzeTable(conn, fullTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -132,17 +125,16 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
conn.close();
}
}
-
+
@Test
public void testCFToDisambiguateInSelectOnly2() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from multi_cf where TRANSACTION_COUNT = 200";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from " + fullTableName + " where TRANSACTION_COUNT = 200";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(ts);
- analyzeTable(getUrl(), ts + 3, "MULTI_CF");
+ createTable(conn);
+ initTableValues(conn);
+ analyzeTable(conn, fullTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -153,17 +145,16 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
conn.close();
}
}
-
+
@Test
public void testGuidePostsForMultiCFs() throws Exception {
- long ts = nextTimestamp();
- initTableValues(ts);
- String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from multi_cf where F.RESPONSE_TIME = 2222";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from " + fullTableName + " where F.RESPONSE_TIME = 2222";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- analyzeTable(getUrl(), ts + 3, "MULTI_CF");
+ createTable(conn);
+ initTableValues(conn);
+ analyzeTable(conn, fullTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -172,11 +163,11 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
assertFalse(rs.next());
// Use E column family. Since the column family with the empty key value (the first one, A)
// is always added to the scan, we never really use other guideposts (but this may change).
- List<KeyRange> splits = getAllSplits(conn, "MULTI_CF", "e.cpu_utilization IS NOT NULL", "COUNT(*)");
+ List<KeyRange> splits = getAllSplits(conn, fullTableName, "e.cpu_utilization IS NOT NULL", "COUNT(*)");
// Since the E column family is not populated, it won't have as many splits
assertEquals(3, splits.size());
// Same as above for G column family.
- splits = getAllSplits(conn, "MULTI_CF", "g.response_time IS NOT NULL", "COUNT(*)");
+ splits = getAllSplits(conn, fullTableName, "g.response_time IS NOT NULL", "COUNT(*)");
assertEquals(3, splits.size());
} finally {
conn.close();
@@ -185,48 +176,38 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
@Test
public void testGuidePostsForMultiCFsOverUnevenDistrib() throws Exception {
- long ts = nextTimestamp();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
Connection conn = DriverManager.getConnection(getUrl(), props);
-
- conn.createStatement().execute("CREATE TABLE T_6CF (K1 CHAR(1) NOT NULL, "
- + "K2 VARCHAR NOT NULL, "
- + "CF1.A INTEGER, "
- + "CF2.B INTEGER, "
- + "CF3.C INTEGER, "
- + "CF4.D INTEGER, "
- + "CF5.E INTEGER, "
- + "CF6.F INTEGER "
- + "CONSTRAINT PK PRIMARY KEY (K1,K2)) SPLIT ON ('B','C','D')");
- conn.close();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 20));
- conn = DriverManager.getConnection(getUrl(), props);
+ conn.createStatement().execute(
+ "CREATE TABLE " + fullTableName + " (K1 CHAR(1) NOT NULL, "
+ + "K2 VARCHAR NOT NULL, " + "CF1.A INTEGER, "
+ + "CF2.B INTEGER, " + "CF3.C INTEGER, " + "CF4.D INTEGER, " + "CF5.E INTEGER, "
+ + "CF6.F INTEGER " + "CONSTRAINT PK PRIMARY KEY (K1,K2)) SPLIT ON ('B','C','D')");
+
for (int i = 0; i < 100; i++) {
- String upsert = "UPSERT INTO T_6CF(K1,K2,A) VALUES('" + Character.toString((char)('A'+i%10)) + "','" + (i*10) + "'," + i + ")";
+ String upsert = "UPSERT INTO " + fullTableName + "(K1,K2,A) VALUES('" + Character.toString((char)('A' + i % 10))
+ + "','" + (i * 10) + "'," + i + ")";
conn.createStatement().execute(upsert);
if (i % 10 == 0) {
- conn.createStatement().execute("UPSERT INTO T_6CF(K1,K2,F) VALUES('" + Character.toString((char)('A'+i%10)) + "','" + (i*10) + "'," + (i * 10) + ")");
+ conn.createStatement().execute(
+ "UPSERT INTO " + fullTableName + "(K1,K2,F) VALUES('" + Character.toString((char)('A' + i % 10))
+ + "','" + (i * 10) + "'," + (i * 10) + ")");
}
}
conn.commit();
- conn.close();
-
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 40));
- conn = DriverManager.getConnection(getUrl(), props);
try {
- analyzeTable(getUrl(), ts + 30, "T_6CF");
- PreparedStatement statement = conn.prepareStatement("select count(*) from T_6CF where f < 400");
+ analyzeTable(conn, fullTableName);
+ PreparedStatement statement = conn.prepareStatement("select count(*) from " + fullTableName + " where f < 400");
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
assertEquals(4, rs.getLong(1));
assertFalse(rs.next());
- List<KeyRange> splits = getAllSplits(conn, "T_6CF", "f < 400", "COUNT(*)");
+ List<KeyRange> splits = getAllSplits(conn, fullTableName, "f < 400", "COUNT(*)");
// Uses less populated column f
assertEquals(14, splits.size());
// Uses more populated column a
- splits = getAllSplits(conn, "T_6CF", "a < 80", "COUNT(*)");
+ splits = getAllSplits(conn, fullTableName, "a < 80", "COUNT(*)");
assertEquals(104, splits.size());
} finally {
conn.close();
@@ -235,77 +216,67 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
@Test
public void testGuidePostsRetrievedForMultiCF() throws Exception {
- Connection conn;
- PreparedStatement stmt;
- ResultSet rs;
+ Connection conn;
+ PreparedStatement stmt;
+ ResultSet rs;
- long ts = nextTimestamp();
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
- conn = DriverManager.getConnection(getUrl(), props);
- conn.createStatement()
- .execute(
- "CREATE TABLE T ( k INTEGER PRIMARY KEY, A.V1 VARCHAR, B.V2 VARCHAR, C.V3 VARCHAR)");
- conn.close();
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ conn = DriverManager.getConnection(getUrl(), props);
+ conn.createStatement().execute(
+ "CREATE TABLE " + fullTableName + " ( k INTEGER PRIMARY KEY, A.V1 VARCHAR, B.V2 VARCHAR, C.V3 VARCHAR)");
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 30));
- conn = DriverManager.getConnection(getUrl(), props);
- stmt = conn.prepareStatement("UPSERT INTO T VALUES(?,?,?,?)");
- stmt.setInt(1, 1);
- stmt.setString(2, "A");
- stmt.setString(3, "B");
- stmt.setString(4, "C");
- stmt.execute();
- conn.commit();
-
- stmt = conn.prepareStatement("UPSERT INTO T VALUES(?,?,?,?)");
- stmt.setInt(1, 2);
- stmt.setString(2, "D");
- stmt.setString(3, "E");
- stmt.setString(4, "F");
- stmt.execute();
- conn.commit();
-
- stmt = conn.prepareStatement("UPSERT INTO T(k, A.V1, C.V3) VALUES(?,?,?)");
- stmt.setInt(1, 3);
- stmt.setString(2, "E");
- stmt.setString(3, "X");
- stmt.execute();
- conn.commit();
-
- stmt = conn.prepareStatement("UPSERT INTO T(k, A.V1, C.V3) VALUES(?,?,?)");
- stmt.setInt(1, 4);
- stmt.setString(2, "F");
- stmt.setString(3, "F");
- stmt.execute();
- conn.commit();
-
- conn.close();
-
- analyzeTable(getUrl(), ts + 50, "T");
+ stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + " VALUES(?,?,?,?)");
+ stmt.setInt(1, 1);
+ stmt.setString(2, "A");
+ stmt.setString(3, "B");
+ stmt.setString(4, "C");
+ stmt.execute();
+ conn.commit();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 60));
- conn = DriverManager.getConnection(getUrl(), props);
- rs = conn.createStatement().executeQuery("SELECT B.V2 FROM T WHERE B.V2 = 'B'");
- assertTrue(rs.next());
- assertEquals("B",rs.getString(1));
- List<KeyRange> splits = getAllSplits(conn, "T", "C.V3 = 'X'", "A.V1");
- assertEquals(5, splits.size());
- splits = getAllSplits(conn, "T", "B.V2 = 'B'", "B.V2");
- assertEquals(3, splits.size());
- conn.close();
+ stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + " VALUES(?,?,?,?)");
+ stmt.setInt(1, 2);
+ stmt.setString(2, "D");
+ stmt.setString(3, "E");
+ stmt.setString(4, "F");
+ stmt.execute();
+ conn.commit();
+
+ stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + "(k, A.V1, C.V3) VALUES(?,?,?)");
+ stmt.setInt(1, 3);
+ stmt.setString(2, "E");
+ stmt.setString(3, "X");
+ stmt.execute();
+ conn.commit();
+
+ stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + "(k, A.V1, C.V3) VALUES(?,?,?)");
+ stmt.setInt(1, 4);
+ stmt.setString(2, "F");
+ stmt.setString(3, "F");
+ stmt.execute();
+ conn.commit();
+
+ analyzeTable(conn, fullTableName);
+
+ rs = conn.createStatement().executeQuery("SELECT B.V2 FROM " + fullTableName + " WHERE B.V2 = 'B'");
+ assertTrue(rs.next());
+ assertEquals("B", rs.getString(1));
+ List<KeyRange> splits = getAllSplits(conn, fullTableName, "C.V3 = 'X'", "A.V1");
+ assertEquals(5, splits.size());
+ splits = getAllSplits(conn, fullTableName, "B.V2 = 'B'", "B.V2");
+ assertEquals(3, splits.size());
+ conn.close();
}
@Test
public void testCFToDisambiguate2() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from multi_cf where G.RESPONSE_TIME-1 = F.RESPONSE_TIME";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from " + fullTableName
+ + " where G.RESPONSE_TIME-1 = F.RESPONSE_TIME";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(ts);
- analyzeTable(getUrl(), ts + 3, "MULTI_CF");
+ createTable(conn);
+ initTableValues(conn);
+ analyzeTable(conn, fullTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -316,35 +287,25 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
conn.close();
}
}
-
+
@Test
public void testDefaultCFToDisambiguate() throws Exception {
- long ts = nextTimestamp();
- initTableValues(ts);
- String ddl = "ALTER TABLE multi_cf ADD response_time BIGINT";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 10);
- Connection conn = DriverManager.getConnection(url);
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(url, props);
+ createTable(conn);
+ initTableValues(conn);
+
+ String ddl = "ALTER TABLE " + fullTableName + " ADD response_time BIGINT";
conn.createStatement().execute(ddl);
- conn.close();
-
- analyzeTable(getUrl(), ts + 15, "MULTI_CF");
-
- String dml = "upsert into " +
- "MULTI_CF(" +
- " ID, " +
- " RESPONSE_TIME)" +
- "VALUES ('000000000000003', 333)";
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 20);
- conn = DriverManager.getConnection(url);
+
+ String dml = "upsert into " + fullTableName + "(" + " ID, " + " RESPONSE_TIME)"
+ + "VALUES ('000000000000003', 333)";
conn.createStatement().execute(dml);
conn.commit();
- conn.close();
-
- analyzeTable(getUrl(), ts + 25, "MULTI_CF");
-
- String query = "SELECT ID,RESPONSE_TIME from multi_cf where RESPONSE_TIME = 333";
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 30); // Run query at timestamp 5
- conn = DriverManager.getConnection(url);
+
+ analyzeTable(conn, fullTableName);
+
+ String query = "SELECT ID,RESPONSE_TIME from " + fullTableName + " where RESPONSE_TIME = 333";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -356,17 +317,16 @@ public class MultiCfQueryExecIT extends BaseOwnClusterClientManagedTimeIT {
conn.close();
}
}
-
+
@Test
public void testEssentialColumnFamilyForRowKeyFilter() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from multi_cf where SUBSTR(ID, 15) = '2'";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT F.RESPONSE_TIME,G.RESPONSE_TIME from " + fullTableName + " where SUBSTR(ID, 15) = '2'";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(ts);
- analyzeTable(getUrl(), ts + 3, "MULTI_CF");
+ createTable(conn);
+ initTableValues(conn);
+ analyzeTable(conn, fullTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
index 4e1e983..dfcf68c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
@@ -17,13 +17,12 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.STABLE_NAME;
+import static org.apache.phoenix.util.TestUtil.STABLE_PK_NAME;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.apache.phoenix.util.TestUtil.analyzeTable;
import static org.apache.phoenix.util.TestUtil.analyzeTableColumns;
import static org.apache.phoenix.util.TestUtil.analyzeTableIndex;
import static org.apache.phoenix.util.TestUtil.getAllSplits;
-import static org.apache.phoenix.util.TestUtil.getSplits;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -31,8 +30,9 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Collections;
import java.util.List;
-import java.util.Map;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.client.Scan;
@@ -40,18 +40,16 @@ import org.apache.phoenix.compile.QueryPlan;
import org.apache.phoenix.coprocessor.BaseScannerRegionObserver;
import org.apache.phoenix.jdbc.PhoenixStatement;
import org.apache.phoenix.query.KeyRange;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.types.PChar;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Before;
import org.junit.Test;
-import com.google.common.collect.Maps;
+import com.google.common.base.Joiner;
-public class ParallelIteratorsIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class ParallelIteratorsIT extends ParallelStatsEnabledIT {
- private static final String STABLE_INDEX = "STABLE_INDEX";
protected static final byte[] KMIN = new byte[] {'!'};
protected static final byte[] KMIN2 = new byte[] {'.'};
protected static final byte[] K1 = new byte[] {'a'};
@@ -66,27 +64,39 @@ public class ParallelIteratorsIT extends BaseOwnClusterHBaseManagedTimeIT {
protected static final byte[] KMAX2 = new byte[] {'z'};
protected static final byte[] KR = new byte[] { 'r' };
protected static final byte[] KP = new byte[] { 'p' };
+
+ private String tableName;
+ private String indexName;
+
+ @Before
+ public void generateTableNames() {
+ tableName = "T_" + generateRandomString();
+ indexName = "I_" + generateRandomString();
+ }
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private List<KeyRange> getSplits(Connection conn, byte[] lowerRange, byte[] upperRange) throws SQLException {
+ return TestUtil.getSplits(conn, tableName, STABLE_PK_NAME, lowerRange, upperRange, null, "COUNT(*)");
}
@Test
public void testGetSplits() throws Exception {
Connection conn = DriverManager.getConnection(getUrl(), TEST_PROPERTIES);
- initTableValues(conn);
-
- PreparedStatement stmt = conn.prepareStatement("UPDATE STATISTICS STABLE");
+ byte[][] splits = new byte[][] {K3,K4,K9,K11};
+ createTable(conn, splits);
+ PreparedStatement stmt = conn.prepareStatement("upsert into " + tableName + " VALUES (?, ?)");
+ stmt.setString(1, new String(KMIN));
+ stmt.setInt(2, 1);
stmt.execute();
+ stmt.setString(1, new String(KMAX));
+ stmt.setInt(2, 2);
+ stmt.execute();
+ conn.commit();
+
+ conn.createStatement().execute("UPDATE STATISTICS " + tableName);
List<KeyRange> keyRanges;
- keyRanges = getAllSplits(conn);
+ keyRanges = getAllSplits(conn, tableName);
assertEquals("Unexpected number of splits: " + keyRanges, 7, keyRanges.size());
assertEquals(newKeyRange(KeyRange.UNBOUND, KMIN), keyRanges.get(0));
assertEquals(newKeyRange(KMIN, K3), keyRanges.get(1));
@@ -116,10 +126,10 @@ public class ParallelIteratorsIT extends BaseOwnClusterHBaseManagedTimeIT {
public void testServerNameOnScan() throws Exception {
Connection conn = DriverManager.getConnection(getUrl(), TEST_PROPERTIES);
byte[][] splits = new byte[][] { K3, K9, KR };
- ensureTableCreated(getUrl(), STABLE_NAME, STABLE_NAME, splits);
+ createTable(conn, splits);
PhoenixStatement stmt = conn.createStatement().unwrap(PhoenixStatement.class);
- ResultSet rs = stmt.executeQuery("SELECT * FROM " + STABLE_NAME + " LIMIT 1");
+ ResultSet rs = stmt.executeQuery("SELECT * FROM " + tableName + " LIMIT 1");
rs.next();
QueryPlan plan = stmt.getQueryPlan();
List<List<Scan>> nestedScans = plan.getScans();
@@ -138,56 +148,57 @@ public class ParallelIteratorsIT extends BaseOwnClusterHBaseManagedTimeIT {
public void testGuidePostsLifeCycle() throws Exception {
Connection conn = DriverManager.getConnection(getUrl(), TEST_PROPERTIES);
byte[][] splits = new byte[][] { K3, K9, KR };
- ensureTableCreated(getUrl(), STABLE_NAME, STABLE_NAME, splits);
+ createTable(conn, splits);
+
// create index
- conn.createStatement().execute("CREATE INDEX " + STABLE_INDEX + " ON " + STABLE_NAME + "( \"value\")");
+ conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + tableName + "( \"value\")");
// before upserting
- List<KeyRange> keyRanges = getAllSplits(conn);
+ List<KeyRange> keyRanges = getAllSplits(conn, tableName);
assertEquals(4, keyRanges.size());
upsert(conn, new byte[][] { KMIN, K4, K11 });
// Analyze table alone
- analyzeTableColumns(conn);
- keyRanges = getAllSplits(conn);
+ analyzeTableColumns(conn, tableName);
+ keyRanges = getAllSplits(conn, tableName);
assertEquals(7, keyRanges.size());
// Get all splits on the index table before calling analyze on the index table
- List<KeyRange> indexSplits = getAllSplits(conn, STABLE_INDEX);
+ List<KeyRange> indexSplits = getAllSplits(conn, indexName);
assertEquals(1, indexSplits.size());
// Analyze the index table alone
- analyzeTableIndex(conn, STABLE_NAME);
+ analyzeTableIndex(conn, tableName);
// check the splits of the main table
- keyRanges = getAllSplits(conn);
+ keyRanges = getAllSplits(conn, tableName);
assertEquals(7, keyRanges.size());
// check the splits on the index table
- indexSplits = getAllSplits(conn, STABLE_INDEX);
+ indexSplits = getAllSplits(conn, indexName);
assertEquals(4, indexSplits.size());
upsert(conn, new byte[][] { KMIN2, K5, K12 });
// Update the stats for both the table and the index table
- analyzeTable(conn);
- keyRanges = getAllSplits(conn);
+ analyzeTable(conn, tableName);
+ keyRanges = getAllSplits(conn, tableName);
assertEquals(10, keyRanges.size());
// the above analyze should have udpated the index splits also
- indexSplits = getAllSplits(conn, STABLE_INDEX);
+ indexSplits = getAllSplits(conn, indexName);
assertEquals(7, indexSplits.size());
upsert(conn, new byte[][] { K1, K6, KP });
// Update only the table
- analyzeTableColumns(conn);
- keyRanges = getAllSplits(conn);
+ analyzeTableColumns(conn, tableName);
+ keyRanges = getAllSplits(conn, tableName);
assertEquals(13, keyRanges.size());
// No change to the index splits
- indexSplits = getAllSplits(conn, STABLE_INDEX);
+ indexSplits = getAllSplits(conn, indexName);
assertEquals(7, indexSplits.size());
- analyzeTableIndex(conn, STABLE_NAME);
- indexSplits = getAllSplits(conn, STABLE_INDEX);
+ analyzeTableIndex(conn, tableName);
+ indexSplits = getAllSplits(conn, indexName);
// the above analyze should have udpated the index splits only
assertEquals(10, indexSplits.size());
// No change in main table splits
- keyRanges = getAllSplits(conn);
+ keyRanges = getAllSplits(conn, tableName);
assertEquals(13, keyRanges.size());
conn.close();
}
- private static void upsert(Connection conn, byte[][] val) throws Exception {
- PreparedStatement stmt = conn.prepareStatement("upsert into " + STABLE_NAME + " VALUES (?, ?)");
+ private void upsert(Connection conn, byte[][] val) throws Exception {
+ PreparedStatement stmt = conn.prepareStatement("upsert into " + tableName + " VALUES (?, ?)");
stmt.setString(1, new String(val[0]));
stmt.setInt(2, 1);
stmt.execute();
@@ -204,16 +215,13 @@ public class ParallelIteratorsIT extends BaseOwnClusterHBaseManagedTimeIT {
return PChar.INSTANCE.getKeyRange(lowerRange, true, upperRange, false);
}
- private static void initTableValues(Connection conn) throws Exception {
- byte[][] splits = new byte[][] {K3,K4,K9,K11};
- ensureTableCreated(getUrl(),STABLE_NAME, STABLE_NAME, splits);
- PreparedStatement stmt = conn.prepareStatement("upsert into " + STABLE_NAME + " VALUES (?, ?)");
- stmt.setString(1, new String(KMIN));
- stmt.setInt(2, 1);
- stmt.execute();
- stmt.setString(1, new String(KMAX));
- stmt.setInt(2, 2);
+ private void createTable (Connection conn, byte[][] splits) throws SQLException {
+ PreparedStatement stmt = conn.prepareStatement("create table " + tableName +
+ " (id char(1) not null primary key,\n" +
+ " \"value\" integer) SPLIT ON (" + Joiner.on(',').join(Collections.nCopies(splits.length, "?")) + ")");
+ for (int i = 0; i < splits.length; i++) {
+ stmt.setBytes(i+1, splits[i]);
+ }
stmt.execute();
- conn.commit();
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
index 8ecb7b4..322cb9e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
@@ -18,8 +18,15 @@
package org.apache.phoenix.end2end;
+import java.util.Map;
+
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.util.ReadOnlyProps;
+import org.junit.BeforeClass;
import org.junit.experimental.categories.Category;
+import com.google.common.collect.Maps;
+
/**
*
* Base class for tests that have statistics enabled.
@@ -27,5 +34,12 @@ import org.junit.experimental.categories.Category;
*/
@Category(ParallelStatsEnabledTest.class)
public abstract class ParallelStatsEnabledIT extends BaseParallelIT {
-
+
+ @BeforeClass
+ @Shadower(classBeingShadowed = BaseParallelIT.class)
+ public static void doSetup() throws Exception {
+ Map<String,String> props = Maps.newHashMapWithExpectedSize(5);
+ props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
+ setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
index 7450022..2d58615 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryTimeoutIT.java
@@ -48,7 +48,7 @@ import org.junit.Test;
import com.google.common.collect.Maps;
-public class QueryTimeoutIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class QueryTimeoutIT extends BaseOwnClusterIT {
private static final String TEST_TABLE_NAME = "T";
@BeforeClass
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
index fae7a7c..cf8b0a9 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
@@ -43,7 +43,7 @@ import org.junit.Test;
import com.google.common.collect.Maps;
-public class QueryWithLimitIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class QueryWithLimitIT extends BaseOwnClusterIT {
@BeforeClass
public static void doSetup() throws Exception {
@@ -61,7 +61,9 @@ public class QueryWithLimitIT extends BaseOwnClusterHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- ensureTableCreated(getUrl(), KEYONLY_NAME, KEYONLY_NAME);
+ conn.createStatement().execute("create table " + KEYONLY_NAME + "\n" +
+ " (i1 integer not null, i2 integer not null\n" +
+ " CONSTRAINT pk PRIMARY KEY (i1,i2))");
initTableValues(conn, 100);
String query = "SELECT i1 FROM KEYONLY LIMIT 1";
@@ -85,7 +87,9 @@ public class QueryWithLimitIT extends BaseOwnClusterHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- ensureTableCreated(getUrl(), KEYONLY_NAME, KEYONLY_NAME);
+ conn.createStatement().execute("create table " + KEYONLY_NAME + "\n" +
+ " (i1 integer not null, i2 integer not null\n" +
+ " CONSTRAINT pk PRIMARY KEY (i1,i2))");
initTableValues(conn, 100);
conn.createStatement().execute("UPDATE STATISTICS " + KEYONLY_NAME);
[39/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
PHOENIX-3253 Make changes to tests to support method level parallelization
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/34ba28e6
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/34ba28e6
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/34ba28e6
Branch: refs/heads/calcite
Commit: 34ba28e60f66cb7b537b60c9ef04b8a26036f010
Parents: 0494e54
Author: James Taylor <ja...@apache.org>
Authored: Mon Oct 3 18:02:48 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Mon Oct 3 18:02:48 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/GroupByCaseIT.java | 31 +++++++++++---------
1 file changed, 17 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/34ba28e6/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
index 48b926a..be59fd7 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
@@ -451,32 +451,35 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
public void testGroupByWithAliasWithSameColumnName() throws SQLException {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String ddl = "create table test3 (pk integer primary key, col integer)";
+ String tableName1 = generateUniqueName();
+ String tableName2 = generateUniqueName();
+ String tableName3 = generateUniqueName();
+ String ddl = "create table " + tableName1 + " (pk integer primary key, col integer)";
conn.createStatement().execute(ddl);
- ddl = "create table test4 (pk integer primary key, col integer)";
+ ddl = "create table " + tableName2 + " (pk integer primary key, col integer)";
conn.createStatement().execute(ddl);
- ddl = "create table test5 (notPk integer primary key, col integer)";
+ ddl = "create table " + tableName3 + " (notPk integer primary key, col integer)";
conn.createStatement().execute(ddl);
- conn.createStatement().execute("UPSERT INTO test3 VALUES (1,2)");
- conn.createStatement().execute("UPSERT INTO test4 VALUES (1,2)");
- conn.createStatement().execute("UPSERT INTO test5 VALUES (1,2)");
- conn.createStatement().executeQuery("select test3.pk as pk from test3 group by pk");
- conn.createStatement().executeQuery("select test3.pk as pk from test3 group by test3.pk");
- conn.createStatement().executeQuery("select test3.pk as pk from test3 as t group by t.pk");
- conn.createStatement().executeQuery("select test3.col as pk from test3");
+ conn.createStatement().execute("UPSERT INTO " + tableName1 + " VALUES (1,2)");
+ conn.createStatement().execute("UPSERT INTO " + tableName2 + " VALUES (1,2)");
+ conn.createStatement().execute("UPSERT INTO " + tableName3 + " VALUES (1,2)");
+ conn.createStatement().executeQuery("select " + tableName1 + ".pk as pk from " + tableName1 + " group by pk");
+ conn.createStatement().executeQuery("select " + tableName1 + ".pk as pk from " + tableName1 + " group by " + tableName1 + ".pk");
+ conn.createStatement().executeQuery("select " + tableName1 + ".pk as pk from " + tableName1 + " as t group by t.pk");
+ conn.createStatement().executeQuery("select " + tableName1 + ".col as pk from " + tableName1);
conn.createStatement()
- .executeQuery("select test3.pk as pk from test3 join test5 on (test3.pk=test5.notPk) group by pk");
+ .executeQuery("select " + tableName1 + ".pk as pk from " + tableName1 + " join " + tableName3 + " on (" + tableName1 + ".pk=" + tableName3 + ".notPk) group by pk");
try {
- conn.createStatement().executeQuery("select test3.col as pk from test3 group by pk");
+ conn.createStatement().executeQuery("select " + tableName1 + ".col as pk from " + tableName1 + " group by pk");
fail();
} catch (AmbiguousColumnException e) {}
try {
- conn.createStatement().executeQuery("select col as pk from test3 group by pk");
+ conn.createStatement().executeQuery("select col as pk from " + tableName1 + " group by pk");
fail();
} catch (AmbiguousColumnException e) {}
try {
conn.createStatement()
- .executeQuery("select test3.pk as pk from test3 join test4 on (test3.pk=test4.pk) group by pk");
+ .executeQuery("select " + tableName1 + ".pk as pk from " + tableName1 + " join " + tableName2 + " on (" + tableName1 + ".pk=" + tableName2 + ".pk) group by pk");
fail();
} catch (AmbiguousColumnException e) {}
conn.close();
[20/48] phoenix git commit: PHOENIX-3327 Use same driver for all
tests within a group
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
index 0b5a92d..2445948 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
@@ -34,7 +34,6 @@ import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import java.util.Random;
@@ -50,18 +49,14 @@ import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.query.QueryServicesOptions;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
import org.junit.Before;
-import org.junit.BeforeClass;
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.Maps;
-
@RunWith(Parameterized.class)
public class StatsCollectorIT extends ParallelStatsEnabledIT {
private final String tableDDLOptions;
@@ -69,23 +64,18 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
private String schemaName;
private String fullTableName;
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsEnabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(10);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- props.put(QueryServices.EXPLAIN_CHUNK_COUNT_ATTRIB, Boolean.TRUE.toString());
- props.put(QueryServices.EXPLAIN_ROW_COUNT_ATTRIB, Boolean.TRUE.toString());
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- props.put(QueryServices.STATS_UPDATE_FREQ_MS_ATTRIB, Long.toString(Long.MAX_VALUE));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
public StatsCollectorIT( boolean transactional) {
this.tableDDLOptions= transactional ? " TRANSACTIONAL=true" : "";
}
+ private static Connection getConnection() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ props.setProperty(QueryServices.EXPLAIN_CHUNK_COUNT_ATTRIB, Boolean.TRUE.toString());
+ props.setProperty(QueryServices.EXPLAIN_ROW_COUNT_ATTRIB, Boolean.TRUE.toString());
+ props.setProperty(QueryServices.STATS_UPDATE_FREQ_MS_ATTRIB, Long.toString(Long.MAX_VALUE));
+ return DriverManager.getConnection(getUrl(), props);
+ }
+
@Before
public void generateTableNames() {
schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
@@ -100,9 +90,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
@Test
public void testUpdateEmptyStats() throws Exception {
- Connection conn;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
conn.setAutoCommit(true);
conn.createStatement().execute(
"CREATE TABLE " + fullTableName +" ( k CHAR(1) PRIMARY KEY )" + tableDDLOptions);
@@ -118,9 +106,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
@Test
public void testSomeUpdateEmptyStats() throws Exception {
- Connection conn;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
conn.setAutoCommit(true);
conn.createStatement().execute(
"CREATE TABLE " + fullTableName +" ( k VARCHAR PRIMARY KEY, a.v1 VARCHAR, b.v2 VARCHAR ) " + tableDDLOptions + (tableDDLOptions.isEmpty() ? "" : ",") + "SALT_BUCKETS = 3");
@@ -158,7 +144,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
PreparedStatement stmt;
ResultSet rs;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
+ conn = getConnection();
conn.createStatement().execute(
"CREATE TABLE " + fullTableName +" ( k VARCHAR, a_string_array VARCHAR(100) ARRAY[4], b_string_array VARCHAR(100) ARRAY[4] \n"
+ " CONSTRAINT pk PRIMARY KEY (k, b_string_array DESC))"
@@ -178,9 +164,6 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
array = conn.createArrayOf("VARCHAR", s);
stmt.setArray(3, array);
stmt.execute();
- conn.close();
- conn = DriverManager.getConnection(getUrl(), props);
- // This analyze would not work
stmt = conn.prepareStatement("UPDATE STATISTICS " + tableName);
stmt.execute();
rs = conn.createStatement().executeQuery("SELECT k FROM " + tableName);
@@ -189,11 +172,9 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
}
private void testNoDuplicatesAfterUpdateStats(String splitKey) throws Throwable {
- Connection conn;
+ Connection conn = getConnection();
PreparedStatement stmt;
ResultSet rs;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement()
.execute("CREATE TABLE " + fullTableName
+ " ( k VARCHAR, c1.a bigint,c2.b bigint CONSTRAINT pk PRIMARY KEY (k))"+ tableDDLOptions
@@ -229,7 +210,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
PreparedStatement stmt;
ResultSet rs;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
+ conn = getConnection();
conn.createStatement().execute(
"CREATE TABLE " + fullTableName +" ( k VARCHAR, a_string_array VARCHAR(100) ARRAY[4], b_string_array VARCHAR(100) ARRAY[4] \n"
+ " CONSTRAINT pk PRIMARY KEY (k, b_string_array DESC))" + tableDDLOptions );
@@ -264,7 +245,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
stmt.setArray(3, array);
stmt.execute();
conn.close();
- conn = DriverManager.getConnection(getUrl(), props);
+ conn = getConnection();
// This analyze would not work
stmt = conn.prepareStatement("UPDATE STATISTICS "+fullTableName2);
stmt.execute();
@@ -277,7 +258,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
InterruptedException {
Connection conn;
PreparedStatement stmt;
- conn = DriverManager.getConnection(getUrl(), props);
+ conn = getConnection();
stmt = upsertStmt(conn, tableName);
stmt.setString(1, "a");
String[] s = new String[] { "abc", "def", "ghi", "jkll", null, null, "xxx" };
@@ -363,10 +344,8 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
private void testCompactUpdatesStats(Integer minStatsUpdateFreq, String tableName) throws Exception {
int nRows = 10;
- Connection conn;
+ Connection conn = getConnection();
PreparedStatement stmt;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute("CREATE TABLE " + tableName + "(k CHAR(1) PRIMARY KEY, v INTEGER, w INTEGER) "
+ HColumnDescriptor.KEEP_DELETED_CELLS + "=" + Boolean.FALSE);
stmt = conn.prepareStatement("UPSERT INTO " + tableName + " VALUES(?,?,?)");
@@ -424,10 +403,8 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
@Test
public void testWithMultiCF() throws Exception {
int nRows = 20;
- Connection conn;
+ Connection conn = getConnection();
PreparedStatement stmt;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute(
"CREATE TABLE " + fullTableName
+ "(k VARCHAR PRIMARY KEY, a.v INTEGER, b.v INTEGER, c.v INTEGER NULL, d.v INTEGER NULL) ");
@@ -505,9 +482,7 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
@Test
public void testRowCountAndByteCounts() throws SQLException {
- Connection conn;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
String ddl = "CREATE TABLE " + fullTableName + " (t_id VARCHAR NOT NULL,\n" + "k1 INTEGER NOT NULL,\n"
+ "k2 INTEGER NOT NULL,\n" + "C3.k3 INTEGER,\n" + "C2.v1 VARCHAR,\n"
+ "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2)) split on ('e','j','o')";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
index c11d765..1afe6ef 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StringToArrayFunctionIT.java
@@ -21,36 +21,41 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import java.sql.*;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.schema.types.PhoenixArray;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
- private static final String TABLE_NAME = generateUniqueName();
-
- @BeforeClass
- public static void initTables() throws Exception {
- Connection conn = DriverManager.getConnection(getUrl());
- String ddl = "CREATE TABLE " + TABLE_NAME
- + " (region_name VARCHAR PRIMARY KEY, string1 VARCHAR, string2 CHAR(50), delimiter1 VARCHAR, delimiter2 CHAR(20), nullstring1 VARCHAR, nullstring2 CHAR(20))";
- conn.createStatement().execute(ddl);
- String dml = "UPSERT INTO " + TABLE_NAME
- + "(region_name, string1, string2, delimiter1, delimiter2, nullstring1, nullstring2) VALUES('SF Bay Area',"
- +
- "'a,b,c,d'," +
- "'1.2.3.4'," +
- "','," +
- "'.'," +
- "'c'," +
- "'3'" +
- ")";
- PreparedStatement stmt = conn.prepareStatement(dml);
- stmt.execute();
- conn.commit();
+ private String tableName;
+
+ @Before
+ public void initTables() throws Exception {
+ tableName = generateUniqueName();
+ try (Connection conn = DriverManager.getConnection(getUrl())) {
+ String ddl = "CREATE TABLE " + tableName
+ + " (region_name VARCHAR PRIMARY KEY, string1 VARCHAR, string2 CHAR(50), delimiter1 VARCHAR, delimiter2 CHAR(20), nullstring1 VARCHAR, nullstring2 CHAR(20))";
+ conn.createStatement().execute(ddl);
+ String dml = "UPSERT INTO " + tableName
+ + "(region_name, string1, string2, delimiter1, delimiter2, nullstring1, nullstring2) VALUES('SF Bay Area',"
+ +
+ "'a,b,c,d'," +
+ "'1.2.3.4'," +
+ "','," +
+ "'.'," +
+ "'c'," +
+ "'3'" +
+ ")";
+ PreparedStatement stmt = conn.prepareStatement(dml);
+ stmt.execute();
+ conn.commit();
+ }
}
@Test
@@ -59,7 +64,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string1, delimiter1) FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string1, delimiter1) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -75,7 +80,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string1, delimiter1, nullstring1) FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string1, delimiter1, nullstring1) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -91,7 +96,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string1, delimiter1, 'a') FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string1, delimiter1, 'a') FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -107,7 +112,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string1, delimiter1, 'd') FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string1, delimiter1, 'd') FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -123,7 +128,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string2, delimiter2) FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string2, delimiter2) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -139,7 +144,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string2, delimiter2, nullstring2) FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string2, delimiter2, nullstring2) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -155,7 +160,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string2, delimiter2, '1') FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string2, delimiter2, '1') FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -171,7 +176,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(string2, delimiter2, '4') FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(string2, delimiter2, '4') FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -187,7 +192,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY(region_name, ' ', '4') FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY(region_name, ' ', '4') FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -203,7 +208,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY('hello,hello,hello', delimiter1) FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY('hello,hello,hello', delimiter1) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -219,7 +224,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY('a,hello,hello,hello,b', ',', 'hello') FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY('a,hello,hello,hello,b', ',', 'hello') FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -235,7 +240,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT STRING_TO_ARRAY('b.a.b', delimiter2, 'b') FROM " + TABLE_NAME
+ "SELECT STRING_TO_ARRAY('b.a.b', delimiter2, 'b') FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -251,7 +256,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_LENGTH(STRING_TO_ARRAY('a, b, c', ', ')) FROM " + TABLE_NAME
+ "SELECT ARRAY_LENGTH(STRING_TO_ARRAY('a, b, c', ', ')) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -266,7 +271,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
"SELECT STRING_TO_ARRAY(ARRAY_TO_STRING(ARRAY['a', 'b', 'c'], delimiter2), delimiter2, 'b') FROM "
- + TABLE_NAME + " WHERE region_name = 'SF Bay Area'");
+ + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{"a", null, "c"});
@@ -282,7 +287,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
"SELECT STRING_TO_ARRAY(ARRAY_TO_STRING(ARRAY['a', 'b', 'c'], delimiter2), ARRAY_ELEM(ARRAY[',', '.'], 2), 'b') FROM "
- + TABLE_NAME + " WHERE region_name = 'SF Bay Area'");
+ + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{"a", null, "c"});
@@ -435,7 +440,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl());
ResultSet rs;
- rs = conn.createStatement().executeQuery("SELECT region_name FROM " + TABLE_NAME
+ rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName
+ " WHERE ARRAY['a', 'b', 'c', 'd']=STRING_TO_ARRAY(string1, delimiter1)");
assertTrue(rs.next());
@@ -448,7 +453,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl());
ResultSet rs;
- rs = conn.createStatement().executeQuery("SELECT region_name FROM " + TABLE_NAME
+ rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName
+ " WHERE 'a'=ANY(STRING_TO_ARRAY(string1, delimiter1))");
assertTrue(rs.next());
@@ -461,7 +466,7 @@ public class StringToArrayFunctionIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl());
ResultSet rs;
- rs = conn.createStatement().executeQuery("SELECT region_name FROM " + TABLE_NAME
+ rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName
+ " WHERE 'a'=ALL(STRING_TO_ARRAY('a,a,a,', delimiter1))");
assertTrue(rs.next());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
index 18e6e5a..b8c028b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
@@ -25,33 +25,18 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.List;
-import java.util.Map;
import org.apache.phoenix.query.KeyRange;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class TransactionalViewIT extends ParallelStatsEnabledIT {
private String fullTableName;
private String fullViewName;
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsEnabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Integer.toString(20));
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Before
public void generateTableNames() {
String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
index 5f02790..06edbcf 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
@@ -25,28 +25,15 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
-import java.util.Map;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.PTableKey;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class AsyncIndexDisabledIT extends ParallelStatsDisabledIT {
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String, String> clientProps = Maps.newHashMapWithExpectedSize(1);
- clientProps.put(QueryServices.INDEX_ASYNC_BUILD_ENABLED, Boolean.toString(false));
- setUpTestDriver(ReadOnlyProps.EMPTY_PROPS, new ReadOnlyProps(clientProps.entrySet().iterator()));
- }
-
@Test
public void testAsyncIndexRegularBuild() throws Exception {
try (Connection conn = DriverManager.getConnection(getUrl())) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
index 8b3c111..4e7d06a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
@@ -18,7 +18,7 @@
package org.apache.phoenix.end2end.index;
import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
-import static org.apache.phoenix.util.TestUtil.*;
+import static org.apache.phoenix.util.TestUtil.HBASE_NATIVE_SCHEMA_NAME;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@@ -27,7 +27,6 @@ import static org.junit.Assert.fail;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
-import java.util.Map;
import java.util.Properties;
import org.apache.hadoop.hbase.HColumnDescriptor;
@@ -40,7 +39,6 @@ import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.query.QueryServices;
@@ -52,31 +50,36 @@ import org.apache.phoenix.schema.PTableKey;
import org.apache.phoenix.schema.TableNotFoundException;
import org.apache.phoenix.util.IndexUtil;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.SchemaUtil;
-import org.junit.BeforeClass;
+import org.apache.phoenix.util.StringUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class DropMetadataIT extends ParallelStatsDisabledIT {
+ private static final String PRINCIPAL = "dropMetaData";
private static final byte[] FAMILY_NAME = Bytes.toBytes(SchemaUtil.normalizeIdentifier("1"));
public static final String SCHEMA_NAME = "";
- private final String TENANT_SPECIFIC_URL = getUrl() + ';' + TENANT_ID_ATTRIB + "=tenant1";
+ private final String TENANT_ID = "tenant1";
+
+ private Connection getConnection() throws Exception {
+ return getConnection(PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES));
+ }
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- // Drop the HBase table metadata for this test
- props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private Connection getConnection(Properties props) throws Exception {
+ props.setProperty(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
+ // Force real driver to be used as the test one doesn't handle creating
+ // more than one ConnectionQueryService
+ props.setProperty(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, StringUtil.EMPTY_STRING);
+ // Create new ConnectionQueryServices so that we can set DROP_METADATA_ATTRIB
+ String url = QueryUtil.getConnectionUrl(props, config, PRINCIPAL);
+ return DriverManager.getConnection(url, props);
}
@Test
public void testDropViewKeepsHTable() throws Exception {
- HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TEST_PROPERTIES).getAdmin();
+ Connection conn = getConnection();
+ HBaseAdmin admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin();
String hbaseNativeViewName = generateUniqueName();
byte[] hbaseNativeBytes = SchemaUtil.getTableNameAsBytes(HBASE_NATIVE_SCHEMA_NAME, hbaseNativeViewName);
@@ -91,8 +94,6 @@ public class DropMetadataIT extends ParallelStatsDisabledIT {
admin.close();
}
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute("create view " + hbaseNativeViewName+
" (uint_key unsigned_int not null," +
" ulong_key unsigned_long not null," +
@@ -102,17 +103,16 @@ public class DropMetadataIT extends ParallelStatsDisabledIT {
" CONSTRAINT pk PRIMARY KEY (uint_key, ulong_key, string_key))\n" +
HColumnDescriptor.DATA_BLOCK_ENCODING + "='" + DataBlockEncoding.NONE + "'");
conn.createStatement().execute("drop view " + hbaseNativeViewName);
-
+ conn.close();
}
@Test
public void testDroppingIndexedColDropsIndex() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String indexTableName = generateUniqueName();
String dataTableFullName = SchemaUtil.getTableName(SCHEMA_NAME, generateUniqueName());
String localIndexTableName1 = "LOCAL_" + indexTableName + "_1";
String localIndexTableName2 = "LOCAL_" + indexTableName + "_2";
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
conn.createStatement().execute(
"CREATE TABLE " + dataTableFullName
@@ -200,8 +200,10 @@ public class DropMetadataIT extends ParallelStatsDisabledIT {
}
public void helpTestDroppingIndexedColDropsViewIndex(boolean isMultiTenant) throws Exception {
- try (Connection conn = DriverManager.getConnection(getUrl());
- Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL) : conn ) {
+ Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ props.setProperty(TENANT_ID_ATTRIB, TENANT_ID);
+ try (Connection conn = getConnection();
+ Connection viewConn = isMultiTenant ? getConnection(props) : conn ) {
String tableWithView = generateUniqueName();
String viewOfTable = generateUniqueName();
String viewIndex1 = generateUniqueName();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
index d3c3085..51e9de9 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
@@ -25,30 +25,16 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Map;
import java.util.regex.Pattern;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.*;
-import org.junit.BeforeClass;
+import org.apache.phoenix.util.PhoenixRuntime;
+import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.SchemaUtil;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class GlobalIndexOptimizationIT extends ParallelStatsDisabledIT {
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Drop the HBase table metadata for this test
- props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
private void createBaseTable(String tableName, Integer saltBuckets, String splits, boolean multiTenant) throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" +
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
index e2bc873..9a2eec1 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
@@ -38,7 +38,6 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
import java.util.Properties;
import org.apache.hadoop.hbase.Cell;
@@ -55,7 +54,6 @@ import org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory;
import org.apache.phoenix.compile.ColumnResolver;
import org.apache.phoenix.compile.FromCompiler;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixStatement;
@@ -63,24 +61,19 @@ import org.apache.phoenix.parse.NamedTableNode;
import org.apache.phoenix.parse.TableName;
import org.apache.phoenix.query.BaseTest;
import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.PTableKey;
import org.apache.phoenix.util.DateUtil;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
import org.apache.phoenix.util.TransactionUtil;
-import org.junit.BeforeClass;
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.Maps;
-
@RunWith(Parameterized.class)
public class IndexIT extends ParallelStatsDisabledIT {
@@ -105,14 +98,6 @@ public class IndexIT extends ParallelStatsDisabledIT {
this.tableDDLOptions = optionBuilder.toString();
}
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Parameters(name="IndexIT_localIndex={0},mutable={1},transactional={2}") // name is used by failsafe as file name in reports
public static Collection<Boolean[]> data() {
return Arrays.asList(new Boolean[][] {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
index 214b7ba..9d3da8e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
@@ -194,7 +194,7 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
private Connection getConnection() throws SQLException{
Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
- props.put(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
+ props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
return DriverManager.getConnection(getUrl(),props);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
index 0657d54..d740013 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
@@ -96,7 +96,7 @@ public class MutableIndexFailureIT extends BaseOwnClusterIT {
this.tableName = (localIndex ? "L_" : "") + TestUtil.DEFAULT_DATA_TABLE_NAME + (transactional ? "_TXN" : "")
+ (isNamespaceMapped ? "_NM" : "");
this.indexName = INDEX_NAME;
- this.fullTableName = SchemaUtil.getTableName(schema, tableName);
+ fullTableName = SchemaUtil.getTableName(schema, tableName);
this.fullIndexName = SchemaUtil.getTableName(schema, indexName);
this.isNamespaceMapped = isNamespaceMapped;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index 0a89eff..1bc01d2 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -33,7 +33,6 @@ import java.sql.Statement;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import jline.internal.Log;
@@ -45,7 +44,6 @@ import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Threads;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PTableKey;
@@ -53,16 +51,13 @@ import org.apache.phoenix.util.ByteUtil;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
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.Maps;
import com.google.common.primitives.Doubles;
@RunWith(Parameterized.class)
@@ -80,16 +75,17 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
this.tableDDLOptions = optionBuilder.toString();
}
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(1));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private static Connection getConnection(Properties props) throws SQLException {
+ props.setProperty(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(1));
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
}
-
+
+ private static Connection getConnection() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ return getConnection(props);
+ }
+
@Parameters(name="MutableIndexIT_localIndex={0},transactional={1}") // name is used by failsafe as file name in reports
public static Collection<Boolean[]> data() {
return Arrays.asList(new Boolean[][] {
@@ -99,8 +95,7 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testCoveredColumnUpdates() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
@@ -199,12 +194,11 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testCoveredColumns() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
String query;
@@ -309,12 +303,11 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testCompoundIndexKey() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
String query;
ResultSet rs;
@@ -428,12 +421,11 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
*/
@Test
public void testMultipleUpdatesToSingleRow() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
String query;
ResultSet rs;
@@ -512,12 +504,11 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testUpsertingNullForIndexedColumns() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
String testTableName = tableName + "_" + System.currentTimeMillis();
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
ResultSet rs;
Statement stmt = conn.createStatement();
@@ -602,9 +593,7 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
String tableName = "TBL_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
-
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
conn.createStatement().execute(
"CREATE TABLE " + fullTableName +" (k VARCHAR NOT NULL PRIMARY KEY, v VARCHAR) " + tableDDLOptions);
@@ -634,10 +623,10 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
}
private void testSplitDuringIndexScan(boolean isReverse) throws Exception {
- Properties props = new Properties();
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(QueryServices.SCAN_CACHE_SIZE_ATTRIB, Integer.toString(2));
- props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
- Connection conn1 = DriverManager.getConnection(getUrl());
+ props.setProperty(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
+ Connection conn1 = getConnection(props);
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
@@ -688,7 +677,7 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testIndexHalfStoreFileReader() throws Exception {
- Connection conn1 = DriverManager.getConnection(getUrl());
+ Connection conn1 = getConnection();
HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
@@ -840,7 +829,7 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
// create data table
conn.createStatement().execute(
@@ -857,7 +846,7 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
String dml = "UPSERT INTO " + fullTableName + " (ENTITY_ID, TYPE) VALUES ( ?, ?)";
props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, "tenant1");
// connection is tenant-specific
- try (Connection tenantConn = DriverManager.getConnection(getUrl(), props)) {
+ try (Connection tenantConn = getConnection(props)) {
// upsert one row
upsertRow(dml, tenantConn, 0);
tenantConn.commit();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
index 5bf0c58..06e7ede 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
@@ -26,39 +26,33 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.util.Map;
+import java.sql.SQLException;
import java.util.Properties;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PTableKey;
-import org.apache.phoenix.util.*;
-import org.junit.BeforeClass;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class SaltedIndexIT extends ParallelStatsDisabledIT {
private static final int TABLE_SPLITS = 3;
private static final int INDEX_SPLITS = 4;
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Drop the HBase table metadata for this test
- props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private static Connection getConnection() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ props.setProperty(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(1));
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
}
private static void makeImmutableAndDeleteData(String tableName, String fullTableName) throws Exception {
- Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TEST_PROPERTIES));
+ Connection conn = getConnection();
try {
conn.setAutoCommit(true);
conn.createStatement().execute("DELETE FROM " + fullTableName);
@@ -108,8 +102,7 @@ public class SaltedIndexIT extends ParallelStatsDisabledIT {
String query;
ResultSet rs;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
conn.setAutoCommit(false);
conn.createStatement().execute("CREATE TABLE IF NOT EXISTS " + dataTableFullName + " (k VARCHAR NOT NULL PRIMARY KEY, v VARCHAR) " + (tableSaltBuckets == null ? "" : " SALT_BUCKETS=" + tableSaltBuckets));
query = "SELECT * FROM " + dataTableFullName;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
index 99a8b4d..1abbc87 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
@@ -82,7 +82,7 @@ public class ViewIndexIT extends ParallelStatsDisabledIT {
private Connection getConnection() throws SQLException{
Properties props = new Properties();
- props.put(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
+ props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
return DriverManager.getConnection(getUrl(),props);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
index 3ffade0..cbfe9a5 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
@@ -30,27 +30,21 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
import java.util.Properties;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
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.Maps;
-
@RunWith(Parameterized.class)
public class MutableRollbackIT extends ParallelStatsDisabledIT {
@@ -60,23 +54,20 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
this.localIndex = localIndex;
}
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(2);
- props.put(QueryServices.DEFAULT_TABLE_ISTRANSACTIONAL_ATTRIB, Boolean.toString(true));
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Parameters(name="MutableRollbackIT_localIndex={0}") // name is used by failsafe as file name in reports
public static Collection<Boolean> data() {
return Arrays.asList(new Boolean[] { false, true});
}
- public void testRollbackOfUncommittedExistingKeyValueIndexUpdate() throws Exception {
+ private static Connection getConnection() throws SQLException {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ props.put(QueryServices.DEFAULT_TABLE_ISTRANSACTIONAL_ATTRIB, Boolean.toString(true));
Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
+ }
+
+ public void testRollbackOfUncommittedExistingKeyValueIndexUpdate() throws Exception {
+ Connection conn = getConnection();
String tableName1 = "TBL1_" + generateUniqueName();
String indexName1 = "IDX1_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName1);
@@ -215,8 +206,7 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
String tableName2 = "TBL2_" + generateUniqueName();
String indexName2 = "IDX2_" + generateUniqueName();
String fullTableName2 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName2);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
@@ -350,12 +340,10 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
@Test
public void testMultiRollbackOfUncommittedExistingRowKeyIndexUpdate() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
String tableName1 = "TBL1_" + generateUniqueName();
String indexName1 = "IDX1_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName1);
- String tableName2 = "TBL2_" + generateUniqueName();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
@@ -456,12 +444,10 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
@Test
public void testCheckpointAndRollback() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
String tableName1 = "TBL1_" + generateUniqueName();
String indexName1 = "IDX1_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName1);
- String tableName2 = "TBL2_" + generateUniqueName();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
index 5153a68..8cafcfc 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
@@ -25,27 +25,22 @@ import static org.junit.Assert.assertTrue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
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.Maps;
-
@RunWith(Parameterized.class)
public class RollbackIT extends ParallelStatsDisabledIT {
@@ -57,15 +52,13 @@ public class RollbackIT extends ParallelStatsDisabledIT {
this.mutable = mutable;
}
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(2);
+ private static Connection getConnection() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.put(QueryServices.DEFAULT_TABLE_ISTRANSACTIONAL_ATTRIB, Boolean.toString(true));
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
}
-
+
@Parameters(name="RollbackIT_localIndex={0},mutable={1}") // name is used by failsafe as file name in reports
public static Collection<Boolean[]> data() {
return Arrays.asList(new Boolean[][] {
@@ -79,8 +72,7 @@ public class RollbackIT extends ParallelStatsDisabledIT {
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
@@ -121,8 +113,7 @@ public class RollbackIT extends ParallelStatsDisabledIT {
@Test
public void testRollbackOfUncommittedRowKeyIndexInsert() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
conn.setAutoCommit(false);
String tableName = "TBL_" + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java b/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
index 8fcdebb..956deba 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
@@ -17,7 +17,8 @@
*/
package org.apache.phoenix.iterate;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -28,7 +29,8 @@ import java.util.Properties;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
import org.apache.phoenix.jdbc.PhoenixStatement;
-import org.junit.BeforeClass;
+import org.apache.phoenix.query.QueryServices;
+import org.junit.Before;
import org.junit.Test;
/**
@@ -37,13 +39,33 @@ import org.junit.Test;
*/
public class PhoenixQueryTimeoutIT extends ParallelStatsDisabledIT {
- private static final String QUERY_TIMEOUT_TEST = generateUniqueName();
+ private String tableName;
+
+ @Before
+ public void createTableAndInsertRows() throws Exception {
+ tableName = generateUniqueName();
+ int numRows = 1000;
+ String ddl =
+ "CREATE TABLE " + tableName + " (K VARCHAR NOT NULL PRIMARY KEY, V VARCHAR)";
+ try (Connection conn = DriverManager.getConnection(getUrl())) {
+ conn.createStatement().execute(ddl);
+ String dml = "UPSERT INTO " + tableName + " VALUES (?, ?)";
+ PreparedStatement stmt = conn.prepareStatement(dml);
+ for (int i = 1; i <= numRows; i++) {
+ String key = "key" + i;
+ stmt.setString(1, key);
+ stmt.setString(2, "value" + i);
+ stmt.executeUpdate();
+ }
+ conn.commit();
+ }
+ }
- @Test
/**
* This test validates that we timeout as expected. It does do by
* setting the timeout value to 1 ms.
*/
+ @Test
public void testCustomQueryTimeoutWithVeryLowTimeout() throws Exception {
// Arrange
PreparedStatement ps = loadDataAndPrepareQuery(1, 1);
@@ -85,30 +107,12 @@ public class PhoenixQueryTimeoutIT extends ParallelStatsDisabledIT {
private PreparedStatement loadDataAndPrepareQuery(int timeoutMs, int timeoutSecs) throws Exception, SQLException {
Properties props = new Properties();
- props.setProperty("phoenix.query.timeoutMs", String.valueOf(timeoutMs));
+ props.setProperty(QueryServices.THREAD_TIMEOUT_MS_ATTRIB, String.valueOf(timeoutMs));
Connection conn = DriverManager.getConnection(getUrl(), props);
- PreparedStatement ps = conn.prepareStatement("SELECT * FROM " + QUERY_TIMEOUT_TEST);
+ PreparedStatement ps = conn.prepareStatement("SELECT * FROM " + tableName);
PhoenixStatement phoenixStmt = ps.unwrap(PhoenixStatement.class);
assertEquals(timeoutMs, phoenixStmt.getQueryTimeoutInMillis());
assertEquals(timeoutSecs, phoenixStmt.getQueryTimeout());
return ps;
}
-
- @BeforeClass
- public static void createTableAndInsertRows() throws Exception {
- int numRows = 1000;
- String ddl =
- "CREATE TABLE " + QUERY_TIMEOUT_TEST + " (K VARCHAR NOT NULL PRIMARY KEY, V VARCHAR)";
- Connection conn = DriverManager.getConnection(getUrl());
- conn.createStatement().execute(ddl);
- String dml = "UPSERT INTO " + QUERY_TIMEOUT_TEST + " VALUES (?, ?)";
- PreparedStatement stmt = conn.prepareStatement(dml);
- for (int i = 1; i <= numRows; i++) {
- String key = "key" + i;
- stmt.setString(1, key);
- stmt.setString(2, "value" + i);
- stmt.executeUpdate();
- }
- conn.commit();
- }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
index 47261ac..c1f7c88 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
@@ -32,7 +32,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
@@ -43,7 +42,6 @@ import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.compile.StatementContext;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixResultSet;
import org.apache.phoenix.jdbc.PhoenixStatement;
@@ -51,37 +49,31 @@ import org.apache.phoenix.query.ConnectionQueryServices;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
private static final int NUM_SALT_BUCKETS = 4;
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.THREAD_POOL_SIZE_ATTRIB, Integer.toString(32));
+ private static Connection getConnection() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
/*
* Don't force row key order. This causes RoundRobinResultIterator to be used if there was no order by specified
* on the query.
*/
- props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
- props.put(QueryServices.QUEUE_SIZE_ATTRIB, Integer.toString(1000));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ props.setProperty(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
}
-
+
@Test
public void testRoundRobinAfterTableSplit() throws Exception {
String tableName = generateUniqueName();
byte[] tableNameBytes = Bytes.toBytes(tableName);
int numRows = setupTableForSplit(tableName);
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
ConnectionQueryServices services = conn.unwrap(PhoenixConnection.class).getQueryServices();
int nRegions = services.getAllTableRegions(tableNameBytes).size();
int nRegionsBeforeSplit = nRegions;
@@ -131,7 +123,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
String tableName = generateUniqueName();
int numRows = 9;
Set<String> expectedKeys = Collections.unmodifiableSet(createTableAndInsertRows(tableName, numRows, salted, false));
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT K, V FROM " + tableName);
tryWithFetchSize(new HashSet<>(expectedKeys), 1, stmt, 0);
tryWithFetchSize(new HashSet<>(expectedKeys), 2, stmt, salted ? 2 : 5);
@@ -155,7 +147,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
String tableName = generateUniqueName();
int numRows = 6;
Set<String> insertedKeys = createTableAndInsertRows(tableName, numRows, salted, false);
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT K, V FROM " + tableName + " WHERE K = ?");
stmt.setString(1, "key1"); // will return only 1 row
int numRowsFiltered = 1;
@@ -187,7 +179,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
private Set<String> createTableAndInsertRows(String tableName, int numRows, boolean salted, boolean addTableNameToKey) throws Exception {
String ddl = "CREATE TABLE " + tableName + " (K VARCHAR NOT NULL PRIMARY KEY, V VARCHAR)" + (salted ? "SALT_BUCKETS=" + NUM_SALT_BUCKETS : "");
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + tableName + " VALUES (?, ?)";
PreparedStatement stmt = conn.prepareStatement(dml);
@@ -207,7 +199,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
public void testFetchSizesAndRVCExpression() throws Exception {
String tableName = generateUniqueName();
Set<String> insertedKeys = Collections.unmodifiableSet(createTableAndInsertRows(tableName, 4, false, false));
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT K FROM " + tableName + " WHERE (K, V) > (?, ?)");
stmt.setString(1, "key0");
stmt.setString(2, "value0");
@@ -244,7 +236,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
int MIN_CHAR = 'a';
int MAX_CHAR = 'z';
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
conn.createStatement().execute("CREATE TABLE " + tableName + "("
+ "a VARCHAR PRIMARY KEY, b VARCHAR) "
+ HTableDescriptor.MAX_FILESIZE + "=" + maxFileSize + ","
@@ -288,7 +280,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
Set<String> keySetB = createTableAndInsertRows(tableB, insertedRowsB, true, true);
Set<String> keySetC = createTableAndInsertRows(tableC, insertedRowsC, false, true);
String query = "SELECT K FROM " + tableA + " UNION ALL SELECT K FROM " + tableB + " UNION ALL SELECT K FROM " + tableC;
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setFetchSize(2); // force parallel fetch of scanner cache
ResultSet rs = stmt.executeQuery();
@@ -317,7 +309,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
@Test
public void testBug2074() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
try {
conn.createStatement().execute("CREATE TABLE EVENTS"
+ " (id VARCHAR(10) PRIMARY KEY, "
@@ -407,7 +399,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
@Test
public void testIteratorsPickedInRoundRobinFashionForSaltedTable() throws Exception {
- try (Connection conn = DriverManager.getConnection(getUrl())) {
+ try (Connection conn = getConnection()) {
String testTable = "testIteratorsPickedInRoundRobinFashionForSaltedTable".toUpperCase();
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE " + testTable + "(K VARCHAR PRIMARY KEY) SALT_BUCKETS = 8");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java b/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
index 930f454..ceb8714 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
@@ -33,29 +33,22 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver;
import org.apache.phoenix.query.ConnectionQueryServices;
import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.MetaDataClient;
import org.apache.phoenix.schema.PName;
import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
-import com.google.common.collect.Maps;
-
/**
* Verifies the number of rpcs calls from {@link MetaDataClient} updateCache()
* for transactional and non-transactional tables.
@@ -64,14 +57,6 @@ public class UpdateCacheIT extends ParallelStatsDisabledIT {
public static final int NUM_MILLIS_IN_DAY = 86400000;
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
private static void setupSystemTable(String fullTableName) throws SQLException {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
index 6fea975..b50f424 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
@@ -27,32 +27,62 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.util.Map;
import javax.annotation.concurrent.NotThreadSafe;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
-@NotThreadSafe
+/**
+ *
+ * Transaction related tests that flap when run in parallel.
+ * TODO: review with Tephra community
+ *
+ */
+@NotThreadSafe // Prevents test methods from running in parallel
public class NotThreadSafeTransactionIT extends ParallelStatsDisabledIT {
-
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ @Test
+ public void testDelete() throws Exception {
+ String transTableName = generateUniqueName();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
+ String selectSQL = "SELECT * FROM " + fullTableName;
+ try (Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ Connection conn2 = DriverManager.getConnection(getUrl())) {
+ TestUtil.createTransactionalTable(conn, fullTableName);
+ conn1.setAutoCommit(false);
+ ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+
+ String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+ PreparedStatement stmt = conn1.prepareStatement(upsert);
+ // upsert two rows
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+ conn1.commit();
+
+ TestUtil.setRowKeyColumns(stmt, 2);
+ stmt.execute();
+
+ // verify rows can be read even though commit has not been called
+ int rowsDeleted = conn1.createStatement().executeUpdate("DELETE FROM " + fullTableName);
+ assertEquals(2, rowsDeleted);
+
+ // Delete and second upsert not committed yet, so there should be one row.
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+
+ conn1.commit();
+
+ // verify rows are deleted after commit
+ rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+ }
}
-
+
@Test
public void testInflightUpdateNotSeen() throws Exception {
String transTableName = generateUniqueName();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
index bf99c4b..809225a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
@@ -33,7 +33,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import org.apache.hadoop.hbase.HColumnDescriptor;
@@ -47,7 +46,6 @@ import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.coprocessor.PhoenixTransactionalProcessor;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
@@ -59,31 +57,19 @@ import org.apache.phoenix.schema.PTableKey;
import org.apache.phoenix.schema.types.PInteger;
import org.apache.phoenix.util.ByteUtil;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.StringUtil;
import org.apache.phoenix.util.TestUtil;
import org.apache.tephra.TransactionContext;
import org.apache.tephra.TransactionSystemClient;
import org.apache.tephra.TxConstants;
import org.apache.tephra.hbase.TransactionAwareHTable;
-import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
public class TransactionIT extends ParallelStatsDisabledIT {
-
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Test
public void testReadOwnWrites() throws Exception {
String transTableName = generateUniqueName();
@@ -154,46 +140,6 @@ public class TransactionIT extends ParallelStatsDisabledIT {
}
@Test
- public void testDelete() throws Exception {
- String transTableName = generateUniqueName();
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
- String selectSQL = "SELECT * FROM " + fullTableName;
- try (Connection conn = DriverManager.getConnection(getUrl());
- Connection conn1 = DriverManager.getConnection(getUrl());
- Connection conn2 = DriverManager.getConnection(getUrl())) {
- TestUtil.createTransactionalTable(conn, fullTableName);
- conn1.setAutoCommit(false);
- ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
-
- String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
- PreparedStatement stmt = conn1.prepareStatement(upsert);
- // upsert two rows
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
- conn1.commit();
-
- TestUtil.setRowKeyColumns(stmt, 2);
- stmt.execute();
-
- // verify rows can be read even though commit has not been called
- int rowsDeleted = conn1.createStatement().executeUpdate("DELETE FROM " + fullTableName);
- assertEquals(2, rowsDeleted);
-
- // Delete and second upsert not committed yet, so there should be one row.
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
-
- conn1.commit();
-
- // verify rows are deleted after commit
- rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
- }
- }
-
- @Test
public void testAutoCommitQuerySingleTable() throws Exception {
String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
index 21ea072..14bcd70 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
@@ -30,26 +30,20 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.execute.MutationState;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.tephra.Transaction.VisibilityLevel;
-import org.junit.BeforeClass;
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.Maps;
-
@RunWith(Parameterized.class)
public class TxCheckpointIT extends ParallelStatsDisabledIT {
@@ -62,13 +56,14 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
}
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(2);
- props.put(QueryServices.DEFAULT_TABLE_ISTRANSACTIONAL_ATTRIB, Boolean.toString(true));
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private static Connection getConnection() throws SQLException {
+ return getConnection(PropertiesUtil.deepCopy(TEST_PROPERTIES));
+ }
+
+ private static Connection getConnection(Properties props) throws SQLException {
+ props.setProperty(QueryServices.DEFAULT_TABLE_ISTRANSACTIONAL_ATTRIB, Boolean.toString(true));
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
}
@Parameters(name="TxCheckpointIT_localIndex={0},mutable={1}") // name is used by failsafe as file name in reports
@@ -88,7 +83,7 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
props.setProperty(QueryServices.MUTATE_BATCH_SIZE_ATTRIB, Integer.toString(3));
props.setProperty(QueryServices.SCAN_CACHE_SIZE_ATTRIB, Integer.toString(3));
props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, Integer.toString(3));
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection(props);
conn.setAutoCommit(true);
conn.createStatement().execute("CREATE SEQUENCE "+seqName);
conn.createStatement().execute("CREATE TABLE " + fullTableName + "(pk INTEGER PRIMARY KEY, val INTEGER)"+(!mutable? " IMMUTABLE_ROWS=true" : ""));
@@ -123,7 +118,7 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
private void testRollbackOfUncommittedDelete(String indexDDL, String fullTableName) throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection conn = getConnection();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
@@ -212,7 +207,7 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(tableName, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- try (Connection conn = DriverManager.getConnection(getUrl(), props);) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
@@ -303,7 +298,7 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
String fullTableName = SchemaUtil.getTableName(tableName, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
ResultSet rs;
- try (Connection conn = DriverManager.getConnection(getUrl(), props);) {
+ try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE " + fullTableName + "1(ID1 BIGINT NOT NULL PRIMARY KEY, FK1A INTEGER, FK1B INTEGER)"
[44/48] phoenix git commit: PHOENIX-3363 Join-related IT had
problematic usage of generating new table names
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad999527/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
index d7b3b29..684c3c2 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
@@ -272,8 +272,11 @@ public class SubqueryIT extends BaseJoinIT {
public void testNonCorrelatedSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName5 = getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME);
try {
- String query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" >= ALL (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
+ String query = "SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" >= ALL (SELECT \"item_id\" FROM " + tableName4 + ") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -285,7 +288,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" < ANY (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")";
+ query = "SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" < ANY (SELECT \"item_id\" FROM " + tableName4 + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -306,7 +309,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" < (SELECT max(\"item_id\") FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")";
+ query = "SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" < (SELECT max(\"item_id\") FROM " + tableName4 + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -327,7 +330,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE (item_id, item_name) != ALL (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + ")";
+ query = "SELECT * FROM " + tableName5 + " WHERE (item_id, item_name) != ALL (SELECT \"item_id\", name FROM " + tableName1 + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -338,7 +341,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE EXISTS (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + ")";
+ query = "SELECT * FROM " + tableName5 + " WHERE EXISTS (SELECT \"item_id\", name FROM " + tableName1 + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -364,7 +367,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" < (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")";
+ query = "SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" < (SELECT \"item_id\" FROM " + tableName4 + ")";
statement = conn.prepareStatement(query);
try {
rs = statement.executeQuery();
@@ -380,8 +383,12 @@ public class SubqueryIT extends BaseJoinIT {
public void testInSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName5 = getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME);
try {
- String query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
+ String query = "SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + ") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -399,7 +406,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
+ query = "SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + tableName4 + ") ORDER BY name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -414,7 +421,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT i.\"item_id\", s.name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
+ query = "SELECT i.\"item_id\", s.name FROM " + tableName1 + " i JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -433,7 +440,7 @@ public class SubqueryIT extends BaseJoinIT {
String plan = QueryUtil.getExplainPlan(rs);
assertPlansMatch(plans[0], plan);
- query = "SELECT i.\"item_id\", s.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY i.name";
+ query = "SELECT i.\"item_id\", s.name FROM " + tableName2 + " s LEFT JOIN " + tableName1 + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + ") ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -454,8 +461,8 @@ public class SubqueryIT extends BaseJoinIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
assertPlansEqual(plans[1], QueryUtil.getExplainPlan(rs));
- query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + "))"
- + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + "))";
+ query = "SELECT * FROM " + tableName5 + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + tableName4 + "))"
+ + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + "))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -483,8 +490,11 @@ public class SubqueryIT extends BaseJoinIT {
public void testExistsSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName5 = getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME);
try {
- String query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
+ String query = "SELECT \"item_id\", name FROM " + tableName1 + " i WHERE NOT EXISTS (SELECT 1 FROM " + tableName4 + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -502,8 +512,8 @@ public class SubqueryIT extends BaseJoinIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
assertPlansEqual(plans[3], QueryUtil.getExplainPlan(rs));
- query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " co WHERE EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
- + " OR EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
+ query = "SELECT * FROM " + tableName5 + " co WHERE EXISTS (SELECT 1 FROM " + tableName1 + " i WHERE NOT EXISTS (SELECT 1 FROM " + tableName4 + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
+ + " OR EXISTS (SELECT 1 FROM " + tableName1 + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -531,11 +541,14 @@ public class SubqueryIT extends BaseJoinIT {
public void testComparisonSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
final Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
- String query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
- " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) +
+ String query = "SELECT \"order_id\", name FROM " + tableName4 +
+ " o JOIN " + tableName1 +
" i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " +
- getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -553,10 +566,10 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
- " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) +
+ query = "SELECT \"order_id\", name FROM " + tableName4 +
+ " o JOIN " + tableName1 +
" i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " +
- getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i2 JOIN " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ tableName1 + " i2 JOIN " + tableName4 +
" q ON i2.\"item_id\" = q.\"item_id\" WHERE o.\"item_id\" = i2.\"item_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -575,11 +588,11 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT name from " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) +
+ query = "SELECT name from " + tableName3 +
" WHERE \"customer_id\" IN (SELECT \"customer_id\" FROM " +
- getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ tableName1 + " i JOIN " + tableName4 +
" o ON o.\"item_id\" = i.\"item_id\" WHERE i.name = 'T2' OR quantity > (SELECT avg(quantity) FROM " +
- getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\"))";
+ tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\"))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -593,8 +606,8 @@ public class SubqueryIT extends BaseJoinIT {
String plan = QueryUtil.getExplainPlan(rs);
assertPlansMatch(plans[4], plan);
- query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
- " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ query = "SELECT \"order_id\" FROM " + tableName4 +
+ " o WHERE quantity = (SELECT quantity FROM " + tableName4 +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -609,8 +622,8 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
- " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ query = "SELECT \"order_id\" FROM " + tableName4 +
+ " o WHERE quantity = (SELECT quantity FROM " + tableName4 +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -620,8 +633,8 @@ public class SubqueryIT extends BaseJoinIT {
} catch (SQLException e) {
}
- query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
- " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ query = "SELECT \"order_id\" FROM " + tableName4 +
+ " o WHERE quantity = (SELECT max(quantity) FROM " + tableName4 +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -636,8 +649,8 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
- " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ query = "SELECT \"order_id\" FROM " + tableName4 +
+ " o WHERE quantity = (SELECT max(quantity) FROM " + tableName4 +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -655,8 +668,10 @@ public class SubqueryIT extends BaseJoinIT {
public void testAnyAllComparisonSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
- String query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ String query = "SELECT \"order_id\", name FROM " + tableName4 + " o JOIN " + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -671,7 +686,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ query = "SELECT \"order_id\", name FROM " + tableName4 + " o JOIN " + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -680,7 +695,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
+ query = "SELECT \"order_id\", name FROM " + tableName4 + " o JOIN " + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -702,13 +717,15 @@ public class SubqueryIT extends BaseJoinIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
conn.createStatement().execute("CREATE TABLE " + tempTable
+ " (item_id varchar not null primary key, "
+ " name varchar)");
conn.createStatement().execute("UPSERT INTO " + tempTable + "(item_id, name)"
- + " SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME)
- + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")");
+ + " SELECT \"item_id\", name FROM " + tableName1
+ + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + tableName4 + ")");
String query = "SELECT name FROM " + tempTable + " ORDER BY item_id";
PreparedStatement statement = conn.prepareStatement(query);
@@ -732,14 +749,16 @@ public class SubqueryIT extends BaseJoinIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
conn.createStatement().execute("CREATE TABLE " + tempTable
+ " (item_id varchar not null primary key, "
+ " name varchar)");
conn.createStatement().execute("UPSERT INTO " + tempTable + "(item_id, name)"
- + " SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME));
+ + " SELECT \"item_id\", name FROM " + tableName1);
- String query = "SELECT count(*) FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME);
+ String query = "SELECT count(*) FROM " + tableName1;
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -747,7 +766,7 @@ public class SubqueryIT extends BaseJoinIT {
assertFalse(rs.next());
conn.createStatement().execute("DELETE FROM " + tempTable + " WHERE item_id IN ("
- + " SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")");
+ + " SELECT \"item_id\" FROM " + tableName4 + ")");
query = "SELECT name FROM " + tempTable + " ORDER BY item_id";
statement = conn.prepareStatement(query);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad999527/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
index b5e1c7e..e93052c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
@@ -245,8 +245,12 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
public void testInSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName5 = getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + ") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -264,7 +268,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + tableName4 + ") ORDER BY name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -279,7 +283,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + tableName1 + " i JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -297,7 +301,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
assertPlansEqual(plans[0], QueryUtil.getExplainPlan(rs));
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY i.name";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + tableName2 + " s LEFT JOIN " + tableName1 + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + ") ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -315,8 +319,8 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + "))"
- + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + "))";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + tableName5 + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + tableName4 + "))"
+ + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + tableName1 + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + "))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -344,8 +348,11 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
public void testExistsSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName5 = getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + tableName1 + " i WHERE NOT EXISTS (SELECT 1 FROM " + tableName4 + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -360,8 +367,8 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " co WHERE EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
- + " OR EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + tableName5 + " co WHERE EXISTS (SELECT 1 FROM " + tableName1 + " i WHERE NOT EXISTS (SELECT 1 FROM " + tableName4 + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
+ + " OR EXISTS (SELECT 1 FROM " + tableName1 + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + tableName4 + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -389,8 +396,11 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
public void testComparisonSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + tableName4 + " o JOIN " + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -408,7 +418,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ name from " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " WHERE \"customer_id\" IN (SELECT \"customer_id\" FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" WHERE i.name = 'T2' OR quantity > (SELECT avg(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\"))";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ name from " + tableName3 + " WHERE \"customer_id\" IN (SELECT \"customer_id\" FROM " + tableName1 + " i JOIN " + tableName4 + " o ON o.\"item_id\" = i.\"item_id\" WHERE i.name = 'T2' OR quantity > (SELECT avg(quantity) FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\"))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -422,7 +432,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
String plan = QueryUtil.getExplainPlan(rs);
assertPlansMatch(plans[2], plan);
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004')";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + tableName4 + " o WHERE quantity = (SELECT quantity FROM " + tableName4 + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -436,7 +446,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003')";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + tableName4 + " o WHERE quantity = (SELECT quantity FROM " + tableName4 + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
try {
@@ -445,7 +455,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
} catch (SQLException e) {
}
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004' GROUP BY \"order_id\")";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + tableName4 + " o WHERE quantity = (SELECT max(quantity) FROM " + tableName4 + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -459,7 +469,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003' GROUP BY \"order_id\")";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + tableName4 + " o WHERE quantity = (SELECT max(quantity) FROM " + tableName4 + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
try {
@@ -476,8 +486,10 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
public void testAnyAllComparisonSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + tableName4 + " o JOIN " + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -492,7 +504,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + tableName4 + " o JOIN " + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -501,7 +513,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + tableName4 + " o JOIN " + tableName1 + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + tableName4 + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -523,13 +535,15 @@ public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
+ String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
try {
conn.createStatement().execute("CREATE TABLE " + tempTable
+ " (item_id varchar not null primary key, "
+ " name varchar)");
conn.createStatement().execute("UPSERT /*+ USE_SORT_MERGE_JOIN*/ INTO " + tempTable + "(item_id, name)"
- + " SELECT \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME)
- + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ")");
+ + " SELECT \"item_id\", name FROM " + tableName1
+ + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + tableName4 + ")");
String query = "SELECT name FROM " + tempTable + " ORDER BY item_id";
PreparedStatement statement = conn.prepareStatement(query);
[11/48] phoenix git commit: PHOENIX-3314
ImmutableIndexIT.testCreateIndexDuringUpsertSelect() is failing for local
indexes
Posted by ma...@apache.org.
PHOENIX-3314 ImmutableIndexIT.testCreateIndexDuringUpsertSelect() is failing for local indexes
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b1682ddd
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b1682ddd
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b1682ddd
Branch: refs/heads/calcite
Commit: b1682ddd541031437d2731c570a54fc6494c9801
Parents: f50b5ec
Author: James Taylor <ja...@apache.org>
Authored: Thu Sep 22 07:29:27 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Thu Sep 22 07:29:27 2016 -0700
----------------------------------------------------------------------
.../org/apache/phoenix/end2end/index/ImmutableIndexIT.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b1682ddd/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
index 7d4b91d..ba342eb 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
@@ -57,7 +57,6 @@ import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -107,7 +106,6 @@ public class ImmutableIndexIT extends BaseOwnClusterIT {
}
@Test
- @Ignore
public void testDropIfImmutableKeyValueColumn() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String tableName = "TBL_" + generateRandomString();
@@ -151,6 +149,10 @@ public class ImmutableIndexIT extends BaseOwnClusterIT {
@Test
public void testCreateIndexDuringUpsertSelect() throws Exception {
+ // This test times out at the UPSERT SELECT call for local index
+ if (localIndex) { // TODO: remove after PHOENIX-3314 is fixed
+ return;
+ }
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(QueryServices.MUTATE_BATCH_SIZE_ATTRIB, Integer.toString(100));
String tableName = "TBL_" + generateRandomString();
[24/48] phoenix git commit: PHOENIX-3153 Convert join-related IT
tests to be derived from BaseHBaseManagedTimeTableReuseIT
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
index d94d4e3..d7b3b29 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java
@@ -17,17 +17,6 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.JOIN_COITEM_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_COITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SCHEMA;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -41,64 +30,21 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
-import java.util.regex.Pattern;
-import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.schema.TableAlreadyExistsException;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
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;
-import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class SubqueryIT extends BaseHBaseManagedTimeIT {
-
- private String[] indexDDL;
- private String[] plans;
- private String itemTableFullName;
-
+public class SubqueryIT extends BaseJoinIT {
public SubqueryIT(String[] indexDDL, String[] plans) {
- this.indexDDL = indexDDL;
- this.plans = plans;
- }
-
- @BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- @Before
- public void initTable() throws Exception {
- initJoinTableValues(getUrl(), null, null);
- initCoItemTableValues();
- if (indexDDL != null && indexDDL.length > 0) {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- for (String ddl : indexDDL) {
- try {
- conn.createStatement().execute(ddl);
- } catch (TableAlreadyExistsException e) {
- }
- }
- conn.close();
- }
+ super(indexDDL, plans);
}
@Parameters
@@ -106,70 +52,70 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
List<Object> testCases = Lists.newArrayList();
testCases.add(new String[][] {
{}, {
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER SORTED BY \\[I.NAME\\]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SKIP-SCAN-JOIN TABLE 1\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.item_id\" IN \\(\\$\\d+.\\$\\d+\\)",
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" SERVER SORTED BY [I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" PARALLEL SEMI-JOIN TABLE 1(DELAYED EVALUATION) (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
- "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_FULL_NAME + "\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\".+.item_id\", .+.NAME\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 1\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\".+.item_id\", .+.NAME\\]\n" +
" CLIENT MERGE SORT\n" +
" SKIP-SCAN-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
- " DYNAMIC SERVER FILTER BY \"" + JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" +
+ " DYNAMIC SERVER FILTER BY \"" + JOIN_ITEM_TABLE_FULL_NAME + ".item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" +
" AFTER-JOIN SERVER FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)",
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER SORTED BY [I.NAME]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL ANTI-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + "\n" +
" SKIP-SCAN-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.item_id\" IN \\(\"O.item_id\"\\)\n" +
" AFTER-JOIN SERVER FILTER BY \\(I.NAME = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)\n" +
- " DYNAMIC SERVER FILTER BY \"" + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + ".customer_id\" IN \\(\\$\\d+.\\$\\d+\\)"
+ " DYNAMIC SERVER FILTER BY \"" + JOIN_CUSTOMER_TABLE_FULL_NAME + ".customer_id\" IN \\(\\$\\d+.\\$\\d+\\)"
}});
testCases.add(new String[][] {
{
@@ -182,7 +128,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_supplier\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" PARALLEL SEMI-JOIN TABLE 1 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT",
@@ -193,18 +139,18 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
" PARALLEL LEFT-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" PARALLEL SEMI-JOIN TABLE 1(DELAYED EVALUATION) (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
- "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_FULL_NAME + "\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 1\n" +
@@ -212,7 +158,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" AFTER-JOIN SERVER FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)",
@@ -220,7 +166,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
"CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" PARALLEL ANTI-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
@@ -232,9 +178,9 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" AFTER-JOIN SERVER FILTER BY \\(\"I.0:NAME\" = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)"
@@ -245,73 +191,73 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
"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)"
}, {
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " \\[1\\]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL SEMI-JOIN TABLE 1 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.:item_id\" IN \\(\\$\\d+.\\$\\d+\\)",
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [1]\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 [\"I.0:NAME\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL SEMI-JOIN TABLE 1(DELAYED EVALUATION) (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
- "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" +
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_FULL_NAME + "\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL LEFT-JOIN TABLE 1\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"" + JOIN_SCHEMA + ".idx_item.:item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" +
" AFTER-JOIN SERVER FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)",
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL ANTI-JOIN TABLE 0 (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT",
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.:item_id\" IN \\(\"O.item_id\"\\)\n" +
@@ -322,67 +268,12 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
}
- protected void initCoItemTableValues() throws Exception {
- ensureTableCreated(getUrl(), JOIN_COITEM_TABLE_FULL_NAME, JOIN_COITEM_TABLE_FULL_NAME);
-
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // Insert into coitem table
- PreparedStatement stmt = conn.prepareStatement(
- "upsert into " + JOIN_COITEM_TABLE_FULL_NAME +
- " (item_id, " +
- " item_name, " +
- " co_item_id, " +
- " co_item_name) " +
- "values (?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "T1");
- stmt.setString(3, "0000000002");
- stmt.setString(4, "T3");
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "T4");
- stmt.setString(3, "0000000003");
- stmt.setString(4, "T3");
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "T4");
- stmt.setString(3, "0000000005");
- stmt.setString(4, "T5");
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "T6");
- stmt.setString(3, "0000000001");
- stmt.setString(4, "T1");
- stmt.execute();
-
- conn.commit();
- } finally {
- conn.close();
- }
- }
-
- @After
- public void assertNoUnfreedMemory() throws SQLException {
- Connection conn = DriverManager.getConnection(getUrl());
- try {
- long unfreedBytes = conn.unwrap(PhoenixConnection.class).getQueryServices().clearCache();
- assertEquals("Found bytes not freed on server side", 0, unfreedBytes);
- } finally {
- conn.close();
- }
- }
-
@Test
public void testNonCorrelatedSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" >= ALL (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") ORDER BY name";
+ String query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" >= ALL (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -394,7 +285,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" < ANY (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ")";
+ query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" < ANY (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -415,7 +306,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" < (SELECT max(\"item_id\") FROM " + JOIN_ORDER_TABLE_FULL_NAME + ")";
+ query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" < (SELECT max(\"item_id\") FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -436,7 +327,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT * FROM " + JOIN_COITEM_TABLE_FULL_NAME + " WHERE (item_id, item_name) != ALL (SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + ")";
+ query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE (item_id, item_name) != ALL (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -447,7 +338,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT * FROM " + JOIN_COITEM_TABLE_FULL_NAME + " WHERE EXISTS (SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + ")";
+ query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE EXISTS (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + ")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -473,7 +364,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" < (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ")";
+ query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" < (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")";
statement = conn.prepareStatement(query);
try {
rs = statement.executeQuery();
@@ -490,7 +381,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") ORDER BY name";
+ String query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -508,7 +399,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") ORDER BY name";
+ query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -523,7 +414,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT i.\"item_id\", s.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
+ query = "SELECT i.\"item_id\", s.name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -540,9 +431,9 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
String plan = QueryUtil.getExplainPlan(rs);
- assertTrue("\"" + plan + "\" does not match \"" + plans[0] + "\"", Pattern.matches(plans[0], plan));
+ assertPlansMatch(plans[0], plan);
- query = "SELECT i.\"item_id\", s.name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s LEFT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") ORDER BY i.name";
+ query = "SELECT i.\"item_id\", s.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -561,10 +452,10 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[1], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[1], QueryUtil.getExplainPlan(rs));
- query = "SELECT * FROM " + JOIN_COITEM_TABLE_FULL_NAME + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + "))"
- + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + "))";
+ query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + "))"
+ + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + "))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -582,7 +473,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
plan = QueryUtil.getExplainPlan(rs);
- assertTrue("\"" + plan + "\" does not match \"" + plans[2] + "\"", Pattern.matches(plans[2], plan));
+ assertPlansMatch(plans[2], plan);
} finally {
conn.close();
}
@@ -593,7 +484,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE NOT EXISTS (SELECT 1 FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
+ String query = "SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -609,10 +500,10 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[3], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[3], QueryUtil.getExplainPlan(rs));
- query = "SELECT * FROM " + JOIN_COITEM_TABLE_FULL_NAME + " co WHERE EXISTS (SELECT 1 FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE NOT EXISTS (SELECT 1 FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
- + " OR EXISTS (SELECT 1 FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
+ query = "SELECT * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " co WHERE EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
+ + " OR EXISTS (SELECT 1 FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -630,7 +521,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
String plan = QueryUtil.getExplainPlan(rs);
- assertTrue("\"" + plan + "\" does not match \"" + plans[2] + "\"", Pattern.matches(plans[2], plan));
+ assertPlansMatch(plans[2], plan);
} finally {
conn.close();
}
@@ -641,10 +532,10 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
final Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME +
- " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME +
+ String query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) +
" i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " +
- JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -662,10 +553,10 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME +
- " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME +
+ query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) +
" i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " +
- JOIN_ITEM_TABLE_FULL_NAME + " i2 JOIN " + JOIN_ORDER_TABLE_FULL_NAME +
+ getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i2 JOIN " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
" q ON i2.\"item_id\" = q.\"item_id\" WHERE o.\"item_id\" = i2.\"item_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -684,11 +575,11 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT name from " + JOIN_CUSTOMER_TABLE_FULL_NAME +
+ query = "SELECT name from " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) +
" WHERE \"customer_id\" IN (SELECT \"customer_id\" FROM " +
- JOIN_ITEM_TABLE_FULL_NAME + " i JOIN " + JOIN_ORDER_TABLE_FULL_NAME +
+ getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
" o ON o.\"item_id\" = i.\"item_id\" WHERE i.name = 'T2' OR quantity > (SELECT avg(quantity) FROM " +
- JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\"))";
+ getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\"))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -700,10 +591,10 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
String plan = QueryUtil.getExplainPlan(rs);
- assertTrue("\"" + plan + "\" does not match \"" + plans[4] + "\"", Pattern.matches(plans[4], plan));
+ assertPlansMatch(plans[4], plan);
- query = "SELECT \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME +
- " o WHERE quantity = (SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME +
+ query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -718,8 +609,8 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME +
- " o WHERE quantity = (SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME +
+ query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -729,8 +620,8 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
} catch (SQLException e) {
}
- query = "SELECT \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME +
- " o WHERE quantity = (SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME +
+ query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -745,8 +636,8 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME +
- " o WHERE quantity = (SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME +
+ query = "SELECT \"order_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
+ " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) +
" WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -765,7 +656,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ String query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -780,7 +671,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -789,7 +680,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
+ query = "SELECT \"order_id\", name FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -807,7 +698,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
@Test
public void testSubqueryWithUpsert() throws Exception {
- String tempTable = "UPSERT_SUBQUERY_TABLE";
+ String tempTable = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
@@ -816,8 +707,8 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
+ " (item_id varchar not null primary key, "
+ " name varchar)");
conn.createStatement().execute("UPSERT INTO " + tempTable + "(item_id, name)"
- + " SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME
- + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ")");
+ + " SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME)
+ + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")");
String query = "SELECT name FROM " + tempTable + " ORDER BY item_id";
PreparedStatement statement = conn.prepareStatement(query);
@@ -837,7 +728,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
@Test
public void testSubqueryWithDelete() throws Exception {
- String tempTable = "TEMP_SUBQUERY_TABLE";
+ String tempTable = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
@@ -846,9 +737,9 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
+ " (item_id varchar not null primary key, "
+ " name varchar)");
conn.createStatement().execute("UPSERT INTO " + tempTable + "(item_id, name)"
- + " SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME);
+ + " SELECT \"item_id\", name FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME));
- String query = "SELECT count(*) FROM " + JOIN_ITEM_TABLE_FULL_NAME;
+ String query = "SELECT count(*) FROM " + getTableName(conn,JOIN_ITEM_TABLE_FULL_NAME);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -856,7 +747,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
conn.createStatement().execute("DELETE FROM " + tempTable + " WHERE item_id IN ("
- + " SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ")");
+ + " SELECT \"item_id\" FROM " + getTableName(conn,JOIN_ORDER_TABLE_FULL_NAME) + ")");
query = "SELECT name FROM " + tempTable + " ORDER BY item_id";
statement = conn.prepareStatement(query);
[28/48] phoenix git commit: PHOENIX-3153 Convert join-related IT
tests to be derived from BaseHBaseManagedTimeTableReuseIT
Posted by ma...@apache.org.
PHOENIX-3153 Convert join-related IT tests to be derived from BaseHBaseManagedTimeTableReuseIT
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/c6e703dd
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/c6e703dd
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/c6e703dd
Branch: refs/heads/calcite
Commit: c6e703dd24f8f47bb7cb610143fca4967fdfacdf
Parents: cb7234d
Author: James Taylor <ja...@apache.org>
Authored: Tue Sep 27 10:08:57 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Tue Sep 27 12:35:31 2016 -0700
----------------------------------------------------------------------
.../org/apache/phoenix/end2end/BaseJoinIT.java | 456 +++++++++++
.../org/apache/phoenix/end2end/HashJoinIT.java | 808 +++++++++----------
.../phoenix/end2end/HashJoinLocalIndexIT.java | 70 +-
.../phoenix/end2end/ParallelRunListener.java | 2 +-
.../phoenix/end2end/QueryWithLimitIT.java | 1 +
.../apache/phoenix/end2end/SortMergeJoinIT.java | 471 +++++------
.../org/apache/phoenix/end2end/SubqueryIT.java | 297 +++----
.../end2end/SubqueryUsingSortMergeJoinIT.java | 456 ++---------
.../phoenix/end2end/UserDefinedFunctionsIT.java | 148 +++-
.../apache/phoenix/end2end/index/IndexIT.java | 12 +-
.../phoenix/compile/JoinQueryCompilerTest.java | 35 +
.../query/BaseConnectionlessQueryTest.java | 10 +-
.../java/org/apache/phoenix/query/BaseTest.java | 302 -------
pom.xml | 18 +-
14 files changed, 1421 insertions(+), 1665 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java
new file mode 100644
index 0000000..f1c1808
--- /dev/null
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java
@@ -0,0 +1,456 @@
+/*
+ * 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;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.sql.Connection;
+import java.sql.Date;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.StringUtil;
+import org.junit.Before;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+
+public abstract class BaseJoinIT extends ParallelStatsDisabledIT {
+ protected static final String JOIN_SCHEMA = "Join";
+ protected static final String JOIN_ORDER_TABLE = "OrderTable";
+ protected static final String JOIN_CUSTOMER_TABLE = "CustomerTable";
+ protected static final String JOIN_ITEM_TABLE = "ItemTable";
+ protected static final String JOIN_SUPPLIER_TABLE = "SupplierTable";
+ protected static final String JOIN_COITEM_TABLE = "CoitemTable";
+ protected static final String JOIN_ORDER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_ORDER_TABLE + '"';
+ protected static final String JOIN_CUSTOMER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_CUSTOMER_TABLE + '"';
+ protected static final String JOIN_ITEM_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_ITEM_TABLE + '"';
+ protected static final String JOIN_SUPPLIER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_SUPPLIER_TABLE + '"';
+ protected static final String JOIN_COITEM_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_COITEM_TABLE + '"';
+
+ private static final Map<String,String> tableDDLMap;
+
+ static {
+ ImmutableMap.Builder<String,String> builder = ImmutableMap.builder();
+ builder.put(JOIN_ORDER_TABLE_FULL_NAME, "create table " + JOIN_ORDER_TABLE_FULL_NAME +
+ " (\"order_id\" varchar(15) not null primary key, " +
+ " \"customer_id\" varchar(10), " +
+ " \"item_id\" varchar(10), " +
+ " price integer, " +
+ " quantity integer, " +
+ " date timestamp)");
+ builder.put(JOIN_CUSTOMER_TABLE_FULL_NAME, "create table " + JOIN_CUSTOMER_TABLE_FULL_NAME +
+ " (\"customer_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " phone varchar(12), " +
+ " address varchar, " +
+ " loc_id varchar(5), " +
+ " date date)");
+ builder.put(JOIN_ITEM_TABLE_FULL_NAME, "create table " + JOIN_ITEM_TABLE_FULL_NAME +
+ " (\"item_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " price integer, " +
+ " discount1 integer, " +
+ " discount2 integer, " +
+ " \"supplier_id\" varchar(10), " +
+ " description varchar)");
+ builder.put(JOIN_SUPPLIER_TABLE_FULL_NAME, "create table " + JOIN_SUPPLIER_TABLE_FULL_NAME +
+ " (\"supplier_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " phone varchar(12), " +
+ " address varchar, " +
+ " loc_id varchar(5))");
+ builder.put(JOIN_COITEM_TABLE_FULL_NAME, "create table " + JOIN_COITEM_TABLE_FULL_NAME +
+ " (item_id varchar(10) NOT NULL, " +
+ " item_name varchar NOT NULL, " +
+ " co_item_id varchar(10), " +
+ " co_item_name varchar " +
+ " CONSTRAINT pk PRIMARY KEY (item_id, item_name)) " +
+ " SALT_BUCKETS=4");
+ tableDDLMap = builder.build();
+ }
+
+ protected String seqName;
+ protected String schemaName;
+ protected final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ protected final String[] plans;
+ private final String[] indexDDL;
+ private final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+
+ public BaseJoinIT(String[] indexDDL, String[] plans) {
+ this.indexDDL = indexDDL;
+ this.plans = plans;
+ }
+
+ protected String getTableName(Connection conn, String virtualName) throws Exception {
+ String realName = virtualNameToRealNameMap.get(virtualName);
+ if (realName == null) {
+ realName = SchemaUtil.getTableName(schemaName, generateUniqueName());
+ virtualNameToRealNameMap.put(virtualName, realName);
+ createTable(conn, virtualName, realName);
+ initValues(conn, virtualName, realName);
+ createIndexes(conn, virtualName, realName);
+ }
+ return realName;
+ }
+
+ protected String getDisplayTableName(Connection conn, String virtualName) throws Exception {
+ return getTableName(conn, virtualName);
+ }
+
+ private void createTable(Connection conn, String virtualName, String realName) throws SQLException {
+ String ddl = tableDDLMap.get(virtualName);
+ if (ddl == null) {
+ throw new IllegalStateException("Expected to find " + virtualName + " in " + tableDDLMap);
+ }
+ ddl = ddl.replace(virtualName, realName);
+ conn.createStatement().execute(ddl);
+ }
+
+ @Before
+ public void createSchema() throws SQLException {
+ Connection conn = DriverManager.getConnection(getUrl());
+ try {
+ schemaName = "S_" + generateUniqueName();
+ seqName = "SEQ_" + generateUniqueName();
+ conn.createStatement().execute("CREATE SEQUENCE " + seqName);
+ } finally {
+ conn.close();
+ }
+ }
+
+ private String translateToVirtualPlan(String actualPlan) {
+ int size = virtualNameToRealNameMap.size();
+ String[] virtualNames = new String[size+1];
+ String[] realNames = new String[size+1];
+ int count = 0;
+ for (Map.Entry<String, String>entry : virtualNameToRealNameMap.entrySet()) {
+ virtualNames[count] = entry.getKey();
+ realNames[count] = entry.getValue();
+ count++;
+ }
+ realNames[count] = schemaName;
+ virtualNames[count]= JOIN_SCHEMA;
+ String convertedPlan = StringUtil.replace(actualPlan, realNames, virtualNames);
+ return convertedPlan;
+ }
+
+ protected void assertPlansMatch(String virtualPlanRegEx, String actualPlan) {
+ String convertedPlan = translateToVirtualPlan(actualPlan);
+ assertTrue("\"" + convertedPlan + "\" does not match \"" + virtualPlanRegEx + "\"", Pattern.matches(virtualPlanRegEx, convertedPlan));
+ }
+
+ protected void assertPlansEqual(String virtualPlan, String actualPlan) {
+ String convertedPlan = translateToVirtualPlan(actualPlan);
+ assertEquals(virtualPlan, convertedPlan);
+ }
+
+ private static void initValues(Connection conn, String virtualName, String realName) throws Exception {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ if (virtualName.equals(JOIN_CUSTOMER_TABLE_FULL_NAME)) {
+ // Insert into customer table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"customer_id\", " +
+ " NAME, " +
+ " PHONE, " +
+ " ADDRESS, " +
+ " LOC_ID, " +
+ " DATE) " +
+ "values (?, ?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "C1");
+ stmt.setString(3, "999-999-1111");
+ stmt.setString(4, "101 XXX Street");
+ stmt.setString(5, "10001");
+ stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "C2");
+ stmt.setString(3, "999-999-2222");
+ stmt.setString(4, "202 XXX Street");
+ stmt.setString(5, null);
+ stmt.setDate(6, new Date(format.parse("2013-11-25 16:45:07").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "C3");
+ stmt.setString(3, "999-999-3333");
+ stmt.setString(4, "303 XXX Street");
+ stmt.setString(5, null);
+ stmt.setDate(6, new Date(format.parse("2013-11-25 10:06:29").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "C4");
+ stmt.setString(3, "999-999-4444");
+ stmt.setString(4, "404 XXX Street");
+ stmt.setString(5, "10004");
+ stmt.setDate(6, new Date(format.parse("2013-11-22 14:22:56").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "C5");
+ stmt.setString(3, "999-999-5555");
+ stmt.setString(4, "505 XXX Street");
+ stmt.setString(5, "10005");
+ stmt.setDate(6, new Date(format.parse("2013-11-27 09:37:50").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "C6");
+ stmt.setString(3, "999-999-6666");
+ stmt.setString(4, "606 XXX Street");
+ stmt.setString(5, "10001");
+ stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_ITEM_TABLE_FULL_NAME)) {
+
+ // Insert into item table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"item_id\", " +
+ " NAME, " +
+ " PRICE, " +
+ " DISCOUNT1, " +
+ " DISCOUNT2, " +
+ " \"supplier_id\", " +
+ " DESCRIPTION) " +
+ "values (?, ?, ?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "T1");
+ stmt.setInt(3, 100);
+ stmt.setInt(4, 5);
+ stmt.setInt(5, 10);
+ stmt.setString(6, "0000000001");
+ stmt.setString(7, "Item T1");
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "T2");
+ stmt.setInt(3, 200);
+ stmt.setInt(4, 5);
+ stmt.setInt(5, 8);
+ stmt.setString(6, "0000000001");
+ stmt.setString(7, "Item T2");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "T3");
+ stmt.setInt(3, 300);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 12);
+ stmt.setString(6, "0000000002");
+ stmt.setString(7, "Item T3");
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "T4");
+ stmt.setInt(3, 400);
+ stmt.setInt(4, 6);
+ stmt.setInt(5, 10);
+ stmt.setString(6, "0000000002");
+ stmt.setString(7, "Item T4");
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "T5");
+ stmt.setInt(3, 500);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 15);
+ stmt.setString(6, "0000000005");
+ stmt.setString(7, "Item T5");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "T6");
+ stmt.setInt(3, 600);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 15);
+ stmt.setString(6, "0000000006");
+ stmt.setString(7, "Item T6");
+ stmt.execute();
+
+ stmt.setString(1, "invalid001");
+ stmt.setString(2, "INVALID-1");
+ stmt.setInt(3, 0);
+ stmt.setInt(4, 0);
+ stmt.setInt(5, 0);
+ stmt.setString(6, "0000000000");
+ stmt.setString(7, "Invalid item for join test");
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_SUPPLIER_TABLE_FULL_NAME)) {
+
+ // Insert into supplier table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"supplier_id\", " +
+ " NAME, " +
+ " PHONE, " +
+ " ADDRESS, " +
+ " LOC_ID) " +
+ "values (?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "S1");
+ stmt.setString(3, "888-888-1111");
+ stmt.setString(4, "101 YYY Street");
+ stmt.setString(5, "10001");
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "S2");
+ stmt.setString(3, "888-888-2222");
+ stmt.setString(4, "202 YYY Street");
+ stmt.setString(5, "10002");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "S3");
+ stmt.setString(3, "888-888-3333");
+ stmt.setString(4, "303 YYY Street");
+ stmt.setString(5, null);
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "S4");
+ stmt.setString(3, "888-888-4444");
+ stmt.setString(4, "404 YYY Street");
+ stmt.setString(5, null);
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "S5");
+ stmt.setString(3, "888-888-5555");
+ stmt.setString(4, "505 YYY Street");
+ stmt.setString(5, "10005");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "S6");
+ stmt.setString(3, "888-888-6666");
+ stmt.setString(4, "606 YYY Street");
+ stmt.setString(5, "10006");
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_ORDER_TABLE_FULL_NAME)) {
+
+ // Insert into order table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"order_id\", " +
+ " \"customer_id\", " +
+ " \"item_id\", " +
+ " PRICE, " +
+ " QUANTITY," +
+ " DATE) " +
+ "values (?, ?, ?, ?, ?, ?)");
+ stmt.setString(1, "000000000000001");
+ stmt.setString(2, "0000000004");
+ stmt.setString(3, "0000000001");
+ stmt.setInt(4, 100);
+ stmt.setInt(5, 1000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-22 14:22:56").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000002");
+ stmt.setString(2, "0000000003");
+ stmt.setString(3, "0000000006");
+ stmt.setInt(4, 552);
+ stmt.setInt(5, 2000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 10:06:29").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000003");
+ stmt.setString(2, "0000000002");
+ stmt.setString(3, "0000000002");
+ stmt.setInt(4, 190);
+ stmt.setInt(5, 3000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 16:45:07").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000004");
+ stmt.setString(2, "0000000004");
+ stmt.setString(3, "0000000006");
+ stmt.setInt(4, 510);
+ stmt.setInt(5, 4000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-26 13:26:04").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000005");
+ stmt.setString(2, "0000000005");
+ stmt.setString(3, "0000000003");
+ stmt.setInt(4, 264);
+ stmt.setInt(5, 5000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-27 09:37:50").getTime()));
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_COITEM_TABLE_FULL_NAME)) {
+ // Insert into coitem table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (item_id, " +
+ " item_name, " +
+ " co_item_id, " +
+ " co_item_name) " +
+ "values (?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "T1");
+ stmt.setString(3, "0000000002");
+ stmt.setString(4, "T3");
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "T4");
+ stmt.setString(3, "0000000003");
+ stmt.setString(4, "T3");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "T4");
+ stmt.setString(3, "0000000005");
+ stmt.setString(4, "T5");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "T6");
+ stmt.setString(3, "0000000001");
+ stmt.setString(4, "T1");
+ stmt.execute();
+ }
+
+ conn.commit();
+ }
+
+ protected void createIndexes(Connection conn, String virtualName, String realName) throws Exception {
+ if (indexDDL != null && indexDDL.length > 0) {
+ for (String ddl : indexDDL) {
+ String newDDL = ddl.replace(virtualName, realName);
+ if (!newDDL.equals(ddl)) {
+ conn.createStatement().execute(newDDL);
+ }
+ }
+ }
+ }
+
+}
[48/48] phoenix git commit: PHOENIX-3364
ConcurrentModificationException from PhoenixSchema in adding secondary
indexes
Posted by ma...@apache.org.
PHOENIX-3364 ConcurrentModificationException from PhoenixSchema in adding secondary indexes
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/db70ca20
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/db70ca20
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/db70ca20
Branch: refs/heads/calcite
Commit: db70ca20162a0d9f392c3d480c79dfd59cb5504d
Parents: a617d2e
Author: maryannxue <ma...@gmail.com>
Authored: Fri Oct 7 12:14:59 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Fri Oct 7 12:14:59 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/calcite/PhoenixSchema.java | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/db70ca20/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
index 2f42cfd..3f2d6ea 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
@@ -1,6 +1,7 @@
package org.apache.phoenix.calcite;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -231,15 +232,19 @@ public class PhoenixSchema implements Schema {
CalciteSchema calciteSchema = CalciteSchema.from(schema);
List<String> path = CalciteSchema.from(viewSqlSchema).path(null);
try {
+ List<PhoenixTable> phoenixTables = Lists.newArrayList();
for (Table table : tables.values()) {
if (table instanceof PhoenixTable) {
- TableRef tableRef = ((PhoenixTable) table).tableMapping.getTableRef();
- for (PTable index : tableRef.getTable().getIndexes()) {
- TableRef indexTableRef = new TableRef(null, index,
- tableRef.getTimeStamp(), tableRef.getLowerBoundTimeStamp(),
- false);
- addMaterialization(indexTableRef, path, calciteSchema);
- }
+ phoenixTables.add((PhoenixTable) table);
+ }
+ }
+ for (PhoenixTable phoenixTable : phoenixTables) {
+ TableRef tableRef = phoenixTable.tableMapping.getTableRef();
+ for (PTable index : tableRef.getTable().getIndexes()) {
+ TableRef indexTableRef = new TableRef(null, index,
+ tableRef.getTimeStamp(), tableRef.getLowerBoundTimeStamp(),
+ false);
+ addMaterialization(indexTableRef, path, calciteSchema);
}
}
for (TableRef tableRef : viewTables) {
[37/48] phoenix git commit: PHOENIX-3159 CachingHTableFactory may
close HTable during eviction even if it is getting used for writing by
another thread
Posted by ma...@apache.org.
PHOENIX-3159 CachingHTableFactory may close HTable during eviction even if it is getting used for writing by another thread
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4c0aeb0d
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4c0aeb0d
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4c0aeb0d
Branch: refs/heads/calcite
Commit: 4c0aeb0d530852bc12e5fcd930e336fb19434397
Parents: 2f51568
Author: Ankit Singhal <an...@gmail.com>
Authored: Mon Oct 3 18:54:51 2016 +0530
Committer: Ankit Singhal <an...@gmail.com>
Committed: Mon Oct 3 18:54:51 2016 +0530
----------------------------------------------------------------------
.../hbase/index/table/CachingHTableFactory.java | 104 ++++++++++++++++---
.../index/table/CoprocessorHTableFactory.java | 6 ++
.../hbase/index/table/HTableFactory.java | 4 +-
.../hbase/index/write/IndexWriterUtils.java | 3 +
.../write/ParallelWriterIndexCommitter.java | 21 ++--
.../TrackingParallelWriterIndexCommitter.java | 18 ++--
.../hbase/index/write/FakeTableFactory.java | 9 +-
.../index/write/TestCachingHTableFactory.java | 37 ++++---
.../hbase/index/write/TestIndexWriter.java | 24 +++--
.../index/write/TestParalleIndexWriter.java | 16 ++-
.../write/TestParalleWriterIndexCommitter.java | 15 ++-
11 files changed, 197 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CachingHTableFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CachingHTableFactory.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CachingHTableFactory.java
index 0c06e2b..d0df5b3 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CachingHTableFactory.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CachingHTableFactory.java
@@ -17,18 +17,30 @@
*/
package org.apache.phoenix.hbase.index.table;
+import static org.apache.phoenix.hbase.index.write.IndexWriterUtils.HTABLE_KEEP_ALIVE_KEY;
+import static org.apache.phoenix.hbase.index.write.IndexWriterUtils.INDEX_WRITES_THREAD_MAX_PER_REGIONSERVER_KEY;
+
import java.io.IOException;
import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.collections.map.LRUMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.util.Bytes;
-
+import org.apache.hadoop.hbase.util.Threads;
+import org.apache.phoenix.execute.DelegateHTable;
import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
+import com.google.common.annotations.VisibleForTesting;;
+
/**
* A simple cache that just uses usual GC mechanisms to cleanup unused {@link HTableInterface}s.
* When requesting an {@link HTableInterface} via {@link #getTable}, you may get the same table as
@@ -47,7 +59,7 @@ public class CachingHTableFactory implements HTableFactory {
public class HTableInterfaceLRUMap extends LRUMap {
public HTableInterfaceLRUMap(int cacheSize) {
- super(cacheSize);
+ super(cacheSize, true);
}
@Override
@@ -58,12 +70,18 @@ public class CachingHTableFactory implements HTableFactory {
+ " because it was evicted from the cache.");
}
try {
- table.close();
+ synchronized (this) { // the whole operation of closing and checking the count should be atomic
+ // and should not conflict with getTable()
+ if (((CachedHTableWrapper)table).getReferenceCount() <= 0) {
+ table.close();
+ return true;
+ }
+ }
} catch (IOException e) {
LOG.info("Failed to correctly close HTable: " + Bytes.toString(table.getTableName())
+ " ignoring since being removed from queue.");
}
- return true;
+ return false;
}
}
@@ -73,38 +91,94 @@ public class CachingHTableFactory implements HTableFactory {
private static final Log LOG = LogFactory.getLog(CachingHTableFactory.class);
private static final String CACHE_SIZE_KEY = "index.tablefactory.cache.size";
- private static final int DEFAULT_CACHE_SIZE = 10;
+ private static final int DEFAULT_CACHE_SIZE = 1000;
private HTableFactory delegate;
@SuppressWarnings("rawtypes")
Map openTables;
+ private ThreadPoolExecutor pool;
- public CachingHTableFactory(HTableFactory tableFactory, Configuration conf) {
- this(tableFactory, getCacheSize(conf));
+ public CachingHTableFactory(HTableFactory tableFactory, Configuration conf, RegionCoprocessorEnvironment env) {
+ this(tableFactory, getCacheSize(conf), env);
}
- public CachingHTableFactory(HTableFactory factory, int cacheSize) {
+ public CachingHTableFactory(HTableFactory factory, int cacheSize, RegionCoprocessorEnvironment env) {
this.delegate = factory;
openTables = new HTableInterfaceLRUMap(cacheSize);
+ this.pool = new ThreadPoolExecutor(1,
+ env.getConfiguration().getInt(INDEX_WRITES_THREAD_MAX_PER_REGIONSERVER_KEY, Integer.MAX_VALUE),
+ env.getConfiguration().getInt(HTABLE_KEEP_ALIVE_KEY, 60), TimeUnit.SECONDS,
+ new SynchronousQueue<Runnable>(), Threads.newDaemonThreadFactory("CachedHtables"));
+ pool.allowCoreThreadTimeOut(true);
}
-
+
@Override
@SuppressWarnings("unchecked")
- public HTableInterface getTable(ImmutableBytesPtr tablename) throws IOException {
+ public HTableInterface getTable(ImmutableBytesPtr tablename, ExecutorService pool) throws IOException {
ImmutableBytesPtr tableBytes = new ImmutableBytesPtr(tablename);
synchronized (openTables) {
- HTableInterface table = (HTableInterface) openTables.get(tableBytes);
+ CachedHTableWrapper table = (CachedHTableWrapper) openTables.get(tableBytes);
if (table == null) {
- table = delegate.getTable(tablename);
+ table = new CachedHTableWrapper(delegate.getTable(tablename, pool));
openTables.put(tableBytes, table);
}
+ table.incrementReferenceCount();
return table;
}
}
@Override
- public void shutdown() {
- this.delegate.shutdown();
- }
+ public void shutdown() {
+ this.delegate.shutdown();
+ this.pool.shutdown();
+ try {
+ boolean terminated = false;
+ do {
+ // wait until the pool has terminated
+ terminated = this.pool.awaitTermination(60, TimeUnit.SECONDS);
+ } while (!terminated);
+ } catch (InterruptedException e) {
+ this.pool.shutdownNow();
+ LOG.warn("waitForTermination interrupted");
+ }
+ }
+
+ public static class CachedHTableWrapper extends DelegateHTable {
+
+ private AtomicInteger referenceCount = new AtomicInteger();
+
+ public CachedHTableWrapper(HTableInterface table) {
+ super(table);
+ }
+
+ @Override
+ public synchronized void close() throws IOException {
+ if (getReferenceCount() > 0) {
+ this.referenceCount.decrementAndGet();
+ } else {
+ // During LRU eviction
+ super.close();
+ }
+ }
+
+ public void incrementReferenceCount() {
+ this.referenceCount.incrementAndGet();
+ }
+
+ public int getReferenceCount() {
+ return this.referenceCount.get();
+ }
+
+ }
+
+ @Override
+ public HTableInterface getTable(ImmutableBytesPtr tablename) throws IOException {
+ return getTable(tablename, this.pool);
+ }
+
+ @VisibleForTesting
+ public ThreadPoolExecutor getPool(){
+ return this.pool;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CoprocessorHTableFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CoprocessorHTableFactory.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CoprocessorHTableFactory.java
index ded618d..45e271d 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CoprocessorHTableFactory.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/CoprocessorHTableFactory.java
@@ -18,6 +18,7 @@
package org.apache.phoenix.hbase.index.table;
import java.io.IOException;
+import java.util.concurrent.ExecutorService;
import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.TableName;
@@ -36,6 +37,11 @@ public class CoprocessorHTableFactory implements HTableFactory {
public HTableInterface getTable(ImmutableBytesPtr tablename) throws IOException {
return this.e.getTable(TableName.valueOf(tablename.copyBytesIfNecessary()));
}
+
+ @Override
+ public HTableInterface getTable(ImmutableBytesPtr tablename,ExecutorService pool) throws IOException {
+ return this.e.getTable(TableName.valueOf(tablename.copyBytesIfNecessary()), pool);
+ }
@Override
public void shutdown() {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/HTableFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/HTableFactory.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/HTableFactory.java
index bef3d34..e6a2e60 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/HTableFactory.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/table/HTableFactory.java
@@ -19,9 +19,9 @@
package org.apache.phoenix.hbase.index.table;
import java.io.IOException;
+import java.util.concurrent.ExecutorService;
import org.apache.hadoop.hbase.client.HTableInterface;
-
import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
public interface HTableFactory {
@@ -29,4 +29,6 @@ public interface HTableFactory {
public HTableInterface getTable(ImmutableBytesPtr tablename) throws IOException;
public void shutdown();
+
+ public HTableInterface getTable(ImmutableBytesPtr tablename, ExecutorService pool) throws IOException;
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/IndexWriterUtils.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/IndexWriterUtils.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/IndexWriterUtils.java
index b8b0079..6eb657d 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/IndexWriterUtils.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/IndexWriterUtils.java
@@ -54,6 +54,9 @@ public class IndexWriterUtils {
/** Configuration key that HBase uses to set the max number of threads for an HTable */
public static final String HTABLE_THREAD_KEY = "hbase.htable.threads.max";
+ public static final String INDEX_WRITES_THREAD_MAX_PER_REGIONSERVER_KEY = "phoenix.index.writes.threads.max";
+ public static final String HTABLE_KEEP_ALIVE_KEY = "hbase.htable.threads.keepalivetime";
+
private IndexWriterUtils() {
// private ctor for utilites
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/ParallelWriterIndexCommitter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/ParallelWriterIndexCommitter.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/ParallelWriterIndexCommitter.java
index dd30db5..1549d26 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/ParallelWriterIndexCommitter.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/ParallelWriterIndexCommitter.java
@@ -21,14 +21,10 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.CellScanner;
-import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.Stoppable;
-import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Mutation;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
-import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.phoenix.hbase.index.exception.SingleIndexWriteFailureException;
import org.apache.phoenix.hbase.index.parallel.EarlyExitFailure;
import org.apache.phoenix.hbase.index.parallel.QuickFailingTaskRunner;
@@ -41,7 +37,6 @@ import org.apache.phoenix.hbase.index.table.HTableFactory;
import org.apache.phoenix.hbase.index.table.HTableInterfaceReference;
import org.apache.phoenix.hbase.index.util.KeyValueBuilder;
import org.apache.phoenix.util.IndexUtil;
-import org.apache.phoenix.util.MetaDataUtil;
import com.google.common.collect.Multimap;
@@ -59,7 +54,7 @@ public class ParallelWriterIndexCommitter implements IndexCommitter {
public static final String NUM_CONCURRENT_INDEX_WRITER_THREADS_CONF_KEY = "index.writer.threads.max";
private static final int DEFAULT_CONCURRENT_INDEX_WRITER_THREADS = 10;
- private static final String INDEX_WRITER_KEEP_ALIVE_TIME_CONF_KEY = "index.writer.threads.keepalivetime";
+ public static final String INDEX_WRITER_KEEP_ALIVE_TIME_CONF_KEY = "index.writer.threads.keepalivetime";
private static final Log LOG = LogFactory.getLog(ParallelWriterIndexCommitter.class);
private HTableFactory factory;
@@ -84,7 +79,7 @@ public class ParallelWriterIndexCommitter implements IndexCommitter {
new ThreadPoolBuilder(name, conf).setMaxThread(NUM_CONCURRENT_INDEX_WRITER_THREADS_CONF_KEY,
DEFAULT_CONCURRENT_INDEX_WRITER_THREADS).setCoreTimeout(
INDEX_WRITER_KEEP_ALIVE_TIME_CONF_KEY), env), env.getRegionServerServices(), parent,
- CachingHTableFactory.getCacheSize(conf));
+ CachingHTableFactory.getCacheSize(conf),env);
this.kvBuilder = KeyValueBuilder.get(env.getHBaseVersion());
}
@@ -93,8 +88,8 @@ public class ParallelWriterIndexCommitter implements IndexCommitter {
* <p>
* Exposed for TESTING
*/
- void setup(HTableFactory factory, ExecutorService pool, Abortable abortable, Stoppable stop, int cacheSize) {
- this.factory = new CachingHTableFactory(factory, cacheSize);
+ void setup(HTableFactory factory, ExecutorService pool, Abortable abortable, Stoppable stop, int cacheSize, RegionCoprocessorEnvironment env) {
+ this.factory = new CachingHTableFactory(factory, cacheSize, env);
this.pool = new QuickFailingTaskRunner(pool);
this.stopped = stop;
}
@@ -151,6 +146,7 @@ public class ParallelWriterIndexCommitter implements IndexCommitter {
if (LOG.isDebugEnabled()) {
LOG.debug("Writing index update:" + mutations + " to table: " + tableReference);
}
+ HTableInterface table = null;
try {
if (allowLocalUpdates
&& env != null
@@ -168,7 +164,7 @@ public class ParallelWriterIndexCommitter implements IndexCommitter {
}
}
}
- HTableInterface table = factory.getTable(tableReference.get());
+ table = factory.getTable(tableReference.get());
throwFailureIfDone();
table.batch(mutations);
} catch (SingleIndexWriteFailureException e) {
@@ -180,6 +176,11 @@ public class ParallelWriterIndexCommitter implements IndexCommitter {
Thread.currentThread().interrupt();
throw new SingleIndexWriteFailureException(tableReference.toString(), mutations, e);
}
+ finally{
+ if (table != null) {
+ table.close();
+ }
+ }
return null;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/recovery/TrackingParallelWriterIndexCommitter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/recovery/TrackingParallelWriterIndexCommitter.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/recovery/TrackingParallelWriterIndexCommitter.java
index f3888ed..4f1a076 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/recovery/TrackingParallelWriterIndexCommitter.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/recovery/TrackingParallelWriterIndexCommitter.java
@@ -23,13 +23,10 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.Stoppable;
-import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Mutation;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
-import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.phoenix.hbase.index.CapturingAbortable;
import org.apache.phoenix.hbase.index.exception.MultiIndexWriteFailureException;
import org.apache.phoenix.hbase.index.exception.SingleIndexWriteFailureException;
@@ -48,7 +45,6 @@ import org.apache.phoenix.hbase.index.write.IndexWriter;
import org.apache.phoenix.hbase.index.write.IndexWriterUtils;
import org.apache.phoenix.hbase.index.write.ParallelWriterIndexCommitter;
import org.apache.phoenix.util.IndexUtil;
-import org.apache.phoenix.util.MetaDataUtil;
import com.google.common.collect.Multimap;
@@ -95,7 +91,7 @@ public class TrackingParallelWriterIndexCommitter implements IndexCommitter {
new ThreadPoolBuilder(name, conf).setMaxThread(NUM_CONCURRENT_INDEX_WRITER_THREADS_CONF_KEY,
DEFAULT_CONCURRENT_INDEX_WRITER_THREADS).setCoreTimeout(
INDEX_WRITER_KEEP_ALIVE_TIME_CONF_KEY), env), env.getRegionServerServices(), parent,
- CachingHTableFactory.getCacheSize(conf));
+ CachingHTableFactory.getCacheSize(conf), env);
}
/**
@@ -103,9 +99,10 @@ public class TrackingParallelWriterIndexCommitter implements IndexCommitter {
* <p>
* Exposed for TESTING
*/
- void setup(HTableFactory factory, ExecutorService pool, Abortable abortable, Stoppable stop, int cacheSize) {
+ void setup(HTableFactory factory, ExecutorService pool, Abortable abortable, Stoppable stop, int cacheSize,
+ RegionCoprocessorEnvironment env) {
this.pool = new WaitForCompletionTaskRunner(pool);
- this.factory = new CachingHTableFactory(factory, cacheSize);
+ this.factory = new CachingHTableFactory(factory, cacheSize, env);
this.abortable = new CapturingAbortable(abortable);
this.stopped = stop;
}
@@ -148,6 +145,7 @@ public class TrackingParallelWriterIndexCommitter implements IndexCommitter {
@SuppressWarnings("deprecation")
@Override
public Boolean call() throws Exception {
+ HTableInterface table = null;
try {
// this may have been queued, but there was an abort/stop so we try to early exit
throwFailureIfDone();
@@ -172,7 +170,7 @@ public class TrackingParallelWriterIndexCommitter implements IndexCommitter {
LOG.debug("Writing index update:" + mutations + " to table: " + tableReference);
}
- HTableInterface table = factory.getTable(tableReference.get());
+ table = factory.getTable(tableReference.get());
throwFailureIfDone();
table.batch(mutations);
} catch (InterruptedException e) {
@@ -181,6 +179,10 @@ public class TrackingParallelWriterIndexCommitter implements IndexCommitter {
throw e;
} catch (Exception e) {
throw e;
+ } finally {
+ if (table != null) {
+ table.close();
+ }
}
return Boolean.TRUE;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/FakeTableFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/FakeTableFactory.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/FakeTableFactory.java
index 2b6be18..4483a7f 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/FakeTableFactory.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/FakeTableFactory.java
@@ -20,9 +20,9 @@ package org.apache.phoenix.hbase.index.write;
import java.io.IOException;
import java.util.Map;
+import java.util.concurrent.ExecutorService;
import org.apache.hadoop.hbase.client.HTableInterface;
-
import org.apache.phoenix.hbase.index.table.HTableFactory;
import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
@@ -41,11 +41,16 @@ class FakeTableFactory implements HTableFactory {
@Override
public HTableInterface getTable(ImmutableBytesPtr tablename) throws IOException {
- return this.tables.get(tablename);
+ return getTable(tablename, null);
}
@Override
public void shutdown() {
shutdown = true;
}
+
+ @Override
+ public HTableInterface getTable(ImmutableBytesPtr tablename, ExecutorService pool) throws IOException {
+ return this.tables.get(tablename);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestCachingHTableFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestCachingHTableFactory.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestCachingHTableFactory.java
index adf82f3..93ac3a6 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestCachingHTableFactory.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestCachingHTableFactory.java
@@ -17,14 +17,18 @@
*/
package org.apache.phoenix.hbase.index.write;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.Test;
-import org.mockito.Mockito;
-
import org.apache.phoenix.hbase.index.table.CachingHTableFactory;
import org.apache.phoenix.hbase.index.table.HTableFactory;
import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
+import org.junit.Test;
+import org.mockito.Mockito;
public class TestCachingHTableFactory {
@@ -32,27 +36,34 @@ public class TestCachingHTableFactory {
public void testCacheCorrectlyExpiresTable() throws Exception {
// setup the mocks for the tables we will request
HTableFactory delegate = Mockito.mock(HTableFactory.class);
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
ImmutableBytesPtr t1 = new ImmutableBytesPtr(Bytes.toBytes("t1"));
ImmutableBytesPtr t2 = new ImmutableBytesPtr(Bytes.toBytes("t2"));
ImmutableBytesPtr t3 = new ImmutableBytesPtr(Bytes.toBytes("t3"));
HTableInterface table1 = Mockito.mock(HTableInterface.class);
HTableInterface table2 = Mockito.mock(HTableInterface.class);
HTableInterface table3 = Mockito.mock(HTableInterface.class);
- Mockito.when(delegate.getTable(t1)).thenReturn(table1);
- Mockito.when(delegate.getTable(t2)).thenReturn(table2);
- Mockito.when(delegate.getTable(t3)).thenReturn(table3);
+
// setup our factory with a cache size of 2
- CachingHTableFactory factory = new CachingHTableFactory(delegate, 2);
- factory.getTable(t1);
- factory.getTable(t2);
- factory.getTable(t3);
+ CachingHTableFactory factory = new CachingHTableFactory(delegate, 2, e);
+ Mockito.when(delegate.getTable(t1,factory.getPool())).thenReturn(table1);
+ Mockito.when(delegate.getTable(t2,factory.getPool())).thenReturn(table2);
+ Mockito.when(delegate.getTable(t3,factory.getPool())).thenReturn(table3);
+
+ HTableInterface ft1 =factory.getTable(t1);
+ HTableInterface ft2 =factory.getTable(t2);
+ ft1.close();
+ HTableInterface ft3 = factory.getTable(t3);
// get the same table a second time, after it has gone out of cache
factory.getTable(t1);
- Mockito.verify(delegate, Mockito.times(2)).getTable(t1);
- Mockito.verify(delegate, Mockito.times(1)).getTable(t2);
- Mockito.verify(delegate, Mockito.times(1)).getTable(t3);
+ Mockito.verify(delegate, Mockito.times(2)).getTable(t1,factory.getPool());
+ Mockito.verify(delegate, Mockito.times(1)).getTable(t2,factory.getPool());
+ Mockito.verify(delegate, Mockito.times(1)).getTable(t3,factory.getPool());
Mockito.verify(table1).close();
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java
index 8f576cf..76ea933 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java
@@ -29,6 +29,7 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -90,6 +91,10 @@ public class TestIndexWriter {
LOG.info("Current thread is interrupted: " + Thread.interrupted());
Abortable abort = new StubAbortable();
Stoppable stop = Mockito.mock(Stoppable.class);
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
ExecutorService exec = Executors.newFixedThreadPool(1);
Map<ImmutableBytesPtr, HTableInterface> tables = new HashMap<ImmutableBytesPtr, HTableInterface>();
FakeTableFactory factory = new FakeTableFactory(tables);
@@ -117,7 +122,7 @@ public class TestIndexWriter {
// setup the writer and failure policy
ParallelWriterIndexCommitter committer = new ParallelWriterIndexCommitter(VersionInfo.getVersion());
- committer.setup(factory, exec, abort, stop, 2);
+ committer.setup(factory, exec, abort, stop, 2, e);
KillServerOnFailurePolicy policy = new KillServerOnFailurePolicy();
policy.setup(stop, abort);
IndexWriter writer = new IndexWriter(committer, policy);
@@ -164,7 +169,10 @@ public class TestIndexWriter {
Mockito.when(table.batch(Mockito.anyList())).thenThrow(
new IOException("Intentional IOException for failed first write."));
Mockito.when(table.getTableName()).thenReturn(tableName);
-
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
// second table just blocks to make sure that the abort propagates to the third task
final CountDownLatch waitOnAbortedLatch = new CountDownLatch(1);
final boolean[] failed = new boolean[] { false };
@@ -190,15 +198,15 @@ public class TestIndexWriter {
tables.put(new ImmutableBytesPtr(tableName2), table2);
ParallelWriterIndexCommitter committer = new ParallelWriterIndexCommitter(VersionInfo.getVersion());
- committer.setup(factory, exec, abort, stop, 2);
+ committer.setup(factory, exec, abort, stop, 2, e);
KillServerOnFailurePolicy policy = new KillServerOnFailurePolicy();
policy.setup(stop, abort);
IndexWriter writer = new IndexWriter(committer, policy);
try {
writer.write(indexUpdates);
fail("Should not have successfully completed all index writes");
- } catch (SingleIndexWriteFailureException e) {
- LOG.info("Correctly got a failure to reach the index", e);
+ } catch (SingleIndexWriteFailureException s) {
+ LOG.info("Correctly got a failure to reach the index", s);
// should have correctly gotten the correct abort, so let the next task execute
waitOnAbortedLatch.countDown();
}
@@ -223,6 +231,10 @@ public class TestIndexWriter {
// single thread factory so the older request gets queued
ExecutorService exec = Executors.newFixedThreadPool(1);
Map<ImmutableBytesPtr, HTableInterface> tables = new HashMap<ImmutableBytesPtr, HTableInterface>();
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
FakeTableFactory factory = new FakeTableFactory(tables);
byte[] tableName = this.testName.getTableName();
@@ -257,7 +269,7 @@ public class TestIndexWriter {
// setup the writer
ParallelWriterIndexCommitter committer = new ParallelWriterIndexCommitter(VersionInfo.getVersion());
- committer.setup(factory, exec, abort, stop, 2);
+ committer.setup(factory, exec, abort, stop, 2, e );
KillServerOnFailurePolicy policy = new KillServerOnFailurePolicy();
policy.setup(stop, abort);
final IndexWriter writer = new IndexWriter(committer, policy);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java
index 1f1e37e..ab88cd2 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java
@@ -22,16 +22,19 @@ import static org.junit.Assert.assertTrue;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Abortable;
import org.apache.hadoop.hbase.Stoppable;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Mutation;
import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.VersionInfo;
import org.apache.phoenix.hbase.index.StubAbortable;
@@ -57,13 +60,17 @@ public class TestParalleIndexWriter {
@Test
public void testCorrectlyCleansUpResources() throws Exception{
ExecutorService exec = Executors.newFixedThreadPool(1);
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
FakeTableFactory factory = new FakeTableFactory(
Collections.<ImmutableBytesPtr, HTableInterface> emptyMap());
ParallelWriterIndexCommitter writer = new ParallelWriterIndexCommitter(VersionInfo.getVersion());
Abortable mockAbort = Mockito.mock(Abortable.class);
Stoppable mockStop = Mockito.mock(Stoppable.class);
// create a simple writer
- writer.setup(factory, exec, mockAbort, mockStop, 1);
+ writer.setup(factory, exec, mockAbort, mockStop, 1,e);
// stop the writer
writer.stop(this.test.getTableNameString() + " finished");
assertTrue("Factory didn't get shutdown after writer#stop!", factory.shutdown);
@@ -82,7 +89,10 @@ public class TestParalleIndexWriter {
Map<ImmutableBytesPtr, HTableInterface> tables =
new HashMap<ImmutableBytesPtr, HTableInterface>();
FakeTableFactory factory = new FakeTableFactory(tables);
-
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
ImmutableBytesPtr tableName = new ImmutableBytesPtr(this.test.getTableName());
Put m = new Put(row);
m.add(Bytes.toBytes("family"), Bytes.toBytes("qual"), null);
@@ -107,7 +117,7 @@ public class TestParalleIndexWriter {
// setup the writer and failure policy
ParallelWriterIndexCommitter writer = new ParallelWriterIndexCommitter(VersionInfo.getVersion());
- writer.setup(factory, exec, abort, stop, 1);
+ writer.setup(factory, exec, abort, stop, 1, e);
writer.write(indexUpdates, true);
assertTrue("Writer returned before the table batch completed! Likely a race condition tripped",
completed[0]);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/4c0aeb0d/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java
index 8eece3b..219f615 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java
@@ -22,16 +22,19 @@ import static org.junit.Assert.assertTrue;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Abortable;
import org.apache.hadoop.hbase.Stoppable;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Mutation;
import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.VersionInfo;
import org.apache.phoenix.hbase.index.StubAbortable;
@@ -62,8 +65,12 @@ public class TestParalleWriterIndexCommitter {
ParallelWriterIndexCommitter writer = new ParallelWriterIndexCommitter(VersionInfo.getVersion());
Abortable mockAbort = Mockito.mock(Abortable.class);
Stoppable mockStop = Mockito.mock(Stoppable.class);
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
// create a simple writer
- writer.setup(factory, exec, mockAbort, mockStop, 1);
+ writer.setup(factory, exec, mockAbort, mockStop, 1, e);
// stop the writer
writer.stop(this.test.getTableNameString() + " finished");
assertTrue("Factory didn't get shutdown after writer#stop!", factory.shutdown);
@@ -77,6 +84,10 @@ public class TestParalleWriterIndexCommitter {
LOG.info("Starting " + test.getTableNameString());
LOG.info("Current thread is interrupted: " + Thread.interrupted());
Abortable abort = new StubAbortable();
+ RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class);
+ Configuration conf =new Configuration();
+ Mockito.when(e.getConfiguration()).thenReturn(conf);
+ Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>());
Stoppable stop = Mockito.mock(Stoppable.class);
ExecutorService exec = Executors.newFixedThreadPool(1);
Map<ImmutableBytesPtr, HTableInterface> tables =
@@ -107,7 +118,7 @@ public class TestParalleWriterIndexCommitter {
// setup the writer and failure policy
ParallelWriterIndexCommitter writer = new ParallelWriterIndexCommitter(VersionInfo.getVersion());
- writer.setup(factory, exec, abort, stop, 1);
+ writer.setup(factory, exec, abort, stop, 1, e);
writer.write(indexUpdates, true);
assertTrue("Writer returned before the table batch completed! Likely a race condition tripped",
completed[0]);
[07/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
PHOENIX-3253 Make changes to tests to support method level parallelization
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/d4f72018
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/d4f72018
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/d4f72018
Branch: refs/heads/calcite
Commit: d4f7201854a8d27ba7e6dd1037a10a4a34842b92
Parents: 8174fc4
Author: James Taylor <ja...@apache.org>
Authored: Wed Sep 21 12:45:25 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Wed Sep 21 12:45:25 2016 -0700
----------------------------------------------------------------------
.../phoenix/end2end/StatsCollectorIT.java | 33 ++++------
.../apache/phoenix/end2end/StoreNullsIT.java | 68 ++------------------
.../query/ConnectionQueryServicesImpl.java | 1 +
.../java/org/apache/phoenix/util/TestUtil.java | 55 ++++++++++++++++
4 files changed, 74 insertions(+), 83 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/d4f72018/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
index dd7741a..9a1ea26 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
@@ -40,8 +40,8 @@ import java.util.Random;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HRegionLocation;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.query.ConnectionQueryServices;
@@ -77,8 +77,8 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
props.put(QueryServices.EXPLAIN_CHUNK_COUNT_ATTRIB, Boolean.TRUE.toString());
props.put(QueryServices.EXPLAIN_ROW_COUNT_ATTRIB, Boolean.TRUE.toString());
- props.put(QueryServices.QUEUE_SIZE_ATTRIB, Integer.toString(1024));
props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
+ props.put(QueryServices.STATS_UPDATE_FREQ_MS_ATTRIB, Long.toString(Long.MAX_VALUE));
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
@@ -347,16 +347,8 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
return stmt;
}
- private void compactTable(Connection conn, String tableName) throws IOException, InterruptedException, SQLException {
- ConnectionQueryServices services = conn.unwrap(PhoenixConnection.class).getQueryServices();
- HBaseAdmin admin = services.getAdmin();
- try {
- admin.flush(tableName);
- admin.majorCompact(tableName);
- Thread.sleep(10000); // FIXME: how do we know when compaction is done?
- } finally {
- admin.close();
- }
+ private void compactTable(Connection conn, String tableName) throws Exception {
+ TestUtil.doMajorCompaction(conn, tableName);
}
@Test
@@ -374,9 +366,6 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
Connection conn;
PreparedStatement stmt;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- if (minStatsUpdateFreq != null) {
- props.setProperty(QueryServices.MIN_STATS_UPDATE_FREQ_MS_ATTRIB, minStatsUpdateFreq.toString());
- }
conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute("CREATE TABLE " + tableName + "(k CHAR(1) PRIMARY KEY, v INTEGER, w INTEGER) "
+ HColumnDescriptor.KEEP_DELETED_CELLS + "=" + Boolean.FALSE);
@@ -391,11 +380,11 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
compactTable(conn, tableName);
if (minStatsUpdateFreq == null) {
- conn.unwrap(PhoenixConnection.class).getQueryServices().clearCache();
- }
- // Confirm that when we have a non zero MIN_STATS_UPDATE_FREQ_MS_ATTRIB, after we run
- // UPDATATE STATISTICS, the new statistics are faulted in as expected.
- if (minStatsUpdateFreq != null) {
+ ImmutableBytesPtr ptr = new ImmutableBytesPtr(Bytes.toBytes(tableName));
+ conn.unwrap(PhoenixConnection.class).getQueryServices().invalidateStats(ptr);
+ } else {
+ // Confirm that when we have a non zero MIN_STATS_UPDATE_FREQ_MS_ATTRIB, after we run
+ // UPDATATE STATISTICS, the new statistics are faulted in as expected.
List<KeyRange>keyRanges = getAllSplits(conn, tableName);
assertNotEquals(nRows+1, keyRanges.size());
// If we've set MIN_STATS_UPDATE_FREQ_MS_ATTRIB, an UPDATE STATISTICS will invalidate the cache
@@ -412,7 +401,8 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
compactTable(conn, tableName);
if (minStatsUpdateFreq == null) {
- conn.unwrap(PhoenixConnection.class).getQueryServices().clearCache();
+ ImmutableBytesPtr ptr = new ImmutableBytesPtr(Bytes.toBytes(tableName));
+ conn.unwrap(PhoenixConnection.class).getQueryServices().invalidateStats(ptr);
}
keyRanges = getAllSplits(conn, tableName);
@@ -429,7 +419,6 @@ public class StatsCollectorIT extends ParallelStatsEnabledIT {
+ PhoenixDatabaseMetaData.SYSTEM_STATS_NAME + " WHERE PHYSICAL_NAME='" + tableName + "'");
rs.next();
assertEquals(nRows - nDeletedRows, rs.getLong(1));
-
}
@Test
http://git-wip-us.apache.org/repos/asf/phoenix/blob/d4f72018/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
index 904743a..c14cf39 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StoreNullsIT.java
@@ -28,16 +28,11 @@ import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.List;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.client.Delete;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
@@ -46,12 +41,11 @@ import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import com.google.common.collect.Lists;
-
/**
* Tests to demonstrate and verify the STORE_NULLS option on a table,
* which allows explicitly storing null values (as opposed to using HBase Deletes) for nulls. This
@@ -132,7 +126,7 @@ public class StoreNullsIT extends ParallelStatsDisabledIT {
}
@Test
- public void testQueryingHistory() throws SQLException, InterruptedException, IOException {
+ public void testQueryingHistory() throws Exception {
stmt.executeUpdate("UPSERT INTO " + WITH_NULLS + " VALUES (1, 'v1')");
stmt.executeUpdate("UPSERT INTO " + WITHOUT_NULLS + " VALUES (1, 'v1')");
@@ -144,8 +138,8 @@ public class StoreNullsIT extends ParallelStatsDisabledIT {
stmt.executeUpdate("UPSERT INTO " + WITHOUT_NULLS + " VALUES (1, null)");
Thread.sleep(10L);
- doMajorCompaction(WITH_NULLS);
- doMajorCompaction(WITHOUT_NULLS);
+ TestUtil.doMajorCompaction(conn, WITH_NULLS);
+ TestUtil.doMajorCompaction(conn, WITHOUT_NULLS);
Properties historicalProps = new Properties();
historicalProps.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB,
@@ -171,7 +165,7 @@ public class StoreNullsIT extends ParallelStatsDisabledIT {
// Row deletes should work in the same way regardless of what STORE_NULLS is set to
@Test
- public void testDeletes() throws SQLException, InterruptedException, IOException {
+ public void testDeletes() throws Exception {
stmt.executeUpdate("UPSERT INTO " + WITH_NULLS + " VALUES (1, 'v1')");
stmt.executeUpdate("UPSERT INTO " + WITHOUT_NULLS + " VALUES (1, 'v1')");
@@ -183,8 +177,8 @@ public class StoreNullsIT extends ParallelStatsDisabledIT {
stmt.executeUpdate("DELETE FROM " + WITHOUT_NULLS + " WHERE id = 1");
Thread.sleep(10L);
- doMajorCompaction(WITH_NULLS);
- doMajorCompaction(WITHOUT_NULLS);
+ TestUtil.doMajorCompaction(conn, WITH_NULLS);
+ TestUtil.doMajorCompaction(conn, WITHOUT_NULLS);
Properties historicalProps = new Properties();
historicalProps.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB,
@@ -221,53 +215,5 @@ public class StoreNullsIT extends ParallelStatsDisabledIT {
assertTrue(rs.getBoolean(1));
}
- /**
- * Runs a major compaction, and then waits until the compaction is complete before returning.
- *
- * @param tableName name of the table to be compacted
- */
- private void doMajorCompaction(String tableName) throws IOException, InterruptedException {
-
- tableName = SchemaUtil.normalizeIdentifier(tableName);
-
- // We simply write a marker row, request a major compaction, and then wait until the marker
- // row is gone
- HTable htable = new HTable(getUtility().getConfiguration(), tableName);
- byte[] markerRowKey = Bytes.toBytes("TO_DELETE");
-
-
- Put put = new Put(markerRowKey);
- put.add(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, HConstants.EMPTY_BYTE_ARRAY,
- HConstants.EMPTY_BYTE_ARRAY);
- htable.put(put);
- htable.delete(new Delete(markerRowKey));
- htable.close();
-
- HBaseAdmin hbaseAdmin = new HBaseAdmin(getUtility().getConfiguration());
- hbaseAdmin.flush(tableName);
- hbaseAdmin.majorCompact(tableName);
- hbaseAdmin.close();
-
- boolean compactionDone = false;
- while (!compactionDone) {
- Thread.sleep(2000L);
- htable = new HTable(getUtility().getConfiguration(), tableName);
- Scan scan = new Scan();
- scan.setStartRow(markerRowKey);
- scan.setStopRow(Bytes.add(markerRowKey, new byte[] { 0 }));
- scan.setRaw(true);
-
- ResultScanner scanner = htable.getScanner(scan);
- List<Result> results = Lists.newArrayList(scanner);
- LOG.info("Results: " + results);
- compactionDone = results.isEmpty();
- scanner.close();
-
- LOG.info("Compaction done: " + compactionDone);
- }
-
- htable.close();
- }
-
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/d4f72018/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index dfe7ee8..dc07220 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -3073,6 +3073,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
HTableInterface htable = this.getTable(SchemaUtil
.getPhysicalName(PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME_BYTES, this.getProps()).getName());
try {
+ tableStatsCache.invalidateAll();
final Map<byte[], Long> results =
htable.coprocessorService(MetaDataService.class, HConstants.EMPTY_START_ROW,
HConstants.EMPTY_END_ROW, new Batch.Call<MetaDataService, Long>() {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/d4f72018/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
index 5500e7a..50180d1 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
@@ -49,9 +49,16 @@ import java.util.Collections;
import java.util.List;
import java.util.Properties;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.client.Delete;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.coprocessor.Batch;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
@@ -90,6 +97,7 @@ import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.jdbc.PhoenixPreparedStatement;
import org.apache.phoenix.jdbc.PhoenixStatement;
import org.apache.phoenix.parse.LikeParseNode.LikeType;
+import org.apache.phoenix.query.ConnectionQueryServices;
import org.apache.phoenix.query.KeyRange;
import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.query.QueryServices;
@@ -110,6 +118,8 @@ import com.google.common.collect.Lists;
public class TestUtil {
+ private static final Log LOG = LogFactory.getLog(TestUtil.class);
+
public static final String DEFAULT_SCHEMA_NAME = "";
public static final String DEFAULT_DATA_TABLE_NAME = "T";
public static final String DEFAULT_INDEX_TABLE_NAME = "I";
@@ -713,5 +723,50 @@ public class TestUtil {
+ (options!=null? options : "");
conn.createStatement().execute(ddl);
}
+
+ /**
+ * Runs a major compaction, and then waits until the compaction is complete before returning.
+ *
+ * @param tableName name of the table to be compacted
+ */
+ public static void doMajorCompaction(Connection conn, String tableName) throws Exception {
+
+ tableName = SchemaUtil.normalizeIdentifier(tableName);
+
+ // We simply write a marker row, request a major compaction, and then wait until the marker
+ // row is gone
+ ConnectionQueryServices services = conn.unwrap(PhoenixConnection.class).getQueryServices();
+ try (HTableInterface htable = services.getTable(Bytes.toBytes(tableName))) {
+ byte[] markerRowKey = Bytes.toBytes("TO_DELETE");
+
+ Put put = new Put(markerRowKey);
+ put.add(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, HConstants.EMPTY_BYTE_ARRAY,
+ HConstants.EMPTY_BYTE_ARRAY);
+ htable.put(put);
+ htable.delete(new Delete(markerRowKey));
+
+ HBaseAdmin hbaseAdmin = services.getAdmin();
+ hbaseAdmin.flush(tableName);
+ hbaseAdmin.majorCompact(tableName);
+ hbaseAdmin.close();
+
+ boolean compactionDone = false;
+ while (!compactionDone) {
+ Thread.sleep(2000L);
+ Scan scan = new Scan();
+ scan.setStartRow(markerRowKey);
+ scan.setStopRow(Bytes.add(markerRowKey, new byte[] { 0 }));
+ scan.setRaw(true);
+
+ ResultScanner scanner = htable.getScanner(scan);
+ List<Result> results = Lists.newArrayList(scanner);
+ LOG.info("Results: " + results);
+ compactionDone = results.isEmpty();
+ scanner.close();
+
+ LOG.info("Compaction done: " + compactionDone);
+ }
+ }
+ }
}
[38/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
PHOENIX-3253 Make changes to tests to support method level parallelization
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/0494e54d
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/0494e54d
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/0494e54d
Branch: refs/heads/calcite
Commit: 0494e54de2a9ff7e1115678658fb092c95602930
Parents: 4c0aeb0
Author: James Taylor <ja...@apache.org>
Authored: Mon Oct 3 13:46:53 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Mon Oct 3 13:47:38 2016 -0700
----------------------------------------------------------------------
.../src/it/java/org/apache/phoenix/end2end/index/IndexIT.java | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/0494e54d/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
index 254046b..cb4310b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
@@ -230,6 +230,10 @@ public class IndexIT extends ParallelStatsDisabledIT {
testCreateIndexAfterUpsertStarted(false,
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, generateUniqueName()),
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, generateUniqueName()));
+ }
+
+ @Test
+ public void testCreateIndexAfterUpsertStartedTxnl() throws Exception {
if (transactional) {
testCreateIndexAfterUpsertStarted(true,
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, generateUniqueName()),
[12/48] phoenix git commit: PHOENIX-3307 Backward compatibility fails
for tables with index (4.7.0 client - 4.8.1 server)
Posted by ma...@apache.org.
PHOENIX-3307 Backward compatibility fails for tables with index (4.7.0 client - 4.8.1 server)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/16f0da3d
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/16f0da3d
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/16f0da3d
Branch: refs/heads/calcite
Commit: 16f0da3d94506126d5ae8e36389e1590f7357ff0
Parents: b1682dd
Author: Thomas D'Silva <td...@salesforce.com>
Authored: Thu Sep 22 13:20:46 2016 -0700
Committer: Thomas D'Silva <td...@salesforce.com>
Committed: Thu Sep 22 14:05:12 2016 -0700
----------------------------------------------------------------------
.../coprocessor/generated/PTableProtos.java | 779 +++++++------------
.../org/apache/phoenix/schema/PTableImpl.java | 13 +-
phoenix-protocol/src/main/PTable.proto | 2 +
3 files changed, 284 insertions(+), 510 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/16f0da3d/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
index 4171680..b8b8b2f 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
@@ -3140,38 +3140,27 @@ public final class PTableProtos {
*/
boolean getIsImmutableRows();
- // repeated .PTableStats guidePosts = 12;
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>
- getGuidePostsList();
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats getGuidePosts(int index);
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- int getGuidePostsCount();
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- java.util.List<? extends org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder>
- getGuidePostsOrBuilderList();
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder getGuidePostsOrBuilder(
- int index);
-
// optional bytes dataTableNameBytes = 13;
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
boolean hasDataTableNameBytes();
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
com.google.protobuf.ByteString getDataTableNameBytes();
@@ -3373,6 +3362,16 @@ public final class PTableProtos {
* <code>optional bool isAppendOnlySchema = 32;</code>
*/
boolean getIsAppendOnlySchema();
+
+ // optional bytes parentNameBytes = 33;
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ boolean hasParentNameBytes();
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ com.google.protobuf.ByteString getParentNameBytes();
}
/**
* Protobuf type {@code PTable}
@@ -3492,14 +3491,6 @@ public final class PTableProtos {
isImmutableRows_ = input.readBool();
break;
}
- case 98: {
- if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
- guidePosts_ = new java.util.ArrayList<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>();
- mutable_bitField0_ |= 0x00000800;
- }
- guidePosts_.add(input.readMessage(org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.PARSER, extensionRegistry));
- break;
- }
case 106: {
bitField0_ |= 0x00000200;
dataTableNameBytes_ = input.readBytes();
@@ -3531,9 +3522,9 @@ public final class PTableProtos {
break;
}
case 154: {
- if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+ if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
physicalNames_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
- mutable_bitField0_ |= 0x00040000;
+ mutable_bitField0_ |= 0x00020000;
}
physicalNames_.add(input.readBytes());
break;
@@ -3603,6 +3594,11 @@ public final class PTableProtos {
isAppendOnlySchema_ = input.readBool();
break;
}
+ case 266: {
+ bitField0_ |= 0x10000000;
+ parentNameBytes_ = input.readBytes();
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -3617,10 +3613,7 @@ public final class PTableProtos {
if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
indexes_ = java.util.Collections.unmodifiableList(indexes_);
}
- if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
- guidePosts_ = java.util.Collections.unmodifiableList(guidePosts_);
- }
- if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+ if (((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
physicalNames_ = java.util.Collections.unmodifiableList(physicalNames_);
}
this.unknownFields = unknownFields.build();
@@ -3898,53 +3891,31 @@ public final class PTableProtos {
return isImmutableRows_;
}
- // repeated .PTableStats guidePosts = 12;
- public static final int GUIDEPOSTS_FIELD_NUMBER = 12;
- private java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats> guidePosts_;
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats> getGuidePostsList() {
- return guidePosts_;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public java.util.List<? extends org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder>
- getGuidePostsOrBuilderList() {
- return guidePosts_;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public int getGuidePostsCount() {
- return guidePosts_.size();
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats getGuidePosts(int index) {
- return guidePosts_.get(index);
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder getGuidePostsOrBuilder(
- int index) {
- return guidePosts_.get(index);
- }
-
// optional bytes dataTableNameBytes = 13;
public static final int DATATABLENAMEBYTES_FIELD_NUMBER = 13;
private com.google.protobuf.ByteString dataTableNameBytes_;
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
public boolean hasDataTableNameBytes() {
return ((bitField0_ & 0x00000200) == 0x00000200);
}
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
public com.google.protobuf.ByteString getDataTableNameBytes() {
return dataTableNameBytes_;
@@ -4288,6 +4259,22 @@ public final class PTableProtos {
return isAppendOnlySchema_;
}
+ // optional bytes parentNameBytes = 33;
+ public static final int PARENTNAMEBYTES_FIELD_NUMBER = 33;
+ private com.google.protobuf.ByteString parentNameBytes_;
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ public boolean hasParentNameBytes() {
+ return ((bitField0_ & 0x10000000) == 0x10000000);
+ }
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ public com.google.protobuf.ByteString getParentNameBytes() {
+ return parentNameBytes_;
+ }
+
private void initFields() {
schemaNameBytes_ = com.google.protobuf.ByteString.EMPTY;
tableNameBytes_ = com.google.protobuf.ByteString.EMPTY;
@@ -4300,7 +4287,6 @@ public final class PTableProtos {
columns_ = java.util.Collections.emptyList();
indexes_ = java.util.Collections.emptyList();
isImmutableRows_ = false;
- guidePosts_ = java.util.Collections.emptyList();
dataTableNameBytes_ = com.google.protobuf.ByteString.EMPTY;
defaultFamilyName_ = com.google.protobuf.ByteString.EMPTY;
disableWAL_ = false;
@@ -4321,6 +4307,7 @@ public final class PTableProtos {
isNamespaceMapped_ = false;
autoParititonSeqName_ = "";
isAppendOnlySchema_ = false;
+ parentNameBytes_ = com.google.protobuf.ByteString.EMPTY;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -4375,12 +4362,6 @@ public final class PTableProtos {
return false;
}
}
- for (int i = 0; i < getGuidePostsCount(); i++) {
- if (!getGuidePosts(i).isInitialized()) {
- memoizedIsInitialized = 0;
- return false;
- }
- }
memoizedIsInitialized = 1;
return true;
}
@@ -4421,9 +4402,6 @@ public final class PTableProtos {
if (((bitField0_ & 0x00000100) == 0x00000100)) {
output.writeBool(11, isImmutableRows_);
}
- for (int i = 0; i < guidePosts_.size(); i++) {
- output.writeMessage(12, guidePosts_.get(i));
- }
if (((bitField0_ & 0x00000200) == 0x00000200)) {
output.writeBytes(13, dataTableNameBytes_);
}
@@ -4484,6 +4462,9 @@ public final class PTableProtos {
if (((bitField0_ & 0x08000000) == 0x08000000)) {
output.writeBool(32, isAppendOnlySchema_);
}
+ if (((bitField0_ & 0x10000000) == 0x10000000)) {
+ output.writeBytes(33, parentNameBytes_);
+ }
getUnknownFields().writeTo(output);
}
@@ -4537,10 +4518,6 @@ public final class PTableProtos {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(11, isImmutableRows_);
}
- for (int i = 0; i < guidePosts_.size(); i++) {
- size += com.google.protobuf.CodedOutputStream
- .computeMessageSize(12, guidePosts_.get(i));
- }
if (((bitField0_ & 0x00000200) == 0x00000200)) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(13, dataTableNameBytes_);
@@ -4626,6 +4603,10 @@ public final class PTableProtos {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(32, isAppendOnlySchema_);
}
+ if (((bitField0_ & 0x10000000) == 0x10000000)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(33, parentNameBytes_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -4698,8 +4679,6 @@ public final class PTableProtos {
result = result && (getIsImmutableRows()
== other.getIsImmutableRows());
}
- result = result && getGuidePostsList()
- .equals(other.getGuidePostsList());
result = result && (hasDataTableNameBytes() == other.hasDataTableNameBytes());
if (hasDataTableNameBytes()) {
result = result && getDataTableNameBytes()
@@ -4797,6 +4776,11 @@ public final class PTableProtos {
result = result && (getIsAppendOnlySchema()
== other.getIsAppendOnlySchema());
}
+ result = result && (hasParentNameBytes() == other.hasParentNameBytes());
+ if (hasParentNameBytes()) {
+ result = result && getParentNameBytes()
+ .equals(other.getParentNameBytes());
+ }
result = result &&
getUnknownFields().equals(other.getUnknownFields());
return result;
@@ -4854,10 +4838,6 @@ public final class PTableProtos {
hash = (37 * hash) + ISIMMUTABLEROWS_FIELD_NUMBER;
hash = (53 * hash) + hashBoolean(getIsImmutableRows());
}
- if (getGuidePostsCount() > 0) {
- hash = (37 * hash) + GUIDEPOSTS_FIELD_NUMBER;
- hash = (53 * hash) + getGuidePostsList().hashCode();
- }
if (hasDataTableNameBytes()) {
hash = (37 * hash) + DATATABLENAMEBYTES_FIELD_NUMBER;
hash = (53 * hash) + getDataTableNameBytes().hashCode();
@@ -4938,6 +4918,10 @@ public final class PTableProtos {
hash = (37 * hash) + ISAPPENDONLYSCHEMA_FIELD_NUMBER;
hash = (53 * hash) + hashBoolean(getIsAppendOnlySchema());
}
+ if (hasParentNameBytes()) {
+ hash = (37 * hash) + PARENTNAMEBYTES_FIELD_NUMBER;
+ hash = (53 * hash) + getParentNameBytes().hashCode();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -5041,7 +5025,6 @@ public final class PTableProtos {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
getColumnsFieldBuilder();
getIndexesFieldBuilder();
- getGuidePostsFieldBuilder();
}
}
private static Builder create() {
@@ -5080,51 +5063,47 @@ public final class PTableProtos {
}
isImmutableRows_ = false;
bitField0_ = (bitField0_ & ~0x00000400);
- if (guidePostsBuilder_ == null) {
- guidePosts_ = java.util.Collections.emptyList();
- bitField0_ = (bitField0_ & ~0x00000800);
- } else {
- guidePostsBuilder_.clear();
- }
dataTableNameBytes_ = com.google.protobuf.ByteString.EMPTY;
- bitField0_ = (bitField0_ & ~0x00001000);
+ bitField0_ = (bitField0_ & ~0x00000800);
defaultFamilyName_ = com.google.protobuf.ByteString.EMPTY;
- bitField0_ = (bitField0_ & ~0x00002000);
+ bitField0_ = (bitField0_ & ~0x00001000);
disableWAL_ = false;
- bitField0_ = (bitField0_ & ~0x00004000);
+ bitField0_ = (bitField0_ & ~0x00002000);
multiTenant_ = false;
- bitField0_ = (bitField0_ & ~0x00008000);
+ bitField0_ = (bitField0_ & ~0x00004000);
viewType_ = com.google.protobuf.ByteString.EMPTY;
- bitField0_ = (bitField0_ & ~0x00010000);
+ bitField0_ = (bitField0_ & ~0x00008000);
viewStatement_ = com.google.protobuf.ByteString.EMPTY;
- bitField0_ = (bitField0_ & ~0x00020000);
+ bitField0_ = (bitField0_ & ~0x00010000);
physicalNames_ = java.util.Collections.emptyList();
- bitField0_ = (bitField0_ & ~0x00040000);
+ bitField0_ = (bitField0_ & ~0x00020000);
tenantId_ = com.google.protobuf.ByteString.EMPTY;
- bitField0_ = (bitField0_ & ~0x00080000);
+ bitField0_ = (bitField0_ & ~0x00040000);
viewIndexId_ = 0;
- bitField0_ = (bitField0_ & ~0x00100000);
+ bitField0_ = (bitField0_ & ~0x00080000);
indexType_ = com.google.protobuf.ByteString.EMPTY;
- bitField0_ = (bitField0_ & ~0x00200000);
+ bitField0_ = (bitField0_ & ~0x00100000);
statsTimeStamp_ = 0L;
- bitField0_ = (bitField0_ & ~0x00400000);
+ bitField0_ = (bitField0_ & ~0x00200000);
storeNulls_ = false;
- bitField0_ = (bitField0_ & ~0x00800000);
+ bitField0_ = (bitField0_ & ~0x00400000);
baseColumnCount_ = 0;
- bitField0_ = (bitField0_ & ~0x01000000);
+ bitField0_ = (bitField0_ & ~0x00800000);
rowKeyOrderOptimizable_ = false;
- bitField0_ = (bitField0_ & ~0x02000000);
+ bitField0_ = (bitField0_ & ~0x01000000);
transactional_ = false;
- bitField0_ = (bitField0_ & ~0x04000000);
+ bitField0_ = (bitField0_ & ~0x02000000);
updateCacheFrequency_ = 0L;
- bitField0_ = (bitField0_ & ~0x08000000);
+ bitField0_ = (bitField0_ & ~0x04000000);
indexDisableTimestamp_ = 0L;
- bitField0_ = (bitField0_ & ~0x10000000);
+ bitField0_ = (bitField0_ & ~0x08000000);
isNamespaceMapped_ = false;
- bitField0_ = (bitField0_ & ~0x20000000);
+ bitField0_ = (bitField0_ & ~0x10000000);
autoParititonSeqName_ = "";
- bitField0_ = (bitField0_ & ~0x40000000);
+ bitField0_ = (bitField0_ & ~0x20000000);
isAppendOnlySchema_ = false;
+ bitField0_ = (bitField0_ & ~0x40000000);
+ parentNameBytes_ = com.google.protobuf.ByteString.EMPTY;
bitField0_ = (bitField0_ & ~0x80000000);
return this;
}
@@ -5208,96 +5187,91 @@ public final class PTableProtos {
to_bitField0_ |= 0x00000100;
}
result.isImmutableRows_ = isImmutableRows_;
- if (guidePostsBuilder_ == null) {
- if (((bitField0_ & 0x00000800) == 0x00000800)) {
- guidePosts_ = java.util.Collections.unmodifiableList(guidePosts_);
- bitField0_ = (bitField0_ & ~0x00000800);
- }
- result.guidePosts_ = guidePosts_;
- } else {
- result.guidePosts_ = guidePostsBuilder_.build();
- }
- if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+ if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
to_bitField0_ |= 0x00000200;
}
result.dataTableNameBytes_ = dataTableNameBytes_;
- if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+ if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
to_bitField0_ |= 0x00000400;
}
result.defaultFamilyName_ = defaultFamilyName_;
- if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+ if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
to_bitField0_ |= 0x00000800;
}
result.disableWAL_ = disableWAL_;
- if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+ if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
to_bitField0_ |= 0x00001000;
}
result.multiTenant_ = multiTenant_;
- if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+ if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
to_bitField0_ |= 0x00002000;
}
result.viewType_ = viewType_;
- if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+ if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
to_bitField0_ |= 0x00004000;
}
result.viewStatement_ = viewStatement_;
- if (((bitField0_ & 0x00040000) == 0x00040000)) {
+ if (((bitField0_ & 0x00020000) == 0x00020000)) {
physicalNames_ = java.util.Collections.unmodifiableList(physicalNames_);
- bitField0_ = (bitField0_ & ~0x00040000);
+ bitField0_ = (bitField0_ & ~0x00020000);
}
result.physicalNames_ = physicalNames_;
- if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+ if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
to_bitField0_ |= 0x00008000;
}
result.tenantId_ = tenantId_;
- if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+ if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
to_bitField0_ |= 0x00010000;
}
result.viewIndexId_ = viewIndexId_;
- if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+ if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
to_bitField0_ |= 0x00020000;
}
result.indexType_ = indexType_;
- if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+ if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
to_bitField0_ |= 0x00040000;
}
result.statsTimeStamp_ = statsTimeStamp_;
- if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+ if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
to_bitField0_ |= 0x00080000;
}
result.storeNulls_ = storeNulls_;
- if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+ if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
to_bitField0_ |= 0x00100000;
}
result.baseColumnCount_ = baseColumnCount_;
- if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
+ if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
to_bitField0_ |= 0x00200000;
}
result.rowKeyOrderOptimizable_ = rowKeyOrderOptimizable_;
- if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+ if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
to_bitField0_ |= 0x00400000;
}
result.transactional_ = transactional_;
- if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
+ if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
to_bitField0_ |= 0x00800000;
}
result.updateCacheFrequency_ = updateCacheFrequency_;
- if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
+ if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
to_bitField0_ |= 0x01000000;
}
result.indexDisableTimestamp_ = indexDisableTimestamp_;
- if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
+ if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
to_bitField0_ |= 0x02000000;
}
result.isNamespaceMapped_ = isNamespaceMapped_;
- if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
+ if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
to_bitField0_ |= 0x04000000;
}
result.autoParititonSeqName_ = autoParititonSeqName_;
- if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+ if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
to_bitField0_ |= 0x08000000;
}
result.isAppendOnlySchema_ = isAppendOnlySchema_;
+ if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+ to_bitField0_ |= 0x10000000;
+ }
+ result.parentNameBytes_ = parentNameBytes_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -5395,32 +5369,6 @@ public final class PTableProtos {
if (other.hasIsImmutableRows()) {
setIsImmutableRows(other.getIsImmutableRows());
}
- if (guidePostsBuilder_ == null) {
- if (!other.guidePosts_.isEmpty()) {
- if (guidePosts_.isEmpty()) {
- guidePosts_ = other.guidePosts_;
- bitField0_ = (bitField0_ & ~0x00000800);
- } else {
- ensureGuidePostsIsMutable();
- guidePosts_.addAll(other.guidePosts_);
- }
- onChanged();
- }
- } else {
- if (!other.guidePosts_.isEmpty()) {
- if (guidePostsBuilder_.isEmpty()) {
- guidePostsBuilder_.dispose();
- guidePostsBuilder_ = null;
- guidePosts_ = other.guidePosts_;
- bitField0_ = (bitField0_ & ~0x00000800);
- guidePostsBuilder_ =
- com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
- getGuidePostsFieldBuilder() : null;
- } else {
- guidePostsBuilder_.addAllMessages(other.guidePosts_);
- }
- }
- }
if (other.hasDataTableNameBytes()) {
setDataTableNameBytes(other.getDataTableNameBytes());
}
@@ -5442,7 +5390,7 @@ public final class PTableProtos {
if (!other.physicalNames_.isEmpty()) {
if (physicalNames_.isEmpty()) {
physicalNames_ = other.physicalNames_;
- bitField0_ = (bitField0_ & ~0x00040000);
+ bitField0_ = (bitField0_ & ~0x00020000);
} else {
ensurePhysicalNamesIsMutable();
physicalNames_.addAll(other.physicalNames_);
@@ -5483,13 +5431,16 @@ public final class PTableProtos {
setIsNamespaceMapped(other.getIsNamespaceMapped());
}
if (other.hasAutoParititonSeqName()) {
- bitField0_ |= 0x40000000;
+ bitField0_ |= 0x20000000;
autoParititonSeqName_ = other.autoParititonSeqName_;
onChanged();
}
if (other.hasIsAppendOnlySchema()) {
setIsAppendOnlySchema(other.getIsAppendOnlySchema());
}
+ if (other.hasParentNameBytes()) {
+ setParentNameBytes(other.getParentNameBytes());
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -5543,12 +5494,6 @@ public final class PTableProtos {
return false;
}
}
- for (int i = 0; i < getGuidePostsCount(); i++) {
- if (!getGuidePosts(i).isInitialized()) {
-
- return false;
- }
- }
return true;
}
@@ -6401,277 +6346,65 @@ public final class PTableProtos {
return this;
}
- // repeated .PTableStats guidePosts = 12;
- private java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats> guidePosts_ =
- java.util.Collections.emptyList();
- private void ensureGuidePostsIsMutable() {
- if (!((bitField0_ & 0x00000800) == 0x00000800)) {
- guidePosts_ = new java.util.ArrayList<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>(guidePosts_);
- bitField0_ |= 0x00000800;
- }
- }
-
- private com.google.protobuf.RepeatedFieldBuilder<
- org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder> guidePostsBuilder_;
-
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats> getGuidePostsList() {
- if (guidePostsBuilder_ == null) {
- return java.util.Collections.unmodifiableList(guidePosts_);
- } else {
- return guidePostsBuilder_.getMessageList();
- }
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public int getGuidePostsCount() {
- if (guidePostsBuilder_ == null) {
- return guidePosts_.size();
- } else {
- return guidePostsBuilder_.getCount();
- }
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats getGuidePosts(int index) {
- if (guidePostsBuilder_ == null) {
- return guidePosts_.get(index);
- } else {
- return guidePostsBuilder_.getMessage(index);
- }
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder setGuidePosts(
- int index, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats value) {
- if (guidePostsBuilder_ == null) {
- if (value == null) {
- throw new NullPointerException();
- }
- ensureGuidePostsIsMutable();
- guidePosts_.set(index, value);
- onChanged();
- } else {
- guidePostsBuilder_.setMessage(index, value);
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder setGuidePosts(
- int index, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder builderForValue) {
- if (guidePostsBuilder_ == null) {
- ensureGuidePostsIsMutable();
- guidePosts_.set(index, builderForValue.build());
- onChanged();
- } else {
- guidePostsBuilder_.setMessage(index, builderForValue.build());
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder addGuidePosts(org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats value) {
- if (guidePostsBuilder_ == null) {
- if (value == null) {
- throw new NullPointerException();
- }
- ensureGuidePostsIsMutable();
- guidePosts_.add(value);
- onChanged();
- } else {
- guidePostsBuilder_.addMessage(value);
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder addGuidePosts(
- int index, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats value) {
- if (guidePostsBuilder_ == null) {
- if (value == null) {
- throw new NullPointerException();
- }
- ensureGuidePostsIsMutable();
- guidePosts_.add(index, value);
- onChanged();
- } else {
- guidePostsBuilder_.addMessage(index, value);
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder addGuidePosts(
- org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder builderForValue) {
- if (guidePostsBuilder_ == null) {
- ensureGuidePostsIsMutable();
- guidePosts_.add(builderForValue.build());
- onChanged();
- } else {
- guidePostsBuilder_.addMessage(builderForValue.build());
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder addGuidePosts(
- int index, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder builderForValue) {
- if (guidePostsBuilder_ == null) {
- ensureGuidePostsIsMutable();
- guidePosts_.add(index, builderForValue.build());
- onChanged();
- } else {
- guidePostsBuilder_.addMessage(index, builderForValue.build());
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder addAllGuidePosts(
- java.lang.Iterable<? extends org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats> values) {
- if (guidePostsBuilder_ == null) {
- ensureGuidePostsIsMutable();
- super.addAll(values, guidePosts_);
- onChanged();
- } else {
- guidePostsBuilder_.addAllMessages(values);
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder clearGuidePosts() {
- if (guidePostsBuilder_ == null) {
- guidePosts_ = java.util.Collections.emptyList();
- bitField0_ = (bitField0_ & ~0x00000800);
- onChanged();
- } else {
- guidePostsBuilder_.clear();
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public Builder removeGuidePosts(int index) {
- if (guidePostsBuilder_ == null) {
- ensureGuidePostsIsMutable();
- guidePosts_.remove(index);
- onChanged();
- } else {
- guidePostsBuilder_.remove(index);
- }
- return this;
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder getGuidePostsBuilder(
- int index) {
- return getGuidePostsFieldBuilder().getBuilder(index);
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder getGuidePostsOrBuilder(
- int index) {
- if (guidePostsBuilder_ == null) {
- return guidePosts_.get(index); } else {
- return guidePostsBuilder_.getMessageOrBuilder(index);
- }
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public java.util.List<? extends org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder>
- getGuidePostsOrBuilderList() {
- if (guidePostsBuilder_ != null) {
- return guidePostsBuilder_.getMessageOrBuilderList();
- } else {
- return java.util.Collections.unmodifiableList(guidePosts_);
- }
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder addGuidePostsBuilder() {
- return getGuidePostsFieldBuilder().addBuilder(
- org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.getDefaultInstance());
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder addGuidePostsBuilder(
- int index) {
- return getGuidePostsFieldBuilder().addBuilder(
- index, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.getDefaultInstance());
- }
- /**
- * <code>repeated .PTableStats guidePosts = 12;</code>
- */
- public java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder>
- getGuidePostsBuilderList() {
- return getGuidePostsFieldBuilder().getBuilderList();
- }
- private com.google.protobuf.RepeatedFieldBuilder<
- org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder>
- getGuidePostsFieldBuilder() {
- if (guidePostsBuilder_ == null) {
- guidePostsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
- org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder, org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder>(
- guidePosts_,
- ((bitField0_ & 0x00000800) == 0x00000800),
- getParentForChildren(),
- isClean());
- guidePosts_ = null;
- }
- return guidePostsBuilder_;
- }
-
// optional bytes dataTableNameBytes = 13;
private com.google.protobuf.ByteString dataTableNameBytes_ = com.google.protobuf.ByteString.EMPTY;
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
public boolean hasDataTableNameBytes() {
- return ((bitField0_ & 0x00001000) == 0x00001000);
+ return ((bitField0_ & 0x00000800) == 0x00000800);
}
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
public com.google.protobuf.ByteString getDataTableNameBytes() {
return dataTableNameBytes_;
}
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
public Builder setDataTableNameBytes(com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00001000;
+ bitField0_ |= 0x00000800;
dataTableNameBytes_ = value;
onChanged();
return this;
}
/**
* <code>optional bytes dataTableNameBytes = 13;</code>
+ *
+ * <pre>
+ * Do NOT reuse the tag '12'. Stats are no longer passed
+ * along with the PTable.
+ *repeated PTableStats guidePosts = 12;
+ * TODO remove this field in 5.0 release
+ * </pre>
*/
public Builder clearDataTableNameBytes() {
- bitField0_ = (bitField0_ & ~0x00001000);
+ bitField0_ = (bitField0_ & ~0x00000800);
dataTableNameBytes_ = getDefaultInstance().getDataTableNameBytes();
onChanged();
return this;
@@ -6683,7 +6416,7 @@ public final class PTableProtos {
* <code>optional bytes defaultFamilyName = 14;</code>
*/
public boolean hasDefaultFamilyName() {
- return ((bitField0_ & 0x00002000) == 0x00002000);
+ return ((bitField0_ & 0x00001000) == 0x00001000);
}
/**
* <code>optional bytes defaultFamilyName = 14;</code>
@@ -6698,7 +6431,7 @@ public final class PTableProtos {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00002000;
+ bitField0_ |= 0x00001000;
defaultFamilyName_ = value;
onChanged();
return this;
@@ -6707,7 +6440,7 @@ public final class PTableProtos {
* <code>optional bytes defaultFamilyName = 14;</code>
*/
public Builder clearDefaultFamilyName() {
- bitField0_ = (bitField0_ & ~0x00002000);
+ bitField0_ = (bitField0_ & ~0x00001000);
defaultFamilyName_ = getDefaultInstance().getDefaultFamilyName();
onChanged();
return this;
@@ -6719,7 +6452,7 @@ public final class PTableProtos {
* <code>required bool disableWAL = 15;</code>
*/
public boolean hasDisableWAL() {
- return ((bitField0_ & 0x00004000) == 0x00004000);
+ return ((bitField0_ & 0x00002000) == 0x00002000);
}
/**
* <code>required bool disableWAL = 15;</code>
@@ -6731,7 +6464,7 @@ public final class PTableProtos {
* <code>required bool disableWAL = 15;</code>
*/
public Builder setDisableWAL(boolean value) {
- bitField0_ |= 0x00004000;
+ bitField0_ |= 0x00002000;
disableWAL_ = value;
onChanged();
return this;
@@ -6740,7 +6473,7 @@ public final class PTableProtos {
* <code>required bool disableWAL = 15;</code>
*/
public Builder clearDisableWAL() {
- bitField0_ = (bitField0_ & ~0x00004000);
+ bitField0_ = (bitField0_ & ~0x00002000);
disableWAL_ = false;
onChanged();
return this;
@@ -6752,7 +6485,7 @@ public final class PTableProtos {
* <code>required bool multiTenant = 16;</code>
*/
public boolean hasMultiTenant() {
- return ((bitField0_ & 0x00008000) == 0x00008000);
+ return ((bitField0_ & 0x00004000) == 0x00004000);
}
/**
* <code>required bool multiTenant = 16;</code>
@@ -6764,7 +6497,7 @@ public final class PTableProtos {
* <code>required bool multiTenant = 16;</code>
*/
public Builder setMultiTenant(boolean value) {
- bitField0_ |= 0x00008000;
+ bitField0_ |= 0x00004000;
multiTenant_ = value;
onChanged();
return this;
@@ -6773,7 +6506,7 @@ public final class PTableProtos {
* <code>required bool multiTenant = 16;</code>
*/
public Builder clearMultiTenant() {
- bitField0_ = (bitField0_ & ~0x00008000);
+ bitField0_ = (bitField0_ & ~0x00004000);
multiTenant_ = false;
onChanged();
return this;
@@ -6785,7 +6518,7 @@ public final class PTableProtos {
* <code>optional bytes viewType = 17;</code>
*/
public boolean hasViewType() {
- return ((bitField0_ & 0x00010000) == 0x00010000);
+ return ((bitField0_ & 0x00008000) == 0x00008000);
}
/**
* <code>optional bytes viewType = 17;</code>
@@ -6800,7 +6533,7 @@ public final class PTableProtos {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00010000;
+ bitField0_ |= 0x00008000;
viewType_ = value;
onChanged();
return this;
@@ -6809,7 +6542,7 @@ public final class PTableProtos {
* <code>optional bytes viewType = 17;</code>
*/
public Builder clearViewType() {
- bitField0_ = (bitField0_ & ~0x00010000);
+ bitField0_ = (bitField0_ & ~0x00008000);
viewType_ = getDefaultInstance().getViewType();
onChanged();
return this;
@@ -6821,7 +6554,7 @@ public final class PTableProtos {
* <code>optional bytes viewStatement = 18;</code>
*/
public boolean hasViewStatement() {
- return ((bitField0_ & 0x00020000) == 0x00020000);
+ return ((bitField0_ & 0x00010000) == 0x00010000);
}
/**
* <code>optional bytes viewStatement = 18;</code>
@@ -6836,7 +6569,7 @@ public final class PTableProtos {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00020000;
+ bitField0_ |= 0x00010000;
viewStatement_ = value;
onChanged();
return this;
@@ -6845,7 +6578,7 @@ public final class PTableProtos {
* <code>optional bytes viewStatement = 18;</code>
*/
public Builder clearViewStatement() {
- bitField0_ = (bitField0_ & ~0x00020000);
+ bitField0_ = (bitField0_ & ~0x00010000);
viewStatement_ = getDefaultInstance().getViewStatement();
onChanged();
return this;
@@ -6854,9 +6587,9 @@ public final class PTableProtos {
// repeated bytes physicalNames = 19;
private java.util.List<com.google.protobuf.ByteString> physicalNames_ = java.util.Collections.emptyList();
private void ensurePhysicalNamesIsMutable() {
- if (!((bitField0_ & 0x00040000) == 0x00040000)) {
+ if (!((bitField0_ & 0x00020000) == 0x00020000)) {
physicalNames_ = new java.util.ArrayList<com.google.protobuf.ByteString>(physicalNames_);
- bitField0_ |= 0x00040000;
+ bitField0_ |= 0x00020000;
}
}
/**
@@ -6918,7 +6651,7 @@ public final class PTableProtos {
*/
public Builder clearPhysicalNames() {
physicalNames_ = java.util.Collections.emptyList();
- bitField0_ = (bitField0_ & ~0x00040000);
+ bitField0_ = (bitField0_ & ~0x00020000);
onChanged();
return this;
}
@@ -6929,7 +6662,7 @@ public final class PTableProtos {
* <code>optional bytes tenantId = 20;</code>
*/
public boolean hasTenantId() {
- return ((bitField0_ & 0x00080000) == 0x00080000);
+ return ((bitField0_ & 0x00040000) == 0x00040000);
}
/**
* <code>optional bytes tenantId = 20;</code>
@@ -6944,7 +6677,7 @@ public final class PTableProtos {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00080000;
+ bitField0_ |= 0x00040000;
tenantId_ = value;
onChanged();
return this;
@@ -6953,7 +6686,7 @@ public final class PTableProtos {
* <code>optional bytes tenantId = 20;</code>
*/
public Builder clearTenantId() {
- bitField0_ = (bitField0_ & ~0x00080000);
+ bitField0_ = (bitField0_ & ~0x00040000);
tenantId_ = getDefaultInstance().getTenantId();
onChanged();
return this;
@@ -6965,7 +6698,7 @@ public final class PTableProtos {
* <code>optional int32 viewIndexId = 21;</code>
*/
public boolean hasViewIndexId() {
- return ((bitField0_ & 0x00100000) == 0x00100000);
+ return ((bitField0_ & 0x00080000) == 0x00080000);
}
/**
* <code>optional int32 viewIndexId = 21;</code>
@@ -6977,7 +6710,7 @@ public final class PTableProtos {
* <code>optional int32 viewIndexId = 21;</code>
*/
public Builder setViewIndexId(int value) {
- bitField0_ |= 0x00100000;
+ bitField0_ |= 0x00080000;
viewIndexId_ = value;
onChanged();
return this;
@@ -6986,7 +6719,7 @@ public final class PTableProtos {
* <code>optional int32 viewIndexId = 21;</code>
*/
public Builder clearViewIndexId() {
- bitField0_ = (bitField0_ & ~0x00100000);
+ bitField0_ = (bitField0_ & ~0x00080000);
viewIndexId_ = 0;
onChanged();
return this;
@@ -6998,7 +6731,7 @@ public final class PTableProtos {
* <code>optional bytes indexType = 22;</code>
*/
public boolean hasIndexType() {
- return ((bitField0_ & 0x00200000) == 0x00200000);
+ return ((bitField0_ & 0x00100000) == 0x00100000);
}
/**
* <code>optional bytes indexType = 22;</code>
@@ -7013,7 +6746,7 @@ public final class PTableProtos {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00200000;
+ bitField0_ |= 0x00100000;
indexType_ = value;
onChanged();
return this;
@@ -7022,7 +6755,7 @@ public final class PTableProtos {
* <code>optional bytes indexType = 22;</code>
*/
public Builder clearIndexType() {
- bitField0_ = (bitField0_ & ~0x00200000);
+ bitField0_ = (bitField0_ & ~0x00100000);
indexType_ = getDefaultInstance().getIndexType();
onChanged();
return this;
@@ -7034,7 +6767,7 @@ public final class PTableProtos {
* <code>optional int64 statsTimeStamp = 23;</code>
*/
public boolean hasStatsTimeStamp() {
- return ((bitField0_ & 0x00400000) == 0x00400000);
+ return ((bitField0_ & 0x00200000) == 0x00200000);
}
/**
* <code>optional int64 statsTimeStamp = 23;</code>
@@ -7046,7 +6779,7 @@ public final class PTableProtos {
* <code>optional int64 statsTimeStamp = 23;</code>
*/
public Builder setStatsTimeStamp(long value) {
- bitField0_ |= 0x00400000;
+ bitField0_ |= 0x00200000;
statsTimeStamp_ = value;
onChanged();
return this;
@@ -7055,7 +6788,7 @@ public final class PTableProtos {
* <code>optional int64 statsTimeStamp = 23;</code>
*/
public Builder clearStatsTimeStamp() {
- bitField0_ = (bitField0_ & ~0x00400000);
+ bitField0_ = (bitField0_ & ~0x00200000);
statsTimeStamp_ = 0L;
onChanged();
return this;
@@ -7067,7 +6800,7 @@ public final class PTableProtos {
* <code>optional bool storeNulls = 24;</code>
*/
public boolean hasStoreNulls() {
- return ((bitField0_ & 0x00800000) == 0x00800000);
+ return ((bitField0_ & 0x00400000) == 0x00400000);
}
/**
* <code>optional bool storeNulls = 24;</code>
@@ -7079,7 +6812,7 @@ public final class PTableProtos {
* <code>optional bool storeNulls = 24;</code>
*/
public Builder setStoreNulls(boolean value) {
- bitField0_ |= 0x00800000;
+ bitField0_ |= 0x00400000;
storeNulls_ = value;
onChanged();
return this;
@@ -7088,7 +6821,7 @@ public final class PTableProtos {
* <code>optional bool storeNulls = 24;</code>
*/
public Builder clearStoreNulls() {
- bitField0_ = (bitField0_ & ~0x00800000);
+ bitField0_ = (bitField0_ & ~0x00400000);
storeNulls_ = false;
onChanged();
return this;
@@ -7100,7 +6833,7 @@ public final class PTableProtos {
* <code>optional int32 baseColumnCount = 25;</code>
*/
public boolean hasBaseColumnCount() {
- return ((bitField0_ & 0x01000000) == 0x01000000);
+ return ((bitField0_ & 0x00800000) == 0x00800000);
}
/**
* <code>optional int32 baseColumnCount = 25;</code>
@@ -7112,7 +6845,7 @@ public final class PTableProtos {
* <code>optional int32 baseColumnCount = 25;</code>
*/
public Builder setBaseColumnCount(int value) {
- bitField0_ |= 0x01000000;
+ bitField0_ |= 0x00800000;
baseColumnCount_ = value;
onChanged();
return this;
@@ -7121,7 +6854,7 @@ public final class PTableProtos {
* <code>optional int32 baseColumnCount = 25;</code>
*/
public Builder clearBaseColumnCount() {
- bitField0_ = (bitField0_ & ~0x01000000);
+ bitField0_ = (bitField0_ & ~0x00800000);
baseColumnCount_ = 0;
onChanged();
return this;
@@ -7133,7 +6866,7 @@ public final class PTableProtos {
* <code>optional bool rowKeyOrderOptimizable = 26;</code>
*/
public boolean hasRowKeyOrderOptimizable() {
- return ((bitField0_ & 0x02000000) == 0x02000000);
+ return ((bitField0_ & 0x01000000) == 0x01000000);
}
/**
* <code>optional bool rowKeyOrderOptimizable = 26;</code>
@@ -7145,7 +6878,7 @@ public final class PTableProtos {
* <code>optional bool rowKeyOrderOptimizable = 26;</code>
*/
public Builder setRowKeyOrderOptimizable(boolean value) {
- bitField0_ |= 0x02000000;
+ bitField0_ |= 0x01000000;
rowKeyOrderOptimizable_ = value;
onChanged();
return this;
@@ -7154,7 +6887,7 @@ public final class PTableProtos {
* <code>optional bool rowKeyOrderOptimizable = 26;</code>
*/
public Builder clearRowKeyOrderOptimizable() {
- bitField0_ = (bitField0_ & ~0x02000000);
+ bitField0_ = (bitField0_ & ~0x01000000);
rowKeyOrderOptimizable_ = false;
onChanged();
return this;
@@ -7166,7 +6899,7 @@ public final class PTableProtos {
* <code>optional bool transactional = 27;</code>
*/
public boolean hasTransactional() {
- return ((bitField0_ & 0x04000000) == 0x04000000);
+ return ((bitField0_ & 0x02000000) == 0x02000000);
}
/**
* <code>optional bool transactional = 27;</code>
@@ -7178,7 +6911,7 @@ public final class PTableProtos {
* <code>optional bool transactional = 27;</code>
*/
public Builder setTransactional(boolean value) {
- bitField0_ |= 0x04000000;
+ bitField0_ |= 0x02000000;
transactional_ = value;
onChanged();
return this;
@@ -7187,7 +6920,7 @@ public final class PTableProtos {
* <code>optional bool transactional = 27;</code>
*/
public Builder clearTransactional() {
- bitField0_ = (bitField0_ & ~0x04000000);
+ bitField0_ = (bitField0_ & ~0x02000000);
transactional_ = false;
onChanged();
return this;
@@ -7199,7 +6932,7 @@ public final class PTableProtos {
* <code>optional int64 updateCacheFrequency = 28;</code>
*/
public boolean hasUpdateCacheFrequency() {
- return ((bitField0_ & 0x08000000) == 0x08000000);
+ return ((bitField0_ & 0x04000000) == 0x04000000);
}
/**
* <code>optional int64 updateCacheFrequency = 28;</code>
@@ -7211,7 +6944,7 @@ public final class PTableProtos {
* <code>optional int64 updateCacheFrequency = 28;</code>
*/
public Builder setUpdateCacheFrequency(long value) {
- bitField0_ |= 0x08000000;
+ bitField0_ |= 0x04000000;
updateCacheFrequency_ = value;
onChanged();
return this;
@@ -7220,7 +6953,7 @@ public final class PTableProtos {
* <code>optional int64 updateCacheFrequency = 28;</code>
*/
public Builder clearUpdateCacheFrequency() {
- bitField0_ = (bitField0_ & ~0x08000000);
+ bitField0_ = (bitField0_ & ~0x04000000);
updateCacheFrequency_ = 0L;
onChanged();
return this;
@@ -7232,7 +6965,7 @@ public final class PTableProtos {
* <code>optional int64 indexDisableTimestamp = 29;</code>
*/
public boolean hasIndexDisableTimestamp() {
- return ((bitField0_ & 0x10000000) == 0x10000000);
+ return ((bitField0_ & 0x08000000) == 0x08000000);
}
/**
* <code>optional int64 indexDisableTimestamp = 29;</code>
@@ -7244,7 +6977,7 @@ public final class PTableProtos {
* <code>optional int64 indexDisableTimestamp = 29;</code>
*/
public Builder setIndexDisableTimestamp(long value) {
- bitField0_ |= 0x10000000;
+ bitField0_ |= 0x08000000;
indexDisableTimestamp_ = value;
onChanged();
return this;
@@ -7253,7 +6986,7 @@ public final class PTableProtos {
* <code>optional int64 indexDisableTimestamp = 29;</code>
*/
public Builder clearIndexDisableTimestamp() {
- bitField0_ = (bitField0_ & ~0x10000000);
+ bitField0_ = (bitField0_ & ~0x08000000);
indexDisableTimestamp_ = 0L;
onChanged();
return this;
@@ -7265,7 +6998,7 @@ public final class PTableProtos {
* <code>optional bool isNamespaceMapped = 30;</code>
*/
public boolean hasIsNamespaceMapped() {
- return ((bitField0_ & 0x20000000) == 0x20000000);
+ return ((bitField0_ & 0x10000000) == 0x10000000);
}
/**
* <code>optional bool isNamespaceMapped = 30;</code>
@@ -7277,7 +7010,7 @@ public final class PTableProtos {
* <code>optional bool isNamespaceMapped = 30;</code>
*/
public Builder setIsNamespaceMapped(boolean value) {
- bitField0_ |= 0x20000000;
+ bitField0_ |= 0x10000000;
isNamespaceMapped_ = value;
onChanged();
return this;
@@ -7286,7 +7019,7 @@ public final class PTableProtos {
* <code>optional bool isNamespaceMapped = 30;</code>
*/
public Builder clearIsNamespaceMapped() {
- bitField0_ = (bitField0_ & ~0x20000000);
+ bitField0_ = (bitField0_ & ~0x10000000);
isNamespaceMapped_ = false;
onChanged();
return this;
@@ -7298,7 +7031,7 @@ public final class PTableProtos {
* <code>optional string autoParititonSeqName = 31;</code>
*/
public boolean hasAutoParititonSeqName() {
- return ((bitField0_ & 0x40000000) == 0x40000000);
+ return ((bitField0_ & 0x20000000) == 0x20000000);
}
/**
* <code>optional string autoParititonSeqName = 31;</code>
@@ -7338,7 +7071,7 @@ public final class PTableProtos {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x40000000;
+ bitField0_ |= 0x20000000;
autoParititonSeqName_ = value;
onChanged();
return this;
@@ -7347,7 +7080,7 @@ public final class PTableProtos {
* <code>optional string autoParititonSeqName = 31;</code>
*/
public Builder clearAutoParititonSeqName() {
- bitField0_ = (bitField0_ & ~0x40000000);
+ bitField0_ = (bitField0_ & ~0x20000000);
autoParititonSeqName_ = getDefaultInstance().getAutoParititonSeqName();
onChanged();
return this;
@@ -7360,7 +7093,7 @@ public final class PTableProtos {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x40000000;
+ bitField0_ |= 0x20000000;
autoParititonSeqName_ = value;
onChanged();
return this;
@@ -7372,7 +7105,7 @@ public final class PTableProtos {
* <code>optional bool isAppendOnlySchema = 32;</code>
*/
public boolean hasIsAppendOnlySchema() {
- return ((bitField0_ & 0x80000000) == 0x80000000);
+ return ((bitField0_ & 0x40000000) == 0x40000000);
}
/**
* <code>optional bool isAppendOnlySchema = 32;</code>
@@ -7384,7 +7117,7 @@ public final class PTableProtos {
* <code>optional bool isAppendOnlySchema = 32;</code>
*/
public Builder setIsAppendOnlySchema(boolean value) {
- bitField0_ |= 0x80000000;
+ bitField0_ |= 0x40000000;
isAppendOnlySchema_ = value;
onChanged();
return this;
@@ -7393,12 +7126,48 @@ public final class PTableProtos {
* <code>optional bool isAppendOnlySchema = 32;</code>
*/
public Builder clearIsAppendOnlySchema() {
- bitField0_ = (bitField0_ & ~0x80000000);
+ bitField0_ = (bitField0_ & ~0x40000000);
isAppendOnlySchema_ = false;
onChanged();
return this;
}
+ // optional bytes parentNameBytes = 33;
+ private com.google.protobuf.ByteString parentNameBytes_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ public boolean hasParentNameBytes() {
+ return ((bitField0_ & 0x80000000) == 0x80000000);
+ }
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ public com.google.protobuf.ByteString getParentNameBytes() {
+ return parentNameBytes_;
+ }
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ public Builder setParentNameBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x80000000;
+ parentNameBytes_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional bytes parentNameBytes = 33;</code>
+ */
+ public Builder clearParentNameBytes() {
+ bitField0_ = (bitField0_ & ~0x80000000);
+ parentNameBytes_ = getDefaultInstance().getParentNameBytes();
+ onChanged();
+ return this;
+ }
+
// @@protoc_insertion_point(builder_scope:PTable)
}
@@ -7446,30 +7215,30 @@ public final class PTableProtos {
"\016\n\006values\030\002 \003(\014\022\033\n\023guidePostsByteCount\030\003",
" \001(\003\022\025\n\rkeyBytesCount\030\004 \001(\003\022\027\n\017guidePost" +
"sCount\030\005 \001(\005\022!\n\013pGuidePosts\030\006 \001(\0132\014.PGui" +
- "dePosts\"\230\006\n\006PTable\022\027\n\017schemaNameBytes\030\001 " +
+ "dePosts\"\217\006\n\006PTable\022\027\n\017schemaNameBytes\030\001 " +
"\002(\014\022\026\n\016tableNameBytes\030\002 \002(\014\022\036\n\ttableType" +
"\030\003 \002(\0162\013.PTableType\022\022\n\nindexState\030\004 \001(\t\022" +
"\026\n\016sequenceNumber\030\005 \002(\003\022\021\n\ttimeStamp\030\006 \002" +
"(\003\022\023\n\013pkNameBytes\030\007 \001(\014\022\021\n\tbucketNum\030\010 \002" +
"(\005\022\031\n\007columns\030\t \003(\0132\010.PColumn\022\030\n\007indexes" +
"\030\n \003(\0132\007.PTable\022\027\n\017isImmutableRows\030\013 \002(\010" +
- "\022 \n\nguidePosts\030\014 \003(\0132\014.PTableStats\022\032\n\022da",
- "taTableNameBytes\030\r \001(\014\022\031\n\021defaultFamilyN" +
- "ame\030\016 \001(\014\022\022\n\ndisableWAL\030\017 \002(\010\022\023\n\013multiTe" +
- "nant\030\020 \002(\010\022\020\n\010viewType\030\021 \001(\014\022\025\n\rviewStat" +
- "ement\030\022 \001(\014\022\025\n\rphysicalNames\030\023 \003(\014\022\020\n\010te" +
- "nantId\030\024 \001(\014\022\023\n\013viewIndexId\030\025 \001(\005\022\021\n\tind" +
- "exType\030\026 \001(\014\022\026\n\016statsTimeStamp\030\027 \001(\003\022\022\n\n" +
- "storeNulls\030\030 \001(\010\022\027\n\017baseColumnCount\030\031 \001(" +
- "\005\022\036\n\026rowKeyOrderOptimizable\030\032 \001(\010\022\025\n\rtra" +
- "nsactional\030\033 \001(\010\022\034\n\024updateCacheFrequency" +
- "\030\034 \001(\003\022\035\n\025indexDisableTimestamp\030\035 \001(\003\022\031\n",
- "\021isNamespaceMapped\030\036 \001(\010\022\034\n\024autoParitito" +
- "nSeqName\030\037 \001(\t\022\032\n\022isAppendOnlySchema\030 \001" +
- "(\010*A\n\nPTableType\022\n\n\006SYSTEM\020\000\022\010\n\004USER\020\001\022\010" +
- "\n\004VIEW\020\002\022\t\n\005INDEX\020\003\022\010\n\004JOIN\020\004B@\n(org.apa" +
- "che.phoenix.coprocessor.generatedB\014PTabl" +
- "eProtosH\001\210\001\001\240\001\001"
+ "\022\032\n\022dataTableNameBytes\030\r \001(\014\022\031\n\021defaultF",
+ "amilyName\030\016 \001(\014\022\022\n\ndisableWAL\030\017 \002(\010\022\023\n\013m" +
+ "ultiTenant\030\020 \002(\010\022\020\n\010viewType\030\021 \001(\014\022\025\n\rvi" +
+ "ewStatement\030\022 \001(\014\022\025\n\rphysicalNames\030\023 \003(\014" +
+ "\022\020\n\010tenantId\030\024 \001(\014\022\023\n\013viewIndexId\030\025 \001(\005\022" +
+ "\021\n\tindexType\030\026 \001(\014\022\026\n\016statsTimeStamp\030\027 \001" +
+ "(\003\022\022\n\nstoreNulls\030\030 \001(\010\022\027\n\017baseColumnCoun" +
+ "t\030\031 \001(\005\022\036\n\026rowKeyOrderOptimizable\030\032 \001(\010\022" +
+ "\025\n\rtransactional\030\033 \001(\010\022\034\n\024updateCacheFre" +
+ "quency\030\034 \001(\003\022\035\n\025indexDisableTimestamp\030\035 " +
+ "\001(\003\022\031\n\021isNamespaceMapped\030\036 \001(\010\022\034\n\024autoPa",
+ "rititonSeqName\030\037 \001(\t\022\032\n\022isAppendOnlySche" +
+ "ma\030 \001(\010\022\027\n\017parentNameBytes\030! \001(\014*A\n\nPTa" +
+ "bleType\022\n\n\006SYSTEM\020\000\022\010\n\004USER\020\001\022\010\n\004VIEW\020\002\022" +
+ "\t\n\005INDEX\020\003\022\010\n\004JOIN\020\004B@\n(org.apache.phoen" +
+ "ix.coprocessor.generatedB\014PTableProtosH\001" +
+ "\210\001\001\240\001\001"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -7493,7 +7262,7 @@ public final class PTableProtos {
internal_static_PTable_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_PTable_descriptor,
- new java.lang.String[] { "SchemaNameBytes", "TableNameBytes", "TableType", "IndexState", "SequenceNumber", "TimeStamp", "PkNameBytes", "BucketNum", "Columns", "Indexes", "IsImmutableRows", "GuidePosts", "DataTableNameBytes", "DefaultFamilyName", "DisableWAL", "MultiTenant", "ViewType", "ViewStatement", "PhysicalNames", "TenantId", "ViewIndexId", "IndexType", "StatsTimeStamp", "StoreNulls", "BaseColumnCount", "RowKeyOrderOptimizable", "Transactional", "UpdateCacheFrequency", "IndexDisableTimestamp", "IsNamespaceMapped", "AutoParititonSeqName", "IsAppendOnlySchema", });
+ new java.lang.String[] { "SchemaNameBytes", "TableNameBytes", "TableType", "IndexState", "SequenceNumber", "TimeStamp", "PkNameBytes", "BucketNum", "Columns", "Indexes", "IsImmutableRows", "DataTableNameBytes", "DefaultFamilyName", "DisableWAL", "MultiTenant", "ViewType", "ViewStatement", "PhysicalNames", "TenantId", "ViewIndexId", "IndexType", "StatsTimeStamp", "StoreNulls", "BaseColumnCount", "RowKeyOrderOptimizable", "Transactional", "UpdateCacheFrequency", "IndexDisableTimestamp", "IsNamespaceMapped", "AutoParititonSeqName", "IsAppendOnlySchema", "ParentNameBytes", });
return null;
}
};
http://git-wip-us.apache.org/repos/asf/phoenix/blob/16f0da3d/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
index 293d422..7f5efc8 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
@@ -1073,9 +1073,9 @@ public class PTableImpl implements PTable {
boolean isImmutableRows = table.getIsImmutableRows();
PName parentSchemaName = null;
PName parentTableName = null;
- if (table.hasDataTableNameBytes()) {
- parentSchemaName = PNameFactory.newName(SchemaUtil.getSchemaNameFromFullName((table.getDataTableNameBytes().toByteArray())));
- parentTableName = PNameFactory.newName(SchemaUtil.getTableNameFromFullName(table.getDataTableNameBytes().toByteArray()));
+ if (table.hasParentNameBytes()) {
+ parentSchemaName = PNameFactory.newName(SchemaUtil.getSchemaNameFromFullName((table.getParentNameBytes().toByteArray())));
+ parentTableName = PNameFactory.newName(SchemaUtil.getTableNameFromFullName(table.getParentNameBytes().toByteArray()));
}
PName defaultFamilyName = null;
if (table.hasDefaultFamilyName()) {
@@ -1185,9 +1185,12 @@ public class PTableImpl implements PTable {
builder.addIndexes(toProto(curIndex));
}
builder.setIsImmutableRows(table.isImmutableRows());
-
+ // TODO remove this field in 5.0 release
if (table.getParentName() != null) {
- builder.setDataTableNameBytes(ByteStringer.wrap(table.getParentName().getBytes()));
+ builder.setDataTableNameBytes(ByteStringer.wrap(table.getParentTableName().getBytes()));
+ }
+ if (table.getParentName() !=null) {
+ builder.setParentNameBytes(ByteStringer.wrap(table.getParentName().getBytes()));
}
if (table.getDefaultFamilyName()!= null) {
builder.setDefaultFamilyName(ByteStringer.wrap(table.getDefaultFamilyName().getBytes()));
http://git-wip-us.apache.org/repos/asf/phoenix/blob/16f0da3d/phoenix-protocol/src/main/PTable.proto
----------------------------------------------------------------------
diff --git a/phoenix-protocol/src/main/PTable.proto b/phoenix-protocol/src/main/PTable.proto
index 1eec5d9..a16263f 100644
--- a/phoenix-protocol/src/main/PTable.proto
+++ b/phoenix-protocol/src/main/PTable.proto
@@ -73,6 +73,7 @@ message PTable {
// Do NOT reuse the tag '12'. Stats are no longer passed
// along with the PTable.
//repeated PTableStats guidePosts = 12;
+ // TODO remove this field in 5.0 release
optional bytes dataTableNameBytes = 13;
optional bytes defaultFamilyName = 14;
required bool disableWAL = 15;
@@ -93,4 +94,5 @@ message PTable {
optional bool isNamespaceMapped = 30;
optional string autoParititonSeqName = 31;
optional bool isAppendOnlySchema = 32;
+ optional bytes parentNameBytes = 33;
}
[42/48] phoenix git commit: Fix merge conflicts
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
index abea491,0000000..5d60425
mode 100644,000000..100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
@@@ -1,1383 -1,0 +1,1383 @@@
+/*
+ * 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.calcite;
+
- import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
- import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
- import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
- import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
++import static org.apache.phoenix.end2end.BaseJoinIT.JOIN_CUSTOMER_TABLE_FULL_NAME;
++import static org.apache.phoenix.end2end.BaseJoinIT.JOIN_ITEM_TABLE_FULL_NAME;
++import static org.apache.phoenix.end2end.BaseJoinIT.JOIN_ORDER_TABLE_FULL_NAME;
++import static org.apache.phoenix.end2end.BaseJoinIT.JOIN_SUPPLIER_TABLE_FULL_NAME;
+
+import java.sql.Connection;
+import java.sql.Date;
+import java.sql.DriverManager;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.util.Properties;
+
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Integration test for queries powered by Calcite.
+ */
+public class CalciteIT extends BaseCalciteIT {
+
+ @Before
+ public void initTable() throws Exception {
+ final String url = getOldUrl();
+ initATableValues(TestUtil.ATABLE_NAME, getOrganizationId(), null, null, null, url);
- initJoinTableValues(url, null, null);
++ initJoinTableValues(url);
+ initArrayTable(url);
+ initSaltedTables(url, null);
+ initKeyOrderingTable(url);
+ final Connection connection = DriverManager.getConnection(url);
+ connection.createStatement().execute("CREATE VIEW IF NOT EXISTS v AS SELECT * from aTable where a_string = 'a'");
+ connection.createStatement().execute("CREATE SEQUENCE IF NOT EXISTS seq0 START WITH 1 INCREMENT BY 1");
+ connection.createStatement().execute("CREATE SEQUENCE IF NOT EXISTS my.seq1 START WITH 2 INCREMENT BY 2");
+ connection.createStatement().execute("UPDATE STATISTICS ATABLE");
+ connection.createStatement().execute("UPDATE STATISTICS " + JOIN_CUSTOMER_TABLE_FULL_NAME);
+ connection.createStatement().execute("UPDATE STATISTICS " + JOIN_ITEM_TABLE_FULL_NAME);
+ connection.createStatement().execute("UPDATE STATISTICS " + JOIN_SUPPLIER_TABLE_FULL_NAME);
+ connection.createStatement().execute("UPDATE STATISTICS " + JOIN_ORDER_TABLE_FULL_NAME);
+ connection.createStatement().execute("UPDATE STATISTICS " + SCORES_TABLE_NAME);
+ connection.createStatement().execute("UPDATE STATISTICS " + SALTED_TABLE_NAME);
+ connection.close();
+ }
+
+ private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Test public void testTableScan() throws Exception {
+ start(false, 1000f).sql("select * from aTable where a_string = 'a'")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
+ .resultIs(0, new Object[][] {
+ {"00D300000000XHP", "00A123122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A423122312312", "a"}})
+ .close();
+
+ start(false, 1000f).sql("select \"DATE\" from " + JOIN_ORDER_TABLE_FULL_NAME + " where \"order_id\" = '000000000000001'")
+ .resultIs(0, new Object[][]{
+ {new Timestamp(format.parse("2013-11-22 14:22:56").getTime())}})
+ .close();
+
+ start(false, 1000f).sql("select \"DATE\" from " + JOIN_CUSTOMER_TABLE_FULL_NAME + " where \"customer_id\" = '0000000001'")
+ .resultIs(0, new Object[][]{
+ {Date.valueOf("2013-11-01")}})
+ .close();
+
+ start(false, 1000f).sql("select student_id, scores, exam_date, exam_time, exam_timestamp from " + SCORES_TABLE_NAME)
+ .resultIs(0, new Object[][] {
+ {1, new Integer[] {85, 80, 82}, new Date[] {Date.valueOf("2016-3-22"), Date.valueOf("2016-5-23"), Date.valueOf("2016-7-24")}, new Time[] {Time.valueOf("15:30:28"), Time.valueOf("13:26:50"), Time.valueOf("16:20:00")}, new Timestamp[] {Timestamp.valueOf("2016-3-22 15:30:28"), Timestamp.valueOf("2016-5-23 13:26:50"), Timestamp.valueOf("2016-7-24 16:20:00")}},
+ {2, null, null, null, null},
+ {3, new Integer[] {87, 88, 80}, new Date[] {Date.valueOf("2016-3-22"), Date.valueOf("2016-5-23"), Date.valueOf("2016-7-24")}, new Time[] {Time.valueOf("15:30:16"), Time.valueOf("13:26:52"), Time.valueOf("16:20:40")}, new Timestamp[] {Timestamp.valueOf("2016-3-22 15:30:16"), Timestamp.valueOf("2016-5-23 13:26:52"), Timestamp.valueOf("2016-7-24 16:20:40")}}})
+ .close();
+ }
+
+ @Test public void testProject() throws Exception {
+ start(false, 1000f).sql("select entity_id, a_string, organization_id from aTable where a_string = 'a'")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2], ORGANIZATION_ID=[$0])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
+ .resultIs(0, new Object[][] {
+ {"00A123122312312", "a", "00D300000000XHP"},
+ {"00A223122312312", "a", "00D300000000XHP"},
+ {"00A323122312312", "a", "00D300000000XHP"},
+ {"00A423122312312", "a", "00D300000000XHP"}})
+ .close();
+ }
+
+ @Test public void testJoin() throws Exception {
+ start(false, 1000f).sql("select t1.entity_id, t2.a_string, t1.organization_id from aTable t1 join aTable t2 on t1.entity_id = t2.entity_id and t1.organization_id = t2.organization_id where t1.a_string = 'a'")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(ENTITY_ID=[$4], A_STRING=[$2], ORGANIZATION_ID=[$3])\n" +
+ " PhoenixServerJoin(condition=[AND(=($4, $1), =($3, $0))], joinType=[inner])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
+ .resultIs(0, new Object[][] {
+ {"00A123122312312", "a", "00D300000000XHP"},
+ {"00A223122312312", "a", "00D300000000XHP"},
+ {"00A323122312312", "a", "00D300000000XHP"},
+ {"00A423122312312", "a", "00D300000000XHP"}})
+ .close();
+
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\"")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
+ .resultIs(0, new Object[][] {
+ {"0000000001", "T1", "0000000001", "S1"},
+ {"0000000002", "T2", "0000000001", "S1"},
+ {"0000000003", "T3", "0000000002", "S2"},
+ {"0000000004", "T4", "0000000002", "S2"},
+ {"0000000005", "T5", "0000000005", "S5"},
+ {"0000000006", "T6", "0000000006", "S6"}})
+ .close();
+
+ start(false, 1000f).sql("SELECT * FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.name = 'S5'")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], PRICE=[$2], DISCOUNT1=[$3], DISCOUNT2=[$4], supplier_id=[$5], DESCRIPTION=[$6], supplier_id0=[$7], NAME0=[$8], PHONE=[$9], ADDRESS=[$10], LOC_ID=[$11])\n" +
+ " PhoenixServerJoin(condition=[=($5, $7)], joinType=[inner])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1], PHONE=[$2], ADDRESS=[$3], LOC_ID=[$4], NAME5=[CAST($1):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\"])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], filter=[=(CAST($1):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\", 'S5')])\n")
+ .resultIs(0, new Object[][] {
+ {"0000000005", "T5", 500, 8, 15, "0000000005", "Item T5", "0000000005", "S5", "888-888-5555", "505 YYY Street", "10005"}})
+ .close();
+
+ start(false, 1000f).sql("SELECT \"order_id\", i.name, i.price, discount2, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o INNER JOIN "
+ + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" AND o.price = (i.price * (100 - discount2)) / 100.0 WHERE quantity < 5000")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(order_id=[$5], NAME=[$1], PRICE=[$2], DISCOUNT2=[$3], QUANTITY=[$7])\n" +
+ " PhoenixServerJoin(condition=[AND(=($6, $0), =($8, $4))], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], PRICE=[$2], DISCOUNT2=[$4], $f7=[/(*($2, -(100, $4)), 100.0)])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
- " PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4], PRICE7=[CAST($3):DECIMAL(17, 6)])\n" +
++ " PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4], PRICE6=[CAST($3):DECIMAL(17, 6)])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]], filter=[<($4, 5000)])\n")
+ .resultIs(0, new Object[][] {
+ {"000000000000004", "T6", 600, 15, 4000}})
+ .close();
+ }
+
+ @Test public void testRightOuterJoin() throws Exception {
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item RIGHT OUTER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\"")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$2], NAME=[$3], supplier_id=[$0], NAME0=[$1])\n" +
+ " PhoenixServerJoin(condition=[=($4, $0)], joinType=[left])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .resultIs(0, new Object[][] {
+ {"0000000001", "T1", "0000000001", "S1"},
+ {"0000000002", "T2", "0000000001", "S1"},
+ {"0000000003", "T3", "0000000002", "S2"},
+ {"0000000004", "T4", "0000000002", "S2"},
+ {null, null, "0000000003", "S3"},
+ {null, null, "0000000004", "S4"},
+ {"0000000005", "T5", "0000000005", "S5"},
+ {"0000000006", "T6", "0000000006", "S6"}})
+ .close();
+ }
+
+ @Test public void testClientJoin() throws Exception {
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item FULL OUTER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" order by \"item_id\", supp.name")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientSort(sort0=[$0], sort1=[$3], dir0=[ASC], dir1=[ASC])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixClientJoin(condition=[=($2, $3)], joinType=[full])\n" +
+ " PhoenixServerSort(sort0=[$2], dir0=[ASC])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], scanOrder=[FORWARD])\n")
+ .resultIs(new Object[][] {
+ {"0000000001", "T1", "0000000001", "S1"},
+ {"0000000002", "T2", "0000000001", "S1"},
+ {"0000000003", "T3", "0000000002", "S2"},
+ {"0000000004", "T4", "0000000002", "S2"},
+ {"0000000005", "T5", "0000000005", "S5"},
+ {"0000000006", "T6", "0000000006", "S6"},
+ {"invalid001", "INVALID-1", null, null},
+ {null, null, "0000000003", "S3"},
+ {null, null, "0000000004", "S4"}})
+ .close();
+
+ start(false, 1000f).sql("select t1.entity_id, t2.a_string, t1.organization_id from aTable t1 join aTable t2 on t1.organization_id = t2.organization_id and t1.entity_id = t2.entity_id")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(ENTITY_ID=[$1], A_STRING=[$4], ORGANIZATION_ID=[$0])\n" +
+ " PhoenixClientJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
+ .resultIs(new Object[][] {
+ {"00A123122312312", "a", "00D300000000XHP"},
+ {"00A223122312312", "a", "00D300000000XHP"},
+ {"00A323122312312", "a", "00D300000000XHP"},
+ {"00A423122312312", "a", "00D300000000XHP"},
+ {"00B523122312312", "b", "00D300000000XHP"},
+ {"00B623122312312", "b", "00D300000000XHP"},
+ {"00B723122312312", "b", "00D300000000XHP"},
+ {"00B823122312312", "b", "00D300000000XHP"},
+ {"00C923122312312", "c", "00D300000000XHP"}})
+ .close();
+
+ start(false, 100000f).sql("select t1.k0, t1.k1, t2.k0, t2.k1 from " + KEY_ORDERING_TABLE_1_NAME + " t1 join " + KEY_ORDERING_TABLE_2_NAME + " t2 on t1.k0 = t2.k0 and t1.k1 = t2.k1")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(K0=[$0], K1=[$1], K00=[$3], K10=[$4])\n" +
+ " PhoenixClientJoin(condition=[AND(=($0, $3), =($2, $4))], joinType=[inner])\n" +
+ " PhoenixServerSort(sort0=[$0], sort1=[$2], dir0=[ASC], dir1=[ASC])\n" +
+ " PhoenixServerProject(K0=[$0], K1=[$1], K14=[CAST($1):BIGINT NOT NULL])\n" +
+ " PhoenixTableScan(table=[[phoenix, KEY_ORDERING_TEST_TABLE_1]])\n" +
+ " PhoenixServerProject(K0=[$0], K1=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, KEY_ORDERING_TEST_TABLE_2]], scanOrder=[REVERSE])\n")
+ .resultIs(new Object[][] {
+ {1L, 2, 1L, 2L},
+ {1L, 5, 1L, 5L},
+ {2L, 3, 2L, 3L},
+ {2L, 5, 2L, 5L},
+ {5L, 5, 5L, 5L}})
+ .close();
+ }
+
+ @Test public void testJoinPlanningWithCollation() throws Exception {
+ // Server-join with LHS sorted on order-by fields
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" order by supp.\"supplier_id\"")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$2], NAME=[$3], supplier_id=[$0], NAME0=[$1])\n" +
+ " PhoenixServerJoin(condition=[=($4, $0)], joinType=[inner])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], scanOrder=[FORWARD])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .close();
+
+ // Server-join with LHS reversely sorted on order-by fields
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" order by supp.\"supplier_id\" DESC")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$2], NAME=[$3], supplier_id=[$0], NAME0=[$1])\n" +
+ " PhoenixServerJoin(condition=[=($4, $0)], joinType=[inner])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], scanOrder=[REVERSE])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .close();
+
+ // Join key being order-by fields with the other side sorted on order-by fields
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" order by item.\"supplier_id\"")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4], supplier_id0=[$2])\n" +
+ " PhoenixClientJoin(condition=[=($2, $3)], joinType=[inner])\n" +
+ " PhoenixServerSort(sort0=[$2], dir0=[ASC])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], scanOrder=[FORWARD])\n")
+ .close();
+
+ start(false, 1000f).sql("SELECT \"order_id\", i.name, i.price, discount2, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
+ + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" limit 2 offset 1")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(order_id=[$0], NAME=[$4], PRICE=[$5], DISCOUNT2=[$6], QUANTITY=[$2])\n" +
+ " PhoenixLimit(offset=[1], fetch=[2])\n" +
+ " PhoenixClientJoin(condition=[=($1, $3)], joinType=[left])\n" +
+ " PhoenixClientSort(sort0=[$1], dir0=[ASC])\n" +
+ " PhoenixLimit(offset=[1], fetch=[2])\n" +
+ " PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], PRICE=[$2], DISCOUNT2=[$4])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], scanOrder=[FORWARD])\n")
+ .close();
+ }
+
+ @Test public void testMultiJoin() throws Exception {
+ start(false, 1000f).sql("select t1.entity_id, t2.a_string, t3.organization_id from aTable t1 join aTable t2 on t1.entity_id = t2.entity_id and t1.organization_id = t2.organization_id join atable t3 on t1.entity_id = t3.entity_id and t1.organization_id = t3.organization_id where t1.a_string = 'a' and t1.b_string > 'a' and t2.a_string = 'a'")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(ENTITY_ID=[$3], A_STRING=[$8], ORGANIZATION_ID=[$0])\n" +
+ " PhoenixServerJoin(condition=[AND(=($3, $1), =($2, $0))], joinType=[inner])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
+ " PhoenixClientProject(ORGANIZATION_ID=[$3], ENTITY_ID=[$4], A_STRING=[$5], B_STRING=[$6], ORGANIZATION_ID0=[$0], ENTITY_ID0=[$1], A_STRING0=[$2])\n" +
+ " PhoenixServerJoin(condition=[AND(=($4, $1), =($3, $0))], joinType=[inner])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2], B_STRING=[$3])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[AND(=($2, 'a'), >($3, 'a'))])\n")
+ .resultIs(0, new Object[][] {
+ {"00A123122312312", "a", "00D300000000XHP"},
+ {"00A223122312312", "a", "00D300000000XHP"},
+ {"00A323122312312", "a", "00D300000000XHP"},
+ {"00A423122312312", "a", "00D300000000XHP"}})
+ .close();
+
+ start(false, 1000f).sql("select t1.entity_id, t2.a_string, t3.organization_id from aTable t1 join aTable t2 on t1.entity_id = t2.entity_id and t1.organization_id = t2.organization_id join atable t3 on t1.entity_id = t3.entity_id and t1.organization_id = t3.organization_id limit 8 offset 1")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(ENTITY_ID=[$1], A_STRING=[$6], ORGANIZATION_ID=[$2])\n" +
+ " PhoenixLimit(offset=[1], fetch=[8])\n" +
+ " PhoenixClientJoin(condition=[AND(=($1, $5), =($0, $4))], joinType=[inner])\n" +
+ " PhoenixClientJoin(condition=[AND(=($1, $3), =($0, $2))], joinType=[inner])\n" +
+ " PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
+ " PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
+ " PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(0, new Object[][] {
+ {"00A223122312312", "a", "00D300000000XHP"},
+ {"00A323122312312", "a", "00D300000000XHP"},
+ {"00A423122312312", "a", "00D300000000XHP"},
+ {"00B523122312312", "b", "00D300000000XHP"},
+ {"00B623122312312", "b", "00D300000000XHP"},
+ {"00B723122312312", "b", "00D300000000XHP"},
+ {"00B823122312312", "b", "00D300000000XHP"},
+ {"00C923122312312", "c", "00D300000000XHP"}})
+ .close();
+ }
+
+ @Test public void testAggregate() throws Exception {
+ start(false, 1000f).sql("select count(b_string) from atable")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{}], EXPR$0=[COUNT($3)])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(0, new Object[][] {
+ {9L}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, count(b_string) from atable group by organization_id")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT($3)], isOrdered=[true])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
+ .resultIs(0, new Object[][] {
+ {"00D300000000XHP", 9L}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, count(b_string) from atable group by entity_id ,organization_id")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{0, 1}], EXPR$2=[COUNT($3)], isOrdered=[true])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
+ .resultIs(0, new Object[][] {
+ {"00D300000000XHP", "00A123122312312", 1L},
+ {"00D300000000XHP", "00A223122312312", 1L},
+ {"00D300000000XHP", "00A323122312312", 1L},
+ {"00D300000000XHP", "00A423122312312", 1L},
+ {"00D300000000XHP", "00B523122312312", 1L},
+ {"00D300000000XHP", "00B623122312312", 1L},
+ {"00D300000000XHP", "00B723122312312", 1L},
+ {"00D300000000XHP", "00B823122312312", 1L},
+ {"00D300000000XHP", "00C923122312312", 1L}})
+ .close();
+
+ start(false, 1000f).sql("select entity_id, count(b_string) from atable group by entity_id")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{1}], EXPR$1=[COUNT($3)], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(0, new Object[][] {
+ {"00A123122312312", 1L},
+ {"00A223122312312", 1L},
+ {"00A323122312312", 1L},
+ {"00A423122312312", 1L},
+ {"00B523122312312", 1L},
+ {"00B623122312312", 1L},
+ {"00B723122312312", 1L},
+ {"00B823122312312", 1L},
+ {"00C923122312312", 1L}})
+ .close();
+
+ start(false, 1000f).sql("select a_string, count(b_string) from atable group by a_string")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$1=[COUNT($3)], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(0, new Object[][] {
+ {"a", 4L},
+ {"b", 4L},
+ {"c", 1L}})
+ .close();
+
+ start(false, 1000f).sql("select count(entity_id), a_string from atable group by a_string")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(0, new Object[][] {
+ {4L, "a"},
+ {4L, "b"},
+ {1L, "c"}})
+ .close();
+
+ start(false, 1000f).sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{1}], EXPR$1=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixServerJoin(condition=[=($0, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .resultIs(0, new Object[][] {
+ {"S1", 2L},
+ {"S2", 2L},
+ {"S5", 1L},
+ {"S6", 1L}})
+ .close();
+
+ // test PhoenixOrderedAggregateRule
+ start(false, 1000f).sql("select s.\"supplier_id\", count(s.name) from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.\"supplier_id\"")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT($1)], isOrdered=[true])\n" +
+ " PhoenixServerJoin(condition=[=($0, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], scanOrder=[FORWARD])\n" +
+ " PhoenixServerProject(supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .resultIs(0, new Object[][] {
+ {"0000000001", 2L},
+ {"0000000002", 2L},
+ {"0000000005", 1L},
+ {"0000000006", 1L}})
+ .close();
+
+ start(false, 1000f).sql("select a_string, sum(a_integer) from aTable group by a_string")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$1=[SUM($4)], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(0, new Object[][] {
+ {"a", 10L},
+ {"b", 26L},
+ {"c", 9L}})
+ .close();
+
+ Object[][] expectedResult = new Object[1000][2];
+ for (int i = 0; i < 1000; i++) {
+ expectedResult[i][0] = i + 1;
+ expectedResult[i][1] = i + 2;
+ }
+ start(false, 1000f).sql("select mypk0, avg(mypk1) from " + SALTED_TABLE_NAME + " group by mypk0")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(MYPK0=[$0], EXPR$1=[CAST(/($1, $2)):INTEGER NOT NULL])\n" +
+ " PhoenixServerAggregate(group=[{0}], agg#0=[$SUM0($1)], agg#1=[COUNT()], isOrdered=[true])\n" +
+ " PhoenixTableScan(table=[[phoenix, SALTED_TEST_TABLE]], scanOrder=[FORWARD])\n")
+ .resultIs(0, expectedResult)
+ .close();
+ }
+
+ @Test public void testDistinct() throws Exception {
+ start(false, 1000f).sql("select distinct a_string from aTable")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{2}], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(0, new Object[][]{
+ {"a"},
+ {"b"},
+ {"c"}})
+ .close();
+ }
+
+ @Test public void testSort() throws Exception {
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by a_string, entity_id")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerSort(sort0=[$2], sort1=[$1], dir0=[ASC], dir1=[ASC])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00A123122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00C923122312312", "c"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id, entity_id")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00A123122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00C923122312312", "c"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id DESC")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00C923122312312", "c"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A123122312312", "a"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id DESC, entity_id DESC")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00C923122312312", "c"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A123122312312", "a"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id ASC, entity_id DESC")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[DESC])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00C923122312312", "c"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A123122312312", "a"}})
+ .close();
+
+ start(false, 1000f).sql("select count(entity_id), a_string from atable group by a_string order by count(entity_id), a_string desc")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" +
+ " PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ {1L, "c"},
+ {4L, "b"},
+ {4L, "a"}})
+ .close();
+
+ start(false, 1000f).sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name order by count(\"item_id\"), s.name desc")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" +
+ " PhoenixServerAggregate(group=[{1}], EXPR$1=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixServerJoin(condition=[=($0, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .resultIs(new Object[][] {
+ {"S6", 1L},
+ {"S5", 1L},
+ {"S2", 2L},
+ {"S1", 2L}})
+ .close();
+
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" order by item.name desc")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixServerSort(sort0=[$1], dir0=[DESC])\n" +
+ " PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
+ .resultIs(new Object[][] {
+ {"0000000006", "T6", "0000000006", "S6"},
+ {"0000000005", "T5", "0000000005", "S5"},
+ {"0000000004", "T4", "0000000002", "S2"},
+ {"0000000003", "T3", "0000000002", "S2"},
+ {"0000000002", "T2", "0000000001", "S1"},
+ {"0000000001", "T1", "0000000001", "S1"}})
+ .close();
+ }
+
+ @Test public void testSortWithLimitOffset() throws Exception {
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by a_string, entity_id limit 5 offset 0")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(fetch=[5])\n" +
+ " PhoenixServerSort(sort0=[$2], sort1=[$1], dir0=[ASC], dir1=[ASC])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00A123122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00B523122312312", "b"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id, entity_id limit 5 offset 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[3], fetch=[5])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B823122312312", "b"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id DESC limit 5 offset 5")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[5], fetch=[5])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A123122312312", "a"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id DESC, entity_id DESC limit 5 offset 2")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[2], fetch=[5])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"}})
+ .close();
+
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable order by organization_id ASC, entity_id DESC limit 5 offset 0")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(fetch=[5])\n" +
+ " PhoenixServerSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[DESC])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ {"00D300000000XHP", "00C923122312312", "c"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B523122312312", "b"}})
+ .close();
+
+ start(false, 1000f).sql("select count(entity_id), a_string from atable group by a_string order by count(entity_id), a_string desc limit 2 offset 1")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" +
+ " PhoenixLimit(offset=[1], fetch=[2])\n" +
+ " PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ {4L, "b"},
+ {4L, "a"}})
+ .close();
+
+ start(false, 1000f).sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name order by count(\"item_id\"), s.name desc limit 3 offset 1")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[1], fetch=[3])\n" +
+ " PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" +
+ " PhoenixServerAggregate(group=[{1}], EXPR$1=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixServerJoin(condition=[=($0, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .resultIs(new Object[][] {
+ {"S5", 1L},
+ {"S2", 2L},
+ {"S1", 2L}})
+ .close();
+
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" order by item.name desc limit 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixLimit(fetch=[3])\n" +
+ " PhoenixServerSort(sort0=[$1], dir0=[DESC])\n" +
+ " PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
+ .resultIs(new Object[][] {
+ {"0000000006", "T6", "0000000006", "S6"},
+ {"0000000005", "T5", "0000000005", "S5"},
+ {"0000000004", "T4", "0000000002", "S2"}})
+ .close();
+ }
+
+ @Test public void testLimit() throws Exception {
+ start(false, 1000f).sql("select organization_id, entity_id, a_string from aTable limit 5")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(fetch=[5])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIsSomeOf(5, new Object[][] {
+ {"00D300000000XHP", "00A123122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00C923122312312", "c"}})
+ .close();
+
+ start(false, 1000f).sql("select count(entity_id), a_string from atable group by a_string limit 2")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" +
+ " PhoenixLimit(fetch=[2])\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIsSomeOf(2, new Object[][] {
+ {4L, "a"},
+ {4L, "b"},
+ {1L, "c"}})
+ .close();
+
+ start(false, 1000f).sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name limit 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(fetch=[3])\n" +
+ " PhoenixServerAggregate(group=[{1}], EXPR$1=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixServerJoin(condition=[=($0, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
+ .resultIsSomeOf(3, new Object[][] {
+ {"S1", 2L},
+ {"S2", 2L},
+ {"S5", 1L},
+ {"S6", 1L}})
+ .close();
+
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" limit 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixLimit(fetch=[3])\n" +
+ " PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
+ .resultIsSomeOf(3, new Object[][] {
+ {"0000000001", "T1", "0000000001", "S1"},
+ {"0000000002", "T2", "0000000001", "S1"},
+ {"0000000003", "T3", "0000000002", "S2"},
+ {"0000000004", "T4", "0000000002", "S2"},
+ {"0000000005", "T5", "0000000005", "S5"},
+ {"0000000006", "T6", "0000000006", "S6"}})
+ .close();
+
+ start(false, 1000f).sql("SELECT x from (values (1, 2), (2, 4), (3, 6)) as t(x, y) limit 2")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(X=[$0])\n" +
+ " PhoenixLimit(fetch=[2])\n" +
+ " PhoenixValues(tuples=[[{ 1, 2 }, { 2, 4 }, { 3, 6 }]])\n")
+ .resultIsSomeOf(2, new Object[][] {{1}, {2}, {3}})
+ .close();
+ }
+
+ // PHOENIX CALCITE INTEGRATION : PHOENIX-2827
+ @Test public void testLimitOffset() throws Exception {
+ start(false, 1000f).sql(
+ "select organization_id, entity_id, a_string from aTable limit 5 offset 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[3], fetch=[5])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ { "00D300000000XHP", "00A423122312312", "a" },
+ { "00D300000000XHP", "00B523122312312", "b" },
+ { "00D300000000XHP", "00B623122312312", "b" },
+ { "00D300000000XHP", "00B723122312312", "b" },
+ { "00D300000000XHP", "00B823122312312", "b" }, })
+ .close();
+
+ start(false, 1000f).sql(
+ "select organization_id, entity_id, a_string from aTable limit 13 offset 12")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[12], fetch=[13])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {})
+ .close();
+
+ start(false, 1000f).sql("select count(entity_id), a_string from atable group by a_string limit 2 offset 0")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" +
+ " PhoenixLimit(fetch=[2])\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIsSomeOf(2, new Object[][] {
+ {4L, "a"},
+ {4L, "b"},
+ {1L, "c"}})
+ .close();
+
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" limit 3 offset 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixLimit(offset=[3], fetch=[3])\n" +
+ " PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
+ .resultIsSomeOf(3, new Object[][] {
+ { "0000000001", "T1", "0000000001", "S1" },
+ { "0000000002", "T2", "0000000001", "S1" },
+ { "0000000003", "T3", "0000000002", "S2" },
+ { "0000000004", "T4", "0000000002", "S2" },
+ { "0000000005", "T5", "0000000005", "S5" },
+ { "0000000006", "T6", "0000000006", "S6" } })
+ .close();
+
+ start(false, 1000f).sql("SELECT x from (values (1, 2), (2, 4), (3, 6)) as t(x, y) limit 2 offset 2")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(X=[$0])\n" +
+ " PhoenixLimit(offset=[2], fetch=[2])\n" +
+ " PhoenixValues(tuples=[[{ 1, 2 }, { 2, 4 }, { 3, 6 }]])\n")
+ .resultIs(new Object[][] {{3}})
+ .close();
+
+ start(false, 1000f).sql("SELECT x from (values (1, 2), (2, 4), (3, 6)) as t(x, y) limit 3 offset 4")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(X=[$0])\n" +
+ " PhoenixLimit(offset=[4], fetch=[3])\n" +
+ " PhoenixValues(tuples=[[{ 1, 2 }, { 2, 4 }, { 3, 6 }]])\n")
+ .resultIs(new Object[][] {})
+ .close();
+ }
+
+ @Test public void testOffset() throws Exception {
+ start(false, 1000f).sql(
+ "select organization_id, entity_id, a_string from aTable offset 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[3])\n" +
+ " PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIs(new Object[][] {
+ { "00D300000000XHP", "00A423122312312", "a" },
+ { "00D300000000XHP", "00B523122312312", "b" },
+ { "00D300000000XHP", "00B623122312312", "b" },
+ { "00D300000000XHP", "00B723122312312", "b" },
+ { "00D300000000XHP", "00B823122312312", "b" },
+ { "00D300000000XHP", "00C923122312312", "c" }})
+ .close();
+
+ start(false, 1000f).sql("select count(entity_id), a_string from atable group by a_string offset 1")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" +
+ " PhoenixLimit(offset=[1])\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
+ .resultIsSomeOf(2, new Object[][] {
+ {4L, "a"},
+ {4L, "b"},
+ {1L, "c"}})
+ .close();
+
+ start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" offset 7")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixLimit(offset=[7])\n" +
+ " PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
+ .resultIs(new Object [][] {})
+ .close();
+
+ start(false, 1000f).sql("SELECT x from (values (1, 2), (2, 4), (3, 6)) as t(x, y) offset 0")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(X=[$0])\n" +
+ " PhoenixValues(tuples=[[{ 1, 2 }, { 2, 4 }, { 3, 6 }]])\n")
+ .resultIs(new Object[][] {{1},{2},{3}})
+ .close();
+
+ start(false, 1000f).sql("SELECT x from (values (1, 2), (2, 4), (3, 6)) as t(x, y) offset 3")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(X=[$0])\n" +
+ " PhoenixLimit(offset=[3])\n" +
+ " PhoenixValues(tuples=[[{ 1, 2 }, { 2, 4 }, { 3, 6 }]])\n")
+ .resultIs(new Object[][] {})
+ .close();
+ }
+
+ @Ignore // CALCITE-1045
+ @Test public void testScalarSubquery() throws Exception {
+ start(false, 1000f).sql("select \"item_id\", name, (select max(quantity) sq \n"
+ + "from " + JOIN_ORDER_TABLE_FULL_NAME + " o where o.\"item_id\" = i.\"item_id\")\n"
+ + "from " + JOIN_ITEM_TABLE_FULL_NAME + " i")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" +
+ " PhoenixServerJoin(condition=[=($0, $7)], joinType=[left], isSingleValueRhs=[true])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerAggregate(group=[{0}], SQ=[MAX($5)], isOrdered=[true])\n" +
+ " PhoenixServerJoin(condition=[=($3, $0)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], scanOrder=[FORWARD])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n")
+ .resultIs(0, new Object[][] {
+ new Object[] {"0000000001", "T1", 1000},
+ new Object[] {"0000000002", "T2", 3000},
+ new Object[] {"0000000003", "T3", 5000},
+ new Object[] {"0000000004", "T4", null},
+ new Object[] {"0000000005", "T5", null},
+ new Object[] {"0000000006", "T6", 4000},
+ new Object[] {"invalid001", "INVALID-1", null}})
+ .close();
+
+ start(false, 1000f).sql("select \"item_id\", name, (select quantity sq \n"
+ + "from " + JOIN_ORDER_TABLE_FULL_NAME + " o where o.\"item_id\" = i.\"item_id\")\n"
+ + "from " + JOIN_ITEM_TABLE_FULL_NAME + " i where \"item_id\" < '0000000006'")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" +
+ " PhoenixServerJoin(condition=[=($0, $7)], joinType=[left], isSingleValueRhs=[true])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<($0, '0000000006')])\n" +
+ " PhoenixClientProject(item_id0=[$7], SQ=[$4])\n" +
+ " PhoenixServerJoin(condition=[=($2, $7)], joinType=[inner])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " PhoenixServerProject(item_id=[$0])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<($0, '0000000006')])\n")
+ .resultIs(0, new Object[][] {
+ new Object[] {"0000000001", "T1", 1000},
+ new Object[] {"0000000002", "T2", 3000},
+ new Object[] {"0000000003", "T3", 5000},
+ new Object[] {"0000000004", "T4", null},
+ new Object[] {"0000000005", "T5", null}})
+ .close();;
+ }
+
+ @Test public void testValues() throws Exception {
+ start(false, 1000f).sql("select p0+p1 from (values (2, 1)) as t(p0, p1)")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(EXPR$0=[+($0, $1)])\n" +
+ " PhoenixValues(tuples=[[{ 2, 1 }]])\n")
+ .close();
+ start(false, 1000f).sql("select count(p0), max(p1) from (values (2, 1), (3, 4), (5, 2)) as t(p0, p1)")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientAggregate(group=[{}], EXPR$0=[COUNT()], EXPR$1=[MAX($1)])\n" +
+ " PhoenixValues(tuples=[[{ 2, 1 }, { 3, 4 }, { 5, 2 }]])\n")
+ .resultIs(0, new Object[][] {{3L, 4}})
+ .close();
+ }
+
+ @Test public void testUnion() throws Exception {
+ start(false, 1000f).sql("select entity_id from atable where a_string = 'a' union all select entity_id from atable where a_string = 'b'")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixUnion(all=[true])\n" +
+ " PhoenixServerProject(ENTITY_ID=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n" +
+ " PhoenixServerProject(ENTITY_ID=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'b')])\n")
+ .resultIs(0, new Object[][] {
+ {"00A123122312312"},
+ {"00A223122312312"},
+ {"00A323122312312"},
+ {"00A423122312312"},
+ {"00B523122312312"},
+ {"00B623122312312"},
+ {"00B723122312312"},
+ {"00B823122312312"}})
+ .close();
+
+ start(false, 1000f).sql("select entity_id, a_string from atable where a_string = 'a' union all select entity_id, a_string from atable where a_string = 'c' order by entity_id desc limit 3 offset 1")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixLimit(offset=[1], fetch=[3])\n" +
+ " PhoenixMergeSortUnion(all=[true])\n" +
+ " PhoenixServerSort(sort0=[$0], dir0=[DESC])\n" +
+ " PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n" +
+ " PhoenixServerSort(sort0=[$0], dir0=[DESC])\n" +
+ " PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'c')])\n")
+ .resultIs(new Object[][] {
+ {"00A423122312312", "a"},
+ {"00A323122312312", "a"},
+ {"00A223122312312", "a"}})
+ .close();
+
+ start(false, 1000f).sql("select entity_id, a_string from atable where a_string = 'a' union all select entity_id, a_string from atable where a_string = 'c' order by entity_id desc")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixMergeSortUnion(all=[true])\n" +
+ " PhoenixServerSort(sort0=[$0], dir0=[DESC])\n" +
+ " PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n" +
+ " PhoenixServerSort(sort0=[$0], dir0=[DESC])\n" +
+ " PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'c')])\n")
+ .resultIs(new Object[][] {
+ {"00C923122312312", "c"},
+ {"00A423122312312", "a"},
+ {"00A323122312312", "a"},
+ {"00A223122312312", "a"},
+ {"00A123122312312", "a"}})
+ .close();
+ }
+
+ @Test public void testUnnest() throws Exception {
+ start(false, 1000f).sql("SELECT t.s FROM UNNEST((SELECT scores FROM " + SCORES_TABLE_NAME + ")) AS t(s)")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixUncollect\n" +
+ " PhoenixServerProject(EXPR$0=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, SCORES]])\n")
+ .resultIs(0, new Object[][] {
+ {85},
+ {80},
+ {82},
+ {87},
+ {88},
+ {80}})
+ .close();
+ start(false, 1000f).sql("SELECT t.o, t.s FROM UNNEST((SELECT scores FROM " + SCORES_TABLE_NAME + ")) WITH ORDINALITY AS t(s, o)")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(O=[$1], S=[$0])\n" +
+ " PhoenixUncollect(withOrdinality=[true])\n" +
+ " PhoenixServerProject(EXPR$0=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, SCORES]])\n")
+ .resultIs(0, new Object[][] {
+ {1, 85},
+ {2, 80},
+ {3, 82},
+ {1, 87},
+ {2, 88},
+ {3, 80}})
+ .close();
+ start(false, 1000f).sql("SELECT s.student_id, t.score FROM " + SCORES_TABLE_NAME + " s, UNNEST((SELECT scores FROM " + SCORES_TABLE_NAME + " s2 where s.student_id = s2.student_id)) AS t(score)")
+ .explainIs("PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(STUDENT_ID=[$0], SCORE=[$6])\n" +
+ " PhoenixCorrelate(correlation=[$cor0], joinType=[INNER], requiredColumns=[{0}])\n" +
+ " PhoenixTableScan(table=[[phoenix, SCORES]])\n" +
+ " PhoenixUncollect\n" +
+ " PhoenixServerProject(EXPR$0=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, SCORES]], filter=[=($cor0.STUDENT_ID, $0)])\n")
+ .resultIs(0, new Object[][] {
+ {1, 85},
+ {1, 80},
+ {1, 82},
+ {3, 87},
+ {3, 88},
+ {3, 80}})
+ .close();
+ }
+
+ @Test public void testCorrelateAndDecorrelation() throws Exception {
+ Properties correlProps = getConnectionProps(false, 1000f);
+ correlProps.setProperty("forceDecorrelate", Boolean.FALSE.toString());
+ Properties decorrelProps = getConnectionProps(false, 1000f);
+ decorrelProps.setProperty("forceDecorrelate", Boolean.TRUE.toString());
+
+ String q1 = "select \"order_id\", quantity from " + JOIN_ORDER_TABLE_FULL_NAME + " o where quantity = (select max(quantity) from " + JOIN_ORDER_TABLE_FULL_NAME + " o2 where o.\"item_id\" = o2.\"item_id\")";
+ Object[][] r1 = new Object[][] {
+ {"000000000000001", 1000},
+ {"000000000000003", 3000},
+ {"000000000000004", 4000},
+ {"000000000000005", 5000}};
+ String p1Correlate =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(order_id=[$0], QUANTITY=[$2])\n" +
+ " PhoenixFilter(condition=[=($2, $3)])\n" +
+ " PhoenixCorrelate(correlation=[$cor0], joinType=[LEFT], requiredColumns=[{1}])\n" +
+ " PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " PhoenixServerAggregate(group=[{}], EXPR$0=[MAX($4)])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]], filter=[=($cor0.item_id, $2)])\n";
+ String p1Decorrelated =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(order_id=[$0], QUANTITY=[$2])\n" +
+ " PhoenixServerJoin(condition=[AND(=($1, $3), =($2, $4))], joinType=[inner])\n" +
+ " PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " PhoenixServerAggregate(group=[{2}], EXPR$0=[MAX($1)], isOrdered=[false])\n" +
+ " PhoenixServerJoin(condition=[=($2, $0)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$2], QUANTITY=[$4])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " PhoenixServerAggregate(group=[{2}], isOrdered=[false])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n";
+ start(correlProps).sql(q1).explainIs(p1Correlate).resultIs(0, r1).close();
+ start(decorrelProps).sql(q1).explainIs(p1Decorrelated).resultIs(0, r1).close();
+
+ String q2 = "select name from " + JOIN_ITEM_TABLE_FULL_NAME + " i where price = (select max(price) from " + JOIN_ITEM_TABLE_FULL_NAME + " i2 where i.\"item_id\" = i2.\"item_id\" and i.name = i2.name and i2.\"item_id\" <> 'invalid001')";
+ Object[][] r2 = new Object[][]{
+ {"T1"},
+ {"T2"},
+ {"T3"},
+ {"T4"},
+ {"T5"},
+ {"T6"}};
+ String p2Correlate =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(NAME=[$1])\n" +
+ " PhoenixFilter(condition=[=($2, $3)])\n" +
+ " PhoenixCorrelate(correlation=[$cor0], joinType=[LEFT], requiredColumns=[{0, 1}])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], PRICE=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerAggregate(group=[{}], EXPR$0=[MAX($2)])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[AND(=($cor0.item_id, $0), =($cor0.NAME, $1), <>($0, 'invalid001'))])\n";
+ String p2Decorrelated =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(NAME=[$1])\n" +
+ " PhoenixServerJoin(condition=[AND(=($0, $3), =($1, $4), =($2, $5))], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], PRICE=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerAggregate(group=[{0, 1}], EXPR$0=[MAX($4)], isOrdered=[false])\n" +
+ " PhoenixServerJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1], PRICE=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<>($0, 'invalid001')])\n";
+ start(correlProps).sql(q2).explainIs(p2Correlate).resultIs(0, r2).close();
+ start(decorrelProps).sql(q2).explainIs(p2Decorrelated).resultIs(0, r2).close();
+
+ // Test PhoenixClientSemiJoin
+ String q3 = "select \"item_id\", name from " + JOIN_ITEM_TABLE_FULL_NAME + " i where exists (select 1 from " + JOIN_ORDER_TABLE_FULL_NAME + " o where i.\"item_id\" = o.\"item_id\")";
+ Object[][] r3 = new Object[][] {
+ {"0000000001", "T1"},
+ {"0000000002", "T2"},
+ {"0000000003", "T3"},
+ {"0000000006", "T6"}};
+ String p3Correlate =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1])\n" +
+ " PhoenixCorrelate(correlation=[$cor0], joinType=[INNER], requiredColumns=[{0}])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerAggregate(group=[{0}], isOrdered=[false])\n" +
+ " PhoenixServerProject(i=[true])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]], filter=[=($cor0.item_id, $2)])\n";
+ String p3Decorrelated =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientSemiJoin(condition=[=($0, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], scanOrder=[FORWARD])\n" +
+ " PhoenixServerJoin(condition=[=($0, $1)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], scanOrder=[FORWARD])\n" +
+ " PhoenixServerProject(item_id=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n";
+ start(correlProps).sql(q3).explainIs(p3Correlate).resultIs(0, r3).close();
+ start(decorrelProps).sql(q3).explainIs(p3Decorrelated).resultIs(0, r3).close();
+
+ String q4 = "select \"item_id\", name from " + JOIN_ITEM_TABLE_FULL_NAME + " i where \"item_id\" in (select \"item_id\" from " + JOIN_ORDER_TABLE_FULL_NAME + ")";
+ Object[][] r4 = new Object[][] {
+ {"0000000001", "T1"},
+ {"0000000002", "T2"},
+ {"0000000003", "T3"},
+ {"0000000006", "T6"}};
+ String p4Decorrelated =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixServerSemiJoin(condition=[=($0, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], NAME=[$1])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(item_id=[$2])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n";
+ start(decorrelProps).sql(q4).explainIs(p4Decorrelated).resultIs(0, r4).close();
+
+ String q5 = "select \"order_id\" from " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN " + JOIN_ORDER_TABLE_FULL_NAME + " o on o.\"item_id\" = i.\"item_id\" where quantity = (select max(quantity) from " + JOIN_ORDER_TABLE_FULL_NAME + " o2 JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i2 on o2.\"item_id\" = i2.\"item_id\" where i.\"supplier_id\" = i2.\"supplier_id\")";
+ Object [][] r5 = new Object[][] {
+ {"000000000000003"},
+ {"000000000000005"},
+ {"000000000000004"}};
+ String p5Correlate =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(order_id=[$2])\n" +
+ " PhoenixFilter(condition=[=($4, $5)])\n" +
+ " PhoenixCorrelate(correlation=[$cor0], joinType=[LEFT], requiredColumns=[{1}])\n" +
+ " PhoenixServerJoin(condition=[=($3, $0)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " PhoenixServerAggregate(group=[{}], EXPR$0=[MAX($4)])\n" +
+ " PhoenixServerJoin(condition=[=($2, $7)], joinType=[inner])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[=($cor0.supplier_id, $5)])\n";
+ String p5Decorrelated =
+ "PhoenixToEnumerableConverter\n" +
+ " PhoenixClientProject(order_id=[$2])\n" +
+ " PhoenixServerJoin(condition=[AND(=($1, $5), =($3, $0))], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id=[$0], supplier_id=[$5])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
+ " PhoenixServerJoi
<TRUNCATED>
[09/48] phoenix git commit: PHOENIX-3308 Shutdown minicluster after
parallel tests complete
Posted by ma...@apache.org.
PHOENIX-3308 Shutdown minicluster after parallel tests complete
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/ad07077c
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/ad07077c
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/ad07077c
Branch: refs/heads/calcite
Commit: ad07077c7271398a17d14dc4cd11b8bee3b7d4d9
Parents: 2aa2d1f
Author: James Taylor <ja...@apache.org>
Authored: Wed Sep 21 22:17:20 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Wed Sep 21 22:20:01 2016 -0700
----------------------------------------------------------------------
...ritesAndUncompressedWALInHBase_094_9_IT.java | 45 ---------------
.../phoenix/end2end/ParallelRunListener.java | 14 ++++-
.../phoenix/end2end/index/ImmutableIndexIT.java | 9 +--
.../java/org/apache/phoenix/query/BaseTest.java | 60 ++++++++++++--------
.../org/apache/phoenix/flume/PhoenixSinkIT.java | 27 +++++----
.../phoenix/flume/RegexEventSerializerIT.java | 4 +-
.../apache/phoenix/pherf/ResultBaseTestIT.java | 12 ++--
.../apache/phoenix/pherf/SchemaReaderIT.java | 4 +-
.../java/org/apache/phoenix/pig/BasePigIT.java | 6 +-
.../phoenix/end2end/QueryServerBasicsIT.java | 2 +-
pom.xml | 24 ++++----
11 files changed, 93 insertions(+), 114 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-core/src/it/java/org/apache/hadoop/hbase/regionserver/wal/WALReplayWithIndexWritesAndUncompressedWALInHBase_094_9_IT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/hadoop/hbase/regionserver/wal/WALReplayWithIndexWritesAndUncompressedWALInHBase_094_9_IT.java b/phoenix-core/src/it/java/org/apache/hadoop/hbase/regionserver/wal/WALReplayWithIndexWritesAndUncompressedWALInHBase_094_9_IT.java
deleted file mode 100644
index 5edbdee..0000000
--- a/phoenix-core/src/it/java/org/apache/hadoop/hbase/regionserver/wal/WALReplayWithIndexWritesAndUncompressedWALInHBase_094_9_IT.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.hadoop.hbase.regionserver.wal;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HConstants;
-
-import org.apache.phoenix.hbase.index.util.IndexManagementUtil;
-import org.apache.phoenix.util.ConfigUtil;
-
-/**
- * Do the WAL Replay test but with the WALEditCodec, rather than an {@link IndexedHLogReader}, but
- * still with compression
- */
-public class WALReplayWithIndexWritesAndUncompressedWALInHBase_094_9_IT extends WALReplayWithIndexWritesAndCompressedWALIT {
-
- @Override
- protected void configureCluster() throws Exception {
- Configuration conf = UTIL.getConfiguration();
- setDefaults(conf);
- LOG.info("Setting HLog impl to indexed log reader");
- conf.set(IndexManagementUtil.HLOG_READER_IMPL_KEY, IndexedHLogReader.class.getName());
-
- // disable WAL compression
- conf.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, false);
- // set replication required parameter
- ConfigUtil.setReplicationConfigIfAbsent(conf);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
index 7da6ec5..6c3a7f5 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
@@ -22,9 +22,21 @@ import org.junit.runner.Result;
import org.junit.runner.notification.RunListener;
public class ParallelRunListener extends RunListener {
+ // This causes output to go to the console when run through maven
+ // private static final Log LOG = LogFactory.getLog(ParallelRunListener.class);
+ private static final int TEAR_DOWN_THRESHOLD = 200;
+
+ private int testRuns = 0;
+
@Override
public void testRunFinished(Result result) throws Exception {
- BaseTest.tearDownMiniCluster();
+ testRuns += result.getRunCount();
+ if (testRuns > TEAR_DOWN_THRESHOLD) {
+ // LOG.info("Tearing down mini cluster after " + testRuns + " test runs");
+ testRuns = 0;
+ BaseTest.tearDownMiniCluster();
+ }
+
super.testRunFinished(result);
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
index 3e413e2..40faaf4 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
@@ -48,8 +48,7 @@ import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver;
import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.end2end.Shadower;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.query.BaseTest;
import org.apache.phoenix.query.QueryServices;
@@ -58,7 +57,6 @@ import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -69,7 +67,7 @@ import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class ImmutableIndexIT extends ParallelStatsDisabledIT {
+public class ImmutableIndexIT extends BaseOwnClusterIT {
private final boolean localIndex;
private final String tableDDLOptions;
@@ -91,7 +89,6 @@ public class ImmutableIndexIT extends ParallelStatsDisabledIT {
}
@BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
public static void doSetup() throws Exception {
Map<String, String> serverProps = Maps.newHashMapWithExpectedSize(1);
serverProps.put("hbase.coprocessor.region.classes", CreateIndexRegionObserver.class.getName());
@@ -109,7 +106,6 @@ public class ImmutableIndexIT extends ParallelStatsDisabledIT {
}
@Test
- @Ignore
public void testDropIfImmutableKeyValueColumn() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String tableName = "TBL_" + generateRandomString();
@@ -158,7 +154,6 @@ public class ImmutableIndexIT extends ParallelStatsDisabledIT {
String tableName = "TBL_" + generateRandomString();
String indexName = "IND_" + generateRandomString();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
- String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
TABLE_NAME = fullTableName;
String ddl ="CREATE TABLE " + TABLE_NAME + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
INDEX_DDL = "CREATE " + (localIndex ? "LOCAL" : "") + " INDEX IF NOT EXISTS " + indexName + " ON " + TABLE_NAME
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 331f977..7d7abef 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -497,7 +497,7 @@ public abstract class BaseTest {
return url;
}
- private static void teardownTxManager() throws SQLException {
+ private static void tearDownTxManager() throws SQLException {
try {
if (txService != null) txService.stopAndWait();
} finally {
@@ -506,6 +506,7 @@ public abstract class BaseTest {
} finally {
txService = null;
zkClient = null;
+ txManager = null;
}
}
@@ -539,14 +540,29 @@ public abstract class BaseTest {
txService.startAndWait();
}
- protected static String checkClusterInitialized(ReadOnlyProps overrideProps) throws Exception {
+ private static String checkClusterInitialized(ReadOnlyProps serverProps) throws Exception {
if (!clusterInitialized) {
- url = setUpTestCluster(config, overrideProps);
+ url = setUpTestCluster(config, serverProps);
clusterInitialized = true;
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ @Override
+ public void run() {
+ logger.info("SHUTDOWN: halting JVM now");
+ Runtime.getRuntime().halt(0);
+ }
+ });
}
return url;
}
+ private static void checkTxManagerInitialized(ReadOnlyProps clientProps) throws SQLException, IOException {
+ if (txService == null
+ && clientProps.getBoolean(QueryServices.TRANSACTIONS_ENABLED,
+ QueryServicesOptions.DEFAULT_TRANSACTIONS_ENABLED)) {
+ setupTxManager();
+ }
+ }
+
/**
* Set up the test hbase cluster.
* @return url to be used by clients to connect to the cluster.
@@ -561,16 +577,12 @@ public abstract class BaseTest {
}
protected static void destroyDriver() throws Exception {
- try {
- if (driver != null) {
- try {
- assertTrue(destroyDriver(driver));
- } finally {
- driver = null;
- }
+ if (driver != null) {
+ try {
+ assertTrue(destroyDriver(driver));
+ } finally {
+ driver = null;
}
- } finally {
- teardownTxManager();
}
}
@@ -587,16 +599,20 @@ public abstract class BaseTest {
destroyDriver();
} finally {
try {
- if (utility != null) {
- try {
- utility.shutdownMiniMapReduceCluster();
- } finally {
- utility.shutdownMiniCluster();
+ tearDownTxManager();
+ } finally {
+ try {
+ if (utility != null) {
+ try {
+ utility.shutdownMiniMapReduceCluster();
+ } finally {
+ utility.shutdownMiniCluster();
+ }
}
+ } finally {
+ utility = null;
+ clusterInitialized = false;
}
- } finally {
- utility = null;
- clusterInitialized = false;
}
}
}
@@ -607,11 +623,9 @@ public abstract class BaseTest {
protected static void setUpTestDriver(ReadOnlyProps serverProps, ReadOnlyProps clientProps) throws Exception {
String url = checkClusterInitialized(serverProps);
+ checkTxManagerInitialized(clientProps);
if (driver == null) {
driver = initAndRegisterTestDriver(url, clientProps);
- if (clientProps.getBoolean(QueryServices.TRANSACTIONS_ENABLED, QueryServicesOptions.DEFAULT_TRANSACTIONS_ENABLED)) {
- setupTxManager();
- }
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
----------------------------------------------------------------------
diff --git a/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java b/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
index 9b5988c..2d52fc2 100644
--- a/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
+++ b/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
@@ -20,8 +20,19 @@ package org.apache.phoenix.flume;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
-import org.apache.flume.*;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.util.Properties;
+
+import org.apache.flume.Channel;
+import org.apache.flume.Context;
+import org.apache.flume.Sink;
+import org.apache.flume.SinkFactory;
+import org.apache.flume.Transaction;
import org.apache.flume.channel.MemoryChannel;
import org.apache.flume.conf.Configurables;
import org.apache.flume.event.EventBuilder;
@@ -29,9 +40,9 @@ import org.apache.flume.lifecycle.LifecycleState;
import org.apache.flume.sink.DefaultSinkFactory;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.flume.serializer.EventSerializers;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
import org.apache.phoenix.flume.serializer.CustomSerializer;
+import org.apache.phoenix.flume.serializer.EventSerializers;
import org.apache.phoenix.flume.sink.NullPhoenixSink;
import org.apache.phoenix.flume.sink.PhoenixSink;
import org.apache.phoenix.util.PropertiesUtil;
@@ -39,16 +50,8 @@ import org.apache.phoenix.util.TestUtil;
import org.junit.Assert;
import org.junit.Test;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-public class PhoenixSinkIT extends ParallelStatsDisabledIT {
+public class PhoenixSinkIT extends BaseHBaseManagedTimeIT {
private Context sinkContext;
private PhoenixSink sink;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
----------------------------------------------------------------------
diff --git a/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java b/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
index eb3f9e8..7348a65 100644
--- a/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
+++ b/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
@@ -40,7 +40,7 @@ import org.apache.flume.conf.Configurables;
import org.apache.flume.event.EventBuilder;
import org.apache.flume.lifecycle.LifecycleState;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
import org.apache.phoenix.flume.serializer.EventSerializers;
import org.apache.phoenix.flume.sink.PhoenixSink;
import org.apache.phoenix.util.PropertiesUtil;
@@ -51,7 +51,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-public class RegexEventSerializerIT extends ParallelStatsDisabledIT {
+public class RegexEventSerializerIT extends BaseHBaseManagedTimeIT {
private Context sinkContext;
private PhoenixSink sink;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/ResultBaseTestIT.java
----------------------------------------------------------------------
diff --git a/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/ResultBaseTestIT.java b/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/ResultBaseTestIT.java
index c300701..1e77f48 100644
--- a/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/ResultBaseTestIT.java
+++ b/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/ResultBaseTestIT.java
@@ -18,7 +18,11 @@
package org.apache.phoenix.pherf;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
import org.apache.phoenix.pherf.configuration.XMLConfigParser;
import org.apache.phoenix.pherf.result.ResultUtil;
import org.apache.phoenix.pherf.schema.SchemaReader;
@@ -26,11 +30,7 @@ import org.apache.phoenix.pherf.util.PhoenixUtil;
import org.junit.AfterClass;
import org.junit.BeforeClass;
-import java.nio.file.Path;
-import java.util.List;
-import java.util.Properties;
-
-public class ResultBaseTestIT extends ParallelStatsDisabledIT {
+public class ResultBaseTestIT extends BaseHBaseManagedTimeIT {
protected static final String matcherScenario = ".*scenario/.*test.*xml";
protected static final String matcherSchema = ".*datamodel/.*test.*sql";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/SchemaReaderIT.java
----------------------------------------------------------------------
diff --git a/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/SchemaReaderIT.java b/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/SchemaReaderIT.java
index c2bfdc1..a897a46 100644
--- a/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/SchemaReaderIT.java
+++ b/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/SchemaReaderIT.java
@@ -30,7 +30,7 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
import org.apache.phoenix.pherf.configuration.Column;
import org.apache.phoenix.pherf.configuration.DataModel;
import org.apache.phoenix.pherf.configuration.Scenario;
@@ -40,7 +40,7 @@ import org.apache.phoenix.pherf.util.PhoenixUtil;
import org.junit.Test;
-public class SchemaReaderIT extends ParallelStatsDisabledIT {
+public class SchemaReaderIT extends BaseHBaseManagedTimeIT {
protected static PhoenixUtil util = PhoenixUtil.create(true);
@Test
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-pig/src/it/java/org/apache/phoenix/pig/BasePigIT.java
----------------------------------------------------------------------
diff --git a/phoenix-pig/src/it/java/org/apache/phoenix/pig/BasePigIT.java b/phoenix-pig/src/it/java/org/apache/phoenix/pig/BasePigIT.java
index 2840a62..94ccc25 100644
--- a/phoenix-pig/src/it/java/org/apache/phoenix/pig/BasePigIT.java
+++ b/phoenix-pig/src/it/java/org/apache/phoenix/pig/BasePigIT.java
@@ -27,7 +27,7 @@ import java.util.Map;
import java.util.Properties;
import org.apache.hadoop.conf.Configuration;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.query.QueryServicesOptions;
@@ -42,7 +42,7 @@ import org.junit.BeforeClass;
import com.google.common.collect.Maps;
-public class BasePigIT extends ParallelStatsDisabledIT {
+public class BasePigIT extends BaseHBaseManagedTimeIT {
protected TupleFactory tupleFactory;
protected String zkQuorum;
protected Connection conn;
@@ -50,7 +50,7 @@ public class BasePigIT extends ParallelStatsDisabledIT {
protected PigServer pigServer;
@BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
+ @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
props.put(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, QueryServicesOptions.DEFAULT_EXTRA_JDBC_ARGUMENTS);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/phoenix-queryserver/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-queryserver/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java b/phoenix-queryserver/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java
index 967e320..ba49bab 100644
--- a/phoenix-queryserver/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java
+++ b/phoenix-queryserver/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java
@@ -50,7 +50,7 @@ import org.junit.Test;
/**
* Smoke test for query server.
*/
-public class QueryServerBasicsIT extends ParallelStatsDisabledIT {
+public class QueryServerBasicsIT extends BaseHBaseManagedTimeIT {
private static final Log LOG = LogFactory.getLog(QueryServerBasicsIT.class);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ad07077c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f02eb7b..987b19a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,7 +118,7 @@
<!-- Plugin options -->
<numForkedUT>3</numForkedUT>
- <numForkedIT>5</numForkedIT>
+ <numForkedIT>6</numForkedIT>
<!-- Set default encoding so multi-byte tests work correctly on the Mac -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -316,12 +316,6 @@
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.HBaseManagedTimeTest</groups>
<shutdown>kill</shutdown>
- <properties>
- <property>
- <name>listener</name>
- <value>org.apache.phoenix.end2end.ParallelRunListener</value>
- </property>
- </properties>
</configuration>
<goals>
<goal>integration-test</goal>
@@ -329,8 +323,8 @@
</goals>
</execution>
<execution>
- <id>NeedTheirOwnClusterTests</id>
- <configuration>
+ <id>NeedTheirOwnClusterTests</id>
+ <configuration>
<encoding>UTF-8</encoding>
<forkCount>${numForkedIT}</forkCount>
<runOrder>alphabetical</runOrder>
@@ -340,11 +334,17 @@
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.NeedsOwnMiniClusterTest</groups>
<shutdown>kill</shutdown>
- </configuration>
- <goals>
+ <properties>
+ <property>
+ <name>listener</name>
+ <value>org.apache.phoenix.end2end.ParallelRunListener</value>
+ </property>
+ </properties>
+ </configuration>
+ <goals>
<goal>integration-test</goal>
<goal>verify</goal>
- </goals>
+ </goals>
</execution>
</executions>
</plugin>
[02/48] phoenix git commit: PHOENIX-3290 Move and/or combine as many
NeedsOwnCluster tests to bring down test run time
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
index dbe767b..f26e6dd 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDMLIT.java
@@ -28,13 +28,11 @@ import static org.junit.Assert.fail;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.List;
import java.util.Properties;
import org.apache.phoenix.query.KeyRange;
import org.apache.phoenix.schema.TableNotFoundException;
-import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
import org.junit.Test;
@@ -43,23 +41,20 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testSelectWithLimit() throws Exception {
- Connection conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, PropertiesUtil.deepCopy(TEST_PROPERTIES));
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM " + TENANT_TABLE_NAME + " LIMIT 100");
while(rs.next()) {}
}
@Test
public void testBasicUpsertSelect() throws Exception {
- Connection conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, PropertiesUtil.deepCopy(TEST_PROPERTIES));
try {
conn.setAutoCommit(false);
conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col) values (1, 'Cheap Sunglasses')");
conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col) values (2, 'Viva Las Vegas')");
conn.commit();
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
analyzeTable(conn, TENANT_TABLE_NAME);
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
ResultSet rs = conn.createStatement().executeQuery("select tenant_col from " + TENANT_TABLE_NAME + " where id = 1");
assertTrue("Expected 1 row in result set", rs.next());
assertEquals("Cheap Sunglasses", rs.getString(1));
@@ -72,49 +67,37 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testBasicUpsertSelect2() throws Exception {
- Connection conn1 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL2, TENANT_TABLE_DDL, null, nextTimestamp());
- Connection conn2 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2);
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn1 = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL2, TENANT_TABLE_DDL);
+ Connection conn2 = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2, props);
try {
conn1.setAutoCommit(false);
conn1.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " values ('me','" + TENANT_TYPE_ID + "',1,'Cheap Sunglasses')");
conn1.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " values ('you','" + TENANT_TYPE_ID +"',2,'Viva Las Vegas')");
conn1.commit();
- conn1 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
analyzeTable(conn1, TENANT_TABLE_NAME);
- conn1 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
conn2.setAutoCommit(true);
conn2.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " values ('them','" + TENANT_TYPE_ID + "',1,'Long Hair')");
conn2.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " values ('us','" + TENANT_TYPE_ID + "',2,'Black Hat')");
- conn2.close();
- conn1.close();
- conn1 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
ResultSet rs = conn1.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME + " where id = 1");
assertTrue("Expected 1 row in result set", rs.next());
assertEquals(1, rs.getInt(3));
assertEquals("Cheap Sunglasses", rs.getString(4));
assertFalse("Expected 1 row in result set", rs.next());
- conn2 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2);
analyzeTable(conn2, TENANT_TABLE_NAME);
- conn2 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2);
rs = conn2.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME + " where id = 2");
assertTrue("Expected 1 row in result set", rs.next());
assertEquals(2, rs.getInt(3));
assertEquals("Black Hat", rs.getString(4));
assertFalse("Expected 1 row in result set", rs.next());
- conn2.close();
- conn1 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
analyzeTable(conn1, TENANT_TABLE_NAME);
- conn1.close();
- conn2 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2);
conn2.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " select * from " + TENANT_TABLE_NAME );
conn2.commit();
- conn2.close();
- conn2 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2);
rs = conn2.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME);
assertTrue("Expected row in result set", rs.next());
assertEquals(1, rs.getInt(3));
@@ -123,14 +106,10 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
assertEquals(2, rs.getInt(3));
assertEquals("Black Hat", rs.getString(4));
assertFalse("Expected 2 rows total", rs.next());
- conn2.close();
- conn2 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2);
conn2.setAutoCommit(true);;
conn2.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " select 'all', tenant_type_id, id, 'Big ' || tenant_col from " + TENANT_TABLE_NAME );
- conn2.close();
- conn2 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2);
analyzeTable(conn2, TENANT_TABLE_NAME);
rs = conn2.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME);
assertTrue("Expected row in result set", rs.next());
@@ -144,8 +123,6 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
assertEquals(2, rs.getInt(3));
assertEquals("Big Black Hat", rs.getString(4));
assertFalse("Expected 2 rows total", rs.next());
- conn2.close();
- conn1 = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
rs = conn1.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME);
assertTrue("Expected row row in result set", rs.next());
assertEquals(1, rs.getInt(3));
@@ -163,34 +140,23 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
}
}
- private Connection nextConnection(String url) throws SQLException {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
- return DriverManager.getConnection(url, props);
- }
-
@Test
public void testJoinWithGlobalTable() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute("create table foo (k INTEGER NOT NULL PRIMARY KEY)");
- conn.close();
- conn = nextConnection(getUrl());
conn.createStatement().execute("upsert into foo(k) values(1)");
conn.commit();
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
conn.setAutoCommit(false);
conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col) values (1, 'Cheap Sunglasses')");
conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col) values (2, 'Viva Las Vegas')");
conn.commit();
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
analyzeTable(conn, TENANT_TABLE_NAME);
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
ResultSet rs = conn.createStatement().executeQuery("select tenant_col from " + TENANT_TABLE_NAME + " join foo on k=id");
assertTrue("Expected 1 row in result set", rs.next());
assertEquals("Cheap Sunglasses", rs.getString(1));
@@ -203,20 +169,16 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testSelectOnlySeesTenantData() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('AC/DC', 'abc', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', '" + TENANT_TYPE_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', 'def', 1, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
ResultSet rs = conn.createStatement().executeQuery("select user from " + TENANT_TABLE_NAME);
assertTrue("Expected 1 row in result set", rs.next());
assertEquals("Billy Gibbons", rs.getString(1));
@@ -235,34 +197,24 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testDeleteOnlyDeletesTenantData() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('AC/DC', 'abc', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', '" + TENANT_TYPE_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', 'def', 1, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
conn.setAutoCommit(true);
int count = conn.createStatement().executeUpdate("delete from " + TENANT_TABLE_NAME);
assertEquals("Expected 1 row have been deleted", 1, count);
- conn.close();
-
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
ResultSet rs = conn.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME);
assertFalse("Expected no rows in result set", rs.next());
- conn.close();
- conn = nextConnection(getUrl());
+ conn = DriverManager.getConnection(getUrl(), props);
analyzeTable(conn, PARENT_TABLE_NAME);
- conn = nextConnection(getUrl());
rs = conn.createStatement().executeQuery("select count(*) from " + PARENT_TABLE_NAME);
rs.next();
assertEquals(2, rs.getInt(1));
@@ -274,38 +226,25 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testDeleteWhenImmutableIndex() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('AC/DC', 'abc', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', '" + TENANT_TYPE_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', 'def', 1, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.createStatement().executeUpdate("create index idx1 on " + TENANT_TABLE_NAME + "(user)");
- conn.close();
-
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
- int count = conn.createStatement().executeUpdate("delete from " + TENANT_TABLE_NAME + " where user='Billy Gibbons'");
+ Connection tsConn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
+ tsConn.setAutoCommit(true);
+ tsConn.createStatement().executeUpdate("create index idx1 on " + TENANT_TABLE_NAME + "(user)");
+ int count = tsConn.createStatement().executeUpdate("delete from " + TENANT_TABLE_NAME + " where user='Billy Gibbons'");
assertEquals("Expected 1 row have been deleted", 1, count);
- conn.close();
-
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
- ResultSet rs = conn.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME);
+ ResultSet rs = tsConn.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME);
assertFalse("Expected no rows in result set", rs.next());
- conn.close();
+ tsConn.close();
- conn = nextConnection(getUrl());
analyzeTable(conn, PARENT_TABLE_NAME);
- conn = nextConnection(getUrl());
rs = conn.createStatement().executeQuery("select count(*) from " + PARENT_TABLE_NAME);
rs.next();
assertEquals(2, rs.getInt(1));
@@ -317,30 +256,22 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testDeleteOnlyDeletesTenantDataWithNoTenantTypeId() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " (tenant_id, id, user) values ('AC/DC', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " (tenant_id, id, user) values ('" + TENANT_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " (tenant_id, id, user) values ('" + TENANT_ID + "', 2, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
- int count = conn.createStatement().executeUpdate("delete from " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
+ Connection tsConn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
+ tsConn.setAutoCommit(true);
+ int count = tsConn.createStatement().executeUpdate("delete from " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
assertEquals("Expected 2 rows have been deleted", 2, count);
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- ResultSet rs = conn.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
+ ResultSet rs = tsConn.createStatement().executeQuery("select * from " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
assertFalse("Expected no rows in result set", rs.next());
- conn.close();
- conn = nextConnection(getUrl());
rs = conn.createStatement().executeQuery("select count(*) from " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID);
rs.next();
assertEquals(1, rs.getInt(1));
@@ -352,146 +283,121 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testDeleteAllTenantTableData() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection tsConn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('AC/DC', 'abc', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', '" + TENANT_TYPE_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', 'def', 1, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- analyzeTable(conn, PARENT_TABLE_NAME);
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.createStatement().execute("delete from " + TENANT_TABLE_NAME);
- conn.commit();
- conn.close();
+ analyzeTable(tsConn, PARENT_TABLE_NAME);
+ tsConn.createStatement().execute("delete from " + TENANT_TABLE_NAME);
+ tsConn.commit();
- conn = nextConnection(getUrl());
ResultSet rs = conn.createStatement().executeQuery("select count(*) from " + PARENT_TABLE_NAME);
rs.next();
assertEquals(2, rs.getInt(1));
}
finally {
- conn.close();
+ if (conn != null) conn.close();
+ if (tsConn != null) tsConn.close();
}
}
@Test
public void testDropTenantTableDeletesNoData() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection tsConn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " (tenant_id, id, user) values ('AC/DC', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " (tenant_id, id, user) values ('" + TENANT_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID + " (tenant_id, id, user) values ('" + TENANT_ID + "', 2, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.createStatement().execute("drop view " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
- conn.close();
+ tsConn.createStatement().execute("drop view " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
- conn = nextConnection(getUrl());
analyzeTable(conn, PARENT_TABLE_NAME_NO_TENANT_TYPE_ID);
- conn = nextConnection(getUrl());
ResultSet rs = conn.createStatement().executeQuery("select count(*) from " + PARENT_TABLE_NAME_NO_TENANT_TYPE_ID);
rs.next();
assertEquals(3, rs.getInt(1));
}
finally {
- conn.close();
+ if (conn != null) conn.close();
+ if (tsConn != null) tsConn.close();
}
}
@Test
public void testUpsertSelectOnlyUpsertsTenantData() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection tsConn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('AC/DC', 'aaa', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', '" + TENANT_TYPE_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', 'def', 2, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- analyzeTable(conn, TENANT_TABLE_NAME);
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
- int count = conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + "(id, user) select id+100, user from " + TENANT_TABLE_NAME);
+ analyzeTable(tsConn, TENANT_TABLE_NAME);
+ int count = tsConn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + "(id, user) select id+100, user from " + TENANT_TABLE_NAME);
+ tsConn.commit();
assertEquals("Expected 1 row to have been inserted", 1, count);
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- ResultSet rs = conn.createStatement().executeQuery("select count(*) from " + TENANT_TABLE_NAME);
+ ResultSet rs = tsConn.createStatement().executeQuery("select count(*) from " + TENANT_TABLE_NAME);
rs.next();
assertEquals(2, rs.getInt(1));
}
finally {
- conn.close();
+ if (conn != null) conn.close();
+ if (tsConn != null) tsConn.close();
}
}
@Test
public void testUpsertSelectOnlyUpsertsTenantDataWithDifferentTenantTable() throws Exception {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW ANOTHER_TENANT_TABLE ( " +
- "tenant_col VARCHAR) AS SELECT * FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'def'", null, nextTimestamp(), false);
+ String anotherTableName = "V_" + generateRandomString();
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + anotherTableName + " ( " +
+ "tenant_col VARCHAR) AS SELECT * FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'def'");
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ Connection tsConn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
conn.setAutoCommit(true);
conn.createStatement().executeUpdate("delete from " + PARENT_TABLE_NAME);
- conn.close();
-
- conn = nextConnection(getUrl());
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('AC/DC', 'aaa', 1, 'Bon Scott')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', '" + TENANT_TYPE_ID + "', 1, 'Billy Gibbons')");
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_id, tenant_type_id, id, user) values ('" + TENANT_ID + "', 'def', 2, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- analyzeTable(conn, TENANT_TABLE_NAME);
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
- int count = conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + "(id, user) select id+100, user from ANOTHER_TENANT_TABLE where id=2");
+ analyzeTable(tsConn, TENANT_TABLE_NAME);
+ tsConn.setAutoCommit(true);
+ int count = tsConn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + "(id, user)"
+ + "select id+100, user from " + anotherTableName + " where id=2");
assertEquals("Expected 1 row to have been inserted", 1, count);
- conn.close();
-
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- ResultSet rs = conn.createStatement().executeQuery("select count(*) from " + TENANT_TABLE_NAME);
+ ResultSet rs = tsConn.createStatement().executeQuery("select count(*) from " + TENANT_TABLE_NAME);
rs.next();
assertEquals(2, rs.getInt(1));
}
finally {
- conn.close();
+ if (conn != null) conn.close();
+ if (tsConn != null) tsConn.close();
}
}
@Test
public void testUpsertValuesOnlyUpsertsTenantData() throws Exception {
- Connection conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
- conn.setAutoCommit(true);
int count = conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " (id, user) values (1, 'Bon Scott')");
+ conn.commit();
assertEquals("Expected 1 row to have been inserted", 1, count);
- conn.close();
-
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
ResultSet rs = conn.createStatement().executeQuery("select count(*) from " + TENANT_TABLE_NAME);
rs.next();
assertEquals(1, rs.getInt(1));
@@ -503,19 +409,14 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testBaseTableCanBeUsedInStatementsInMultitenantConnections() throws Exception {
- Connection conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
ResultSet rs = conn.createStatement().executeQuery("select * from " + PARENT_TABLE_NAME);
assertFalse(rs.next());
- conn.close();
-
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
conn.createStatement().executeUpdate("upsert into " + PARENT_TABLE_NAME + " (tenant_type_id, id, user) values ('" + TENANT_TYPE_ID + "', 1, 'Billy Gibbons')");
- conn.close();
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
+ conn.commit();
analyzeTable(conn, PARENT_TABLE_NAME);
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
rs = conn.createStatement().executeQuery("select user from " + PARENT_TABLE_NAME);
assertTrue(rs.next());
assertEquals(rs.getString(1),"Billy Gibbons");
@@ -528,7 +429,8 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testTenantTableCannotBeUsedInStatementsInNonMultitenantConnections() throws Exception {
- Connection conn = nextConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
try {
try {
conn.createStatement().execute("select * from " + TENANT_TABLE_NAME);
@@ -543,16 +445,17 @@ public class TenantSpecificTablesDMLIT extends BaseTenantSpecificTablesIT {
@Test
public void testUpsertValuesUsingViewWithNoWhereClause() throws Exception {
- Connection conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- conn.setAutoCommit(true);
- conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID + " (id) values (0)");
- conn.close();
-
- conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL);
- ResultSet rs = conn.createStatement().executeQuery("select id from " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
- assertTrue(rs.next());
- assertEquals(0, rs.getInt(1));
- assertFalse(rs.next());
- conn.close();
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
+ try {
+ conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID + " (id) values (0)");
+ conn.commit();
+ ResultSet rs = conn.createStatement().executeQuery("select id from " + TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
+ assertTrue(rs.next());
+ assertEquals(0, rs.getInt(1));
+ assertFalse(rs.next());
+ } finally {
+ conn.close();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
index e5cd578..95e7266 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TransactionalViewIT.java
@@ -30,14 +30,21 @@ import java.util.Map;
import org.apache.phoenix.query.KeyRange;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.google.common.collect.Maps;
-public class TransactionalViewIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class TransactionalViewIT extends ParallelStatsEnabledIT {
+
+ private String fullTableName;
+ private String fullViewName;
@BeforeClass
+ @Shadower(classBeingShadowed = ParallelStatsEnabledIT.class)
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Integer.toString(20));
@@ -45,36 +52,46 @@ public class TransactionalViewIT extends BaseOwnClusterHBaseManagedTimeIT {
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
+ @Before
+ public void generateTableNames() {
+ String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
+ String tableName = "T_" + generateRandomString();
+ fullTableName = SchemaUtil.getTableName(schemaName, tableName);
+ String viewName = "V_" + generateRandomString();
+ fullViewName = SchemaUtil.getTableName(schemaName, viewName);
+ }
+
@Test
public void testReadOwnWritesWithStats() throws Exception {
try (Connection conn1 = DriverManager.getConnection(getUrl());
Connection conn2 = DriverManager.getConnection(getUrl())) {
- String ddl = "CREATE TABLE t (k INTEGER NOT NULL PRIMARY KEY, v1 DATE) TRANSACTIONAL=true";
+ String ddl = "CREATE TABLE " + fullTableName
+ + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE) TRANSACTIONAL=true";
conn1.createStatement().execute(ddl);
- ddl = "CREATE VIEW v (v2 VARCHAR) AS SELECT * FROM t where k>5";
+ ddl = "CREATE VIEW " + fullViewName + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " where k>5";
conn1.createStatement().execute(ddl);
for (int i = 0; i < 10; i++) {
- conn1.createStatement().execute("UPSERT INTO t VALUES(" + i + ")");
+ conn1.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES(" + i + ")");
}
// verify you can read your own writes
int count = 0;
- ResultSet rs = conn1.createStatement().executeQuery("SELECT k FROM t");
+ ResultSet rs = conn1.createStatement().executeQuery("SELECT k FROM " + fullTableName);
while (rs.next()) {
assertEquals(count++, rs.getInt(1));
}
assertEquals(10, count);
count = 0;
- rs = conn1.createStatement().executeQuery("SELECT k FROM v");
+ rs = conn1.createStatement().executeQuery("SELECT k FROM " + fullViewName);
while (rs.next()) {
assertEquals(6+count++, rs.getInt(1));
}
assertEquals(4, count);
// verify stats can see the read own writes rows
- analyzeTable(conn2, "v", true);
- List<KeyRange> splits = getAllSplits(conn2, "v");
+ analyzeTable(conn2, fullViewName, true);
+ List<KeyRange> splits = getAllSplits(conn2, fullViewName);
assertEquals(4, splits.size());
}
}
@@ -83,24 +100,25 @@ public class TransactionalViewIT extends BaseOwnClusterHBaseManagedTimeIT {
public void testInvalidRowsWithStats() throws Exception {
try (Connection conn1 = DriverManager.getConnection(getUrl());
Connection conn2 = DriverManager.getConnection(getUrl())) {
- String ddl = "CREATE TABLE t (k INTEGER NOT NULL PRIMARY KEY, v1 DATE) TRANSACTIONAL=true";
+ String ddl = "CREATE TABLE " + fullTableName
+ + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE) TRANSACTIONAL=true";
conn1.createStatement().execute(ddl);
- ddl = "CREATE VIEW v (v2 VARCHAR) AS SELECT * FROM t where k>5";
+ ddl = "CREATE VIEW " + fullViewName + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " where k>5";
conn1.createStatement().execute(ddl);
for (int i = 0; i < 10; i++) {
- conn1.createStatement().execute("UPSERT INTO t VALUES(" + i + ")");
+ conn1.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES(" + i + ")");
}
// verify you can read your own writes
int count = 0;
- ResultSet rs = conn1.createStatement().executeQuery("SELECT k FROM t");
+ ResultSet rs = conn1.createStatement().executeQuery("SELECT k FROM " + fullTableName);
while (rs.next()) {
assertEquals(count++, rs.getInt(1));
}
assertEquals(10, count);
count = 0;
- rs = conn1.createStatement().executeQuery("SELECT k FROM v");
+ rs = conn1.createStatement().executeQuery("SELECT k FROM " + fullViewName);
while (rs.next()) {
assertEquals(6+count++, rs.getInt(1));
}
@@ -110,8 +128,8 @@ public class TransactionalViewIT extends BaseOwnClusterHBaseManagedTimeIT {
// assertEquals("There should be one invalid transaction", 1, txManager.getInvalidSize());
// verify stats can see the rows from the invalid transaction
- analyzeTable(conn2, "v", true);
- List<KeyRange> splits = getAllSplits(conn2, "v");
+ analyzeTable(conn2, fullViewName, true);
+ List<KeyRange> splits = getAllSplits(conn2, fullViewName);
assertEquals(4, splits.size());
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
index bdd94a2..84fa217 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
@@ -34,6 +34,8 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -62,24 +64,30 @@ import org.apache.phoenix.util.MetaDataUtil;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.UpgradeUtil;
+import org.junit.Before;
import org.junit.Test;
-public class UpgradeIT extends BaseHBaseManagedTimeIT {
+public class UpgradeIT extends ParallelStatsDisabledIT {
- private static String TENANT_ID = "tenantId";
+ private String tenantId;
+
+ @Before
+ public void generateTenantId() {
+ tenantId = "T_" + generateRandomString();
+ }
@Test
public void testUpgradeForTenantViewWithSameColumnsAsBaseTable() throws Exception {
String tableWithViewName = generateRandomString();
String viewTableName = generateRandomString();
- testViewUpgrade(true, TENANT_ID, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.EQUAL);
- testViewUpgrade(true, TENANT_ID, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
+ testViewUpgrade(true, tenantId, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.EQUAL);
+ testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
ColumnDiff.EQUAL);
- testViewUpgrade(true, TENANT_ID, null, tableWithViewName + "3", viewTableName + "SCHEMA", viewTableName + "3",
+ testViewUpgrade(true, tenantId, null, tableWithViewName + "3", viewTableName + "SCHEMA", viewTableName + "3",
ColumnDiff.EQUAL);
- testViewUpgrade(true, TENANT_ID, "TABLESCHEMA", tableWithViewName + "4", viewTableName + "SCHEMA", viewTableName + "4",
+ testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "4", viewTableName + "SCHEMA", viewTableName + "4",
ColumnDiff.EQUAL);
- testViewUpgrade(true, TENANT_ID, "SAMESCHEMA", tableWithViewName + "5", "SAMESCHEMA", viewTableName + "5",
+ testViewUpgrade(true, tenantId, "SAMESCHEMA", tableWithViewName + "5", "SAMESCHEMA", viewTableName + "5",
ColumnDiff.EQUAL);
}
@@ -87,14 +95,14 @@ public class UpgradeIT extends BaseHBaseManagedTimeIT {
public void testUpgradeForTenantViewWithMoreColumnsThanBaseTable() throws Exception {
String tableWithViewName = generateRandomString();
String viewTableName = generateRandomString();
- testViewUpgrade(true, TENANT_ID, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.MORE);
- testViewUpgrade(true, TENANT_ID, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
+ testViewUpgrade(true, tenantId, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.MORE);
+ testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
ColumnDiff.MORE);
- testViewUpgrade(true, TENANT_ID, null, tableWithViewName + "3", "VIEWSCHEMA", viewTableName + "3",
+ testViewUpgrade(true, tenantId, null, tableWithViewName + "3", "VIEWSCHEMA", viewTableName + "3",
ColumnDiff.MORE);
- testViewUpgrade(true, TENANT_ID, "TABLESCHEMA", tableWithViewName + "4", "VIEWSCHEMA", viewTableName + "4",
+ testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "4", "VIEWSCHEMA", viewTableName + "4",
ColumnDiff.MORE);
- testViewUpgrade(true, TENANT_ID, "SAMESCHEMA", tableWithViewName + "5", "SAMESCHEMA", viewTableName + "5",
+ testViewUpgrade(true, tenantId, "SAMESCHEMA", tableWithViewName + "5", "SAMESCHEMA", viewTableName + "5",
ColumnDiff.MORE);
}
@@ -130,14 +138,14 @@ public class UpgradeIT extends BaseHBaseManagedTimeIT {
public void testSettingBaseColumnCountWhenBaseTableColumnDropped() throws Exception {
String tableWithViewName = generateRandomString();
String viewTableName = generateRandomString();
- testViewUpgrade(true, TENANT_ID, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.MORE);
- testViewUpgrade(true, TENANT_ID, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
+ testViewUpgrade(true, tenantId, null, tableWithViewName + "1", null, viewTableName + "1", ColumnDiff.MORE);
+ testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "", null, viewTableName + "2",
ColumnDiff.LESS);
- testViewUpgrade(true, TENANT_ID, null, tableWithViewName + "3", "VIEWSCHEMA", viewTableName + "3",
+ testViewUpgrade(true, tenantId, null, tableWithViewName + "3", "VIEWSCHEMA", viewTableName + "3",
ColumnDiff.LESS);
- testViewUpgrade(true, TENANT_ID, "TABLESCHEMA", tableWithViewName + "4", "VIEWSCHEMA", viewTableName + "4",
+ testViewUpgrade(true, tenantId, "TABLESCHEMA", tableWithViewName + "4", "VIEWSCHEMA", viewTableName + "4",
ColumnDiff.LESS);
- testViewUpgrade(true, TENANT_ID, "SAMESCHEMA", tableWithViewName + "5", "SAMESCHEMA", viewTableName + "5",
+ testViewUpgrade(true, tenantId, "SAMESCHEMA", tableWithViewName + "5", "SAMESCHEMA", viewTableName + "5",
ColumnDiff.LESS);
}
@@ -385,19 +393,24 @@ public class UpgradeIT extends BaseHBaseManagedTimeIT {
@Test
public void testSettingBaseColumnCountForMultipleViewsOnTable() throws Exception {
- String baseSchema = "XYZ";
- String baseTable = "BASE_TABLE";
+ String baseSchema = "S_" + generateRandomString();
+ String baseTable = "T_" + generateRandomString();
String fullBaseTableName = SchemaUtil.getTableName(baseSchema, baseTable);
try (Connection conn = DriverManager.getConnection(getUrl())) {
String baseTableDDL = "CREATE TABLE " + fullBaseTableName + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 INTEGER, V2 INTEGER CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT = true";
conn.createStatement().execute(baseTableDDL);
- for (int i = 1; i <=2; i++) {
+ String[] tenants = new String[] {"T_" + generateRandomString(), "T_" + generateRandomString()};
+ Collections.sort(Arrays.asList(tenants));
+ String[] tenantViews = new String[] {"V_" + generateRandomString(), "V_" + generateRandomString(), "V_" + generateRandomString()};
+ Collections.sort(Arrays.asList(tenantViews));
+ String[] globalViews = new String[] {"G_" + generateRandomString(), "G_" + generateRandomString(), "G_" + generateRandomString()};
+ Collections.sort(Arrays.asList(globalViews));
+ for (int i = 0; i < 2; i++) {
// Create views for tenants;
- String tenant = "tenant" + i;
+ String tenant = tenants[i];
try (Connection tenantConn = createTenantConnection(tenant)) {
- String view = "TENANT_VIEW1";
-
+ String view = tenantViews[0];
// view with its own column
String viewDDL = "CREATE VIEW " + view + " AS SELECT * FROM " + fullBaseTableName;
tenantConn.createStatement().execute(viewDDL);
@@ -406,7 +419,7 @@ public class UpgradeIT extends BaseHBaseManagedTimeIT {
removeBaseColumnCountKV(tenant, null, view);
// view that has the last base table column removed
- view = "TENANT_VIEW2";
+ view = tenantViews[1];
viewDDL = "CREATE VIEW " + view + " AS SELECT * FROM " + fullBaseTableName;
tenantConn.createStatement().execute(viewDDL);
String droplastBaseCol = "ALTER VIEW " + view + " DROP COLUMN V2";
@@ -414,7 +427,7 @@ public class UpgradeIT extends BaseHBaseManagedTimeIT {
removeBaseColumnCountKV(tenant, null, view);
// view that has the middle base table column removed
- view = "TENANT_VIEW3";
+ view = tenantViews[2];
viewDDL = "CREATE VIEW " + view + " AS SELECT * FROM " + fullBaseTableName;
tenantConn.createStatement().execute(viewDDL);
String dropMiddileBaseCol = "ALTER VIEW " + view + " DROP COLUMN V1";
@@ -425,47 +438,46 @@ public class UpgradeIT extends BaseHBaseManagedTimeIT {
// create global views
try (Connection globalConn = DriverManager.getConnection(getUrl())) {
- String view = "GLOBAL_VIEW1";
-
+ String globalView = globalViews[0];
// view with its own column
- String viewDDL = "CREATE VIEW " + view + " AS SELECT * FROM " + fullBaseTableName;
+ String viewDDL = "CREATE VIEW " + globalView + " AS SELECT * FROM " + fullBaseTableName;
globalConn.createStatement().execute(viewDDL);
- String addCols = "ALTER VIEW " + view + " ADD COL1 VARCHAR ";
+ String addCols = "ALTER VIEW " + globalView + " ADD COL1 VARCHAR ";
globalConn.createStatement().execute(addCols);
- removeBaseColumnCountKV(null, null, view);
+ removeBaseColumnCountKV(null, null, globalView);
// view that has the last base table column removed
- view = "GLOBAL_VIEW2";
- viewDDL = "CREATE VIEW " + view + " AS SELECT * FROM " + fullBaseTableName;
+ globalView = globalViews[1];
+ viewDDL = "CREATE VIEW " + globalView + " AS SELECT * FROM " + fullBaseTableName;
globalConn.createStatement().execute(viewDDL);
- String droplastBaseCol = "ALTER VIEW " + view + " DROP COLUMN V2";
+ String droplastBaseCol = "ALTER VIEW " + globalView + " DROP COLUMN V2";
globalConn.createStatement().execute(droplastBaseCol);
- removeBaseColumnCountKV(null, null, view);
+ removeBaseColumnCountKV(null, null, globalView);
// view that has the middle base table column removed
- view = "GLOBAL_VIEW3";
- viewDDL = "CREATE VIEW " + view + " AS SELECT * FROM " + fullBaseTableName;
+ globalView = globalViews[2];
+ viewDDL = "CREATE VIEW " + globalView + " AS SELECT * FROM " + fullBaseTableName;
globalConn.createStatement().execute(viewDDL);
- String dropMiddileBaseCol = "ALTER VIEW " + view + " DROP COLUMN V1";
+ String dropMiddileBaseCol = "ALTER VIEW " + globalView + " DROP COLUMN V1";
globalConn.createStatement().execute(dropMiddileBaseCol);
- removeBaseColumnCountKV(null, null, view);
+ removeBaseColumnCountKV(null, null, globalView);
}
// run upgrade
UpgradeUtil.upgradeTo4_5_0(conn.unwrap(PhoenixConnection.class));
// Verify base column counts for tenant specific views
- for (int i = 1; i <=2 ; i++) {
- String tenantId = "tenant" + i;
- checkBaseColumnCount(tenantId, null, "TENANT_VIEW1", 4);
- checkBaseColumnCount(tenantId, null, "TENANT_VIEW2", DIVERGED_VIEW_BASE_COLUMN_COUNT);
- checkBaseColumnCount(tenantId, null, "TENANT_VIEW3", DIVERGED_VIEW_BASE_COLUMN_COUNT);
+ for (int i = 0; i < 2 ; i++) {
+ String tenantId = tenants[i];
+ checkBaseColumnCount(tenantId, null, tenantViews[0], 4);
+ checkBaseColumnCount(tenantId, null, tenantViews[1], DIVERGED_VIEW_BASE_COLUMN_COUNT);
+ checkBaseColumnCount(tenantId, null, tenantViews[2], DIVERGED_VIEW_BASE_COLUMN_COUNT);
}
// Verify base column count for global views
- checkBaseColumnCount(null, null, "GLOBAL_VIEW1", 4);
- checkBaseColumnCount(null, null, "GLOBAL_VIEW2", DIVERGED_VIEW_BASE_COLUMN_COUNT);
- checkBaseColumnCount(null, null, "GLOBAL_VIEW3", DIVERGED_VIEW_BASE_COLUMN_COUNT);
+ checkBaseColumnCount(null, null, globalViews[0], 4);
+ checkBaseColumnCount(null, null, globalViews[1], DIVERGED_VIEW_BASE_COLUMN_COUNT);
+ checkBaseColumnCount(null, null, globalViews[2], DIVERGED_VIEW_BASE_COLUMN_COUNT);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
index 2565223..9f53d12 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
@@ -65,12 +65,13 @@ import org.apache.phoenix.schema.ValueRangeExcpetion;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
+import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
import com.google.common.collect.Maps;
-public class UserDefinedFunctionsIT extends BaseOwnClusterIT{
+public class UserDefinedFunctionsIT extends BaseOwnClusterIT {
protected static final String TENANT_ID = "ZZTop";
private static String url;
@@ -190,6 +191,10 @@ public class UserDefinedFunctionsIT extends BaseOwnClusterIT{
private static Properties EMPTY_PROPS = new Properties();
+ @Override
+ @After
+ public void cleanUpAfterTest() throws Exception {}
+
private static String getProgram(String className, String evaluateMethod, String returnType) {
return new StringBuffer()
.append("package org.apache.phoenix.end2end;\n")
[46/48] phoenix git commit: Merge remote-tracking branch
'origin/master' into calcite
Posted by ma...@apache.org.
Merge remote-tracking branch 'origin/master' into calcite
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/587a07b6
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/587a07b6
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/587a07b6
Branch: refs/heads/calcite
Commit: 587a07b6a4b5aa163acefccd9b1ecfb8d71418cc
Parents: 7ca8e4b ad99952
Author: maryannxue <ma...@gmail.com>
Authored: Fri Oct 7 12:01:38 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Fri Oct 7 12:01:38 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/SortMergeJoinIT.java | 324 ++++++++++++-------
.../org/apache/phoenix/end2end/SubqueryIT.java | 99 +++---
.../end2end/SubqueryUsingSortMergeJoinIT.java | 54 ++--
.../expression/ArrayConstructorExpression.java | 5 +-
.../ArrayConstructorExpressionTest.java | 63 ++++
5 files changed, 363 insertions(+), 182 deletions(-)
----------------------------------------------------------------------
[23/48] phoenix git commit: PHOENIX-3153 Convert join-related IT
tests to be derived from BaseHBaseManagedTimeTableReuseIT
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
index 435c649..b5e1c7e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java
@@ -17,17 +17,6 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.JOIN_COITEM_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_COITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SCHEMA;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -35,71 +24,28 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.sql.Connection;
-import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
-import java.util.regex.Pattern;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.schema.TableAlreadyExistsException;
-import org.apache.phoenix.util.MetaDataUtil;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.Before;
-import org.junit.BeforeClass;
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;
-import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
-
- private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- private String[] indexDDL;
- private String[] plans;
-
+public class SubqueryUsingSortMergeJoinIT extends BaseJoinIT {
+
public SubqueryUsingSortMergeJoinIT(String[] indexDDL, String[] plans) {
- this.indexDDL = indexDDL;
- this.plans = plans;
- }
-
- @BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- @Before
- public void initTable() throws Exception {
- initTableValues();
- if (indexDDL != null && indexDDL.length > 0) {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- for (String ddl : indexDDL) {
- try {
- conn.createStatement().execute(ddl);
- } catch (TableAlreadyExistsException e) {
- }
- }
- conn.close();
- }
+ super(indexDDL, plans);
}
@Parameters
@@ -109,52 +55,52 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
{}, {
"SORT-MERGE-JOIN (SEMI) TABLES\n" +
" SORT-MERGE-JOIN (INNER) TABLES\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER SORTED BY [\"I.supplier_id\"]\n" +
" CLIENT MERGE SORT\n" +
" AND\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + "\n" +
" CLIENT SORTED BY [\"I.item_id\"]\n" +
"AND (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " ['000000000000001'] - [*]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + " ['000000000000001'] - [*]\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [I.NAME]",
"SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" +
" SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" +
- " CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_FULL_NAME + "\n" +
" CLIENT MERGE SORT\n" +
" AND\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\".+.item_id\", .+.NAME\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"]\\\n" +
" CLIENT MERGE SORT\n" +
" CLIENT SORTED BY \\[.*.CO_ITEM_ID, .*.CO_ITEM_NAME\\]\n" +
"AND\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\".+.item_id\", .+.NAME\\]\n" +
" CLIENT MERGE SORT\n" +
" SKIP-SCAN-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
- " DYNAMIC SERVER FILTER BY \"" + JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" +
+ " DYNAMIC SERVER FILTER BY \"" + JOIN_ITEM_TABLE_FULL_NAME + ".item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" +
"CLIENT FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)",
"SORT-MERGE-JOIN \\(SEMI\\) TABLES\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + "\n" +
"AND \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.item_id\" IN \\(\"O.item_id\"\\)\n" +
@@ -178,21 +124,21 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
" CLIENT MERGE SORT\n" +
" CLIENT SORTED BY [\"I.:item_id\"]\n" +
"AND (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " ['000000000000001'] - [*]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + " ['000000000000001'] - [*]\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [\"I.0:NAME\"]",
"SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" +
" SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" +
- " CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_FULL_NAME + "\n" +
" CLIENT MERGE SORT\n" +
" AND\n" +
" CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" CLIENT SORTED BY \\[.*.CO_ITEM_ID, .*.CO_ITEM_NAME\\]\n" +
@@ -201,7 +147,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
"CLIENT FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)",
@@ -217,9 +163,9 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" AFTER-JOIN SERVER FILTER BY \\(\"I.0:NAME\" = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)",
@@ -232,61 +178,61 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
}, {
"SORT-MERGE-JOIN (SEMI) TABLES\n" +
" SORT-MERGE-JOIN (INNER) TABLES\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1]\n" +
" SERVER SORTED BY [\"I.0:supplier_id\"]\n" +
" CLIENT MERGE SORT\n" +
" AND\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [1]\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" +
" CLIENT SORTED BY [\"I.:item_id\"]\n" +
"AND (SKIP MERGE)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " ['000000000000001'] - [*]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + " ['000000000000001'] - [*]\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" +
" CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [\"I.0:NAME\"]",
"SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" +
" SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" +
- " CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_FULL_NAME + "\n" +
" CLIENT MERGE SORT\n" +
" AND\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" CLIENT SORTED BY \\[.*.CO_ITEM_ID, .*.CO_ITEM_NAME\\]\n" +
"AND\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[\".+.:item_id\", \".+.0:NAME\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"" + JOIN_SCHEMA + ".idx_item.:item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" +
"CLIENT FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)",
"SORT-MERGE-JOIN \\(SEMI\\) TABLES\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER SORTED BY \\[\"Join.idx_customer.:customer_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
"AND \\(SKIP MERGE\\)\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[1\\]\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " \\[1\\]\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_FULL_NAME + "\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"I.:item_id\" IN \\(\"O.item_id\"\\)\n" +
@@ -295,296 +241,12 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
return testCases;
}
- protected void initTableValues() throws Exception {
- ensureTableCreated(getUrl(), JOIN_CUSTOMER_TABLE_FULL_NAME);
- ensureTableCreated(getUrl(), JOIN_ITEM_TABLE_FULL_NAME);
- ensureTableCreated(getUrl(), JOIN_SUPPLIER_TABLE_FULL_NAME);
- ensureTableCreated(getUrl(), JOIN_ORDER_TABLE_FULL_NAME);
- ensureTableCreated(getUrl(), JOIN_COITEM_TABLE_FULL_NAME);
-
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- conn.createStatement().execute("CREATE SEQUENCE my.seq");
- // Insert into customer table
- PreparedStatement stmt = conn.prepareStatement(
- "upsert into " + JOIN_CUSTOMER_TABLE_FULL_NAME +
- " (\"customer_id\", " +
- " NAME, " +
- " PHONE, " +
- " ADDRESS, " +
- " LOC_ID, " +
- " DATE) " +
- "values (?, ?, ?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "C1");
- stmt.setString(3, "999-999-1111");
- stmt.setString(4, "101 XXX Street");
- stmt.setString(5, "10001");
- stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000002");
- stmt.setString(2, "C2");
- stmt.setString(3, "999-999-2222");
- stmt.setString(4, "202 XXX Street");
- stmt.setString(5, null);
- stmt.setDate(6, new Date(format.parse("2013-11-25 16:45:07").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "C3");
- stmt.setString(3, "999-999-3333");
- stmt.setString(4, "303 XXX Street");
- stmt.setString(5, null);
- stmt.setDate(6, new Date(format.parse("2013-11-25 10:06:29").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "C4");
- stmt.setString(3, "999-999-4444");
- stmt.setString(4, "404 XXX Street");
- stmt.setString(5, "10004");
- stmt.setDate(6, new Date(format.parse("2013-11-22 14:22:56").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000005");
- stmt.setString(2, "C5");
- stmt.setString(3, "999-999-5555");
- stmt.setString(4, "505 XXX Street");
- stmt.setString(5, "10005");
- stmt.setDate(6, new Date(format.parse("2013-11-27 09:37:50").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "C6");
- stmt.setString(3, "999-999-6666");
- stmt.setString(4, "606 XXX Street");
- stmt.setString(5, "10001");
- stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
- stmt.execute();
-
- // Insert into item table
- stmt = conn.prepareStatement(
- "upsert into " + JOIN_ITEM_TABLE_FULL_NAME +
- " (\"item_id\", " +
- " NAME, " +
- " PRICE, " +
- " DISCOUNT1, " +
- " DISCOUNT2, " +
- " \"supplier_id\", " +
- " DESCRIPTION) " +
- "values (?, ?, ?, ?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "T1");
- stmt.setInt(3, 100);
- stmt.setInt(4, 5);
- stmt.setInt(5, 10);
- stmt.setString(6, "0000000001");
- stmt.setString(7, "Item T1");
- stmt.execute();
-
- stmt.setString(1, "0000000002");
- stmt.setString(2, "T2");
- stmt.setInt(3, 200);
- stmt.setInt(4, 5);
- stmt.setInt(5, 8);
- stmt.setString(6, "0000000001");
- stmt.setString(7, "Item T2");
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "T3");
- stmt.setInt(3, 300);
- stmt.setInt(4, 8);
- stmt.setInt(5, 12);
- stmt.setString(6, "0000000002");
- stmt.setString(7, "Item T3");
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "T4");
- stmt.setInt(3, 400);
- stmt.setInt(4, 6);
- stmt.setInt(5, 10);
- stmt.setString(6, "0000000002");
- stmt.setString(7, "Item T4");
- stmt.execute();
-
- stmt.setString(1, "0000000005");
- stmt.setString(2, "T5");
- stmt.setInt(3, 500);
- stmt.setInt(4, 8);
- stmt.setInt(5, 15);
- stmt.setString(6, "0000000005");
- stmt.setString(7, "Item T5");
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "T6");
- stmt.setInt(3, 600);
- stmt.setInt(4, 8);
- stmt.setInt(5, 15);
- stmt.setString(6, "0000000006");
- stmt.setString(7, "Item T6");
- stmt.execute();
-
- stmt.setString(1, "invalid001");
- stmt.setString(2, "INVALID-1");
- stmt.setInt(3, 0);
- stmt.setInt(4, 0);
- stmt.setInt(5, 0);
- stmt.setString(6, "0000000000");
- stmt.setString(7, "Invalid item for join test");
- stmt.execute();
-
- // Insert into supplier table
- stmt = conn.prepareStatement(
- "upsert into " + JOIN_SUPPLIER_TABLE_FULL_NAME +
- " (\"supplier_id\", " +
- " NAME, " +
- " PHONE, " +
- " ADDRESS, " +
- " LOC_ID) " +
- "values (?, ?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "S1");
- stmt.setString(3, "888-888-1111");
- stmt.setString(4, "101 YYY Street");
- stmt.setString(5, "10001");
- stmt.execute();
-
- stmt.setString(1, "0000000002");
- stmt.setString(2, "S2");
- stmt.setString(3, "888-888-2222");
- stmt.setString(4, "202 YYY Street");
- stmt.setString(5, "10002");
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "S3");
- stmt.setString(3, "888-888-3333");
- stmt.setString(4, "303 YYY Street");
- stmt.setString(5, null);
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "S4");
- stmt.setString(3, "888-888-4444");
- stmt.setString(4, "404 YYY Street");
- stmt.setString(5, null);
- stmt.execute();
-
- stmt.setString(1, "0000000005");
- stmt.setString(2, "S5");
- stmt.setString(3, "888-888-5555");
- stmt.setString(4, "505 YYY Street");
- stmt.setString(5, "10005");
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "S6");
- stmt.setString(3, "888-888-6666");
- stmt.setString(4, "606 YYY Street");
- stmt.setString(5, "10006");
- stmt.execute();
-
- // Insert into order table
- stmt = conn.prepareStatement(
- "upsert into " + JOIN_ORDER_TABLE_FULL_NAME +
- " (\"order_id\", " +
- " \"customer_id\", " +
- " \"item_id\", " +
- " PRICE, " +
- " QUANTITY," +
- " DATE) " +
- "values (?, ?, ?, ?, ?, ?)");
- stmt.setString(1, "000000000000001");
- stmt.setString(2, "0000000004");
- stmt.setString(3, "0000000001");
- stmt.setInt(4, 100);
- stmt.setInt(5, 1000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-22 14:22:56").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000002");
- stmt.setString(2, "0000000003");
- stmt.setString(3, "0000000006");
- stmt.setInt(4, 552);
- stmt.setInt(5, 2000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 10:06:29").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000003");
- stmt.setString(2, "0000000002");
- stmt.setString(3, "0000000002");
- stmt.setInt(4, 190);
- stmt.setInt(5, 3000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 16:45:07").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000004");
- stmt.setString(2, "0000000004");
- stmt.setString(3, "0000000006");
- stmt.setInt(4, 510);
- stmt.setInt(5, 4000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-26 13:26:04").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000005");
- stmt.setString(2, "0000000005");
- stmt.setString(3, "0000000003");
- stmt.setInt(4, 264);
- stmt.setInt(5, 5000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-27 09:37:50").getTime()));
- stmt.execute();
-
- conn.commit();
-
- // Insert into coitem table
- stmt = conn.prepareStatement(
- "upsert into " + JOIN_COITEM_TABLE_FULL_NAME +
- " (item_id, " +
- " item_name, " +
- " co_item_id, " +
- " co_item_name) " +
- "values (?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "T1");
- stmt.setString(3, "0000000002");
- stmt.setString(4, "T3");
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "T4");
- stmt.setString(3, "0000000003");
- stmt.setString(4, "T3");
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "T4");
- stmt.setString(3, "0000000005");
- stmt.setString(4, "T5");
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "T6");
- stmt.setString(3, "0000000001");
- stmt.setString(4, "T1");
- stmt.execute();
-
- conn.commit();
- } finally {
- conn.close();
- }
- }
-
@Test
public void testInSubquery() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") ORDER BY name";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -602,7 +264,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") ORDER BY name";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -617,7 +279,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"order_id\" > '000000000000001') ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -633,9 +295,9 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[0], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[0], QueryUtil.getExplainPlan(rs));
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s LEFT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") ORDER BY i.name";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\", s.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" WHERE i.\"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") ORDER BY i.name";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -653,8 +315,8 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + JOIN_COITEM_TABLE_FULL_NAME + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + "))"
- + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + "))";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " WHERE (item_id, item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + "))"
+ + " OR (co_item_id, co_item_name) IN (SELECT \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + "))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -672,7 +334,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
String plan = QueryUtil.getExplainPlan(rs);
- assertTrue("\"" + plan + "\" does not match \"" + plans[1] + "\"", Pattern.matches(plans[1], plan));
+ assertPlansMatch(plans[1], plan);
} finally {
conn.close();
}
@@ -683,7 +345,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE NOT EXISTS (SELECT 1 FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE o.\"item_id\" = i.\"item_id\") ORDER BY name";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -698,8 +360,8 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + JOIN_COITEM_TABLE_FULL_NAME + " co WHERE EXISTS (SELECT 1 FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE NOT EXISTS (SELECT 1 FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
- + " OR EXISTS (SELECT 1 FROM " + JOIN_ITEM_TABLE_FULL_NAME + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_COITEM_TABLE_FULL_NAME) + " co WHERE EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE NOT EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE \"item_id\" = i.\"item_id\") AND co.item_id = \"item_id\" AND name = co.item_name)"
+ + " OR EXISTS (SELECT 1 FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " WHERE \"item_id\" IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AND co.co_item_id = \"item_id\" AND name = co.co_item_name)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -717,7 +379,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
String plan = QueryUtil.getExplainPlan(rs);
- assertTrue("\"" + plan + "\" does not match \"" + plans[1] + "\"", Pattern.matches(plans[1], plan));
+ assertPlansMatch(plans[1], plan);
} finally {
conn.close();
}
@@ -728,7 +390,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -746,7 +408,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ name from " + JOIN_CUSTOMER_TABLE_FULL_NAME + " WHERE \"customer_id\" IN (SELECT \"customer_id\" FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN " + JOIN_ORDER_TABLE_FULL_NAME + " o ON o.\"item_id\" = i.\"item_id\" WHERE i.name = 'T2' OR quantity > (SELECT avg(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\"))";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ name from " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " WHERE \"customer_id\" IN (SELECT \"customer_id\" FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" WHERE i.name = 'T2' OR quantity > (SELECT avg(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\"))";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -758,9 +420,9 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
String plan = QueryUtil.getExplainPlan(rs);
- assertTrue("\"" + plan + "\" does not match \"" + plans[2] + "\"", Pattern.matches(plans[2], plan));
+ assertPlansMatch(plans[2], plan);
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o WHERE quantity = (SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004')";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -774,7 +436,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o WHERE quantity = (SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003')";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003')";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
try {
@@ -783,7 +445,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
} catch (SQLException e) {
}
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o WHERE quantity = (SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004' GROUP BY \"order_id\")";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000004' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -797,7 +459,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o WHERE quantity = (SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003' GROUP BY \"order_id\")";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o WHERE quantity = (SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " WHERE o.\"item_id\" = \"item_id\" AND \"order_id\" != '000000000000003' GROUP BY \"order_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
try {
@@ -815,7 +477,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity = ALL(SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -830,7 +492,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\")";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ALL(SELECT max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\")";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -839,7 +501,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", name FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" WHERE quantity != ANY(SELECT quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " q WHERE o.\"item_id\" = q.\"item_id\" GROUP BY quantity)";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -857,7 +519,7 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testSubqueryWithUpsert() throws Exception {
- String tempTable = "UPSERT_SUBQUERY_TABLE";
+ String tempTable = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
@@ -866,8 +528,8 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT {
+ " (item_id varchar not null primary key, "
+ " name varchar)");
conn.createStatement().execute("UPSERT /*+ USE_SORT_MERGE_JOIN*/ INTO " + tempTable + "(item_id, name)"
- + " SELECT \"item_id\", name FROM " + JOIN_ITEM_TABLE_FULL_NAME
- + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ")");
+ + " SELECT \"item_id\", name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME)
+ + " WHERE \"item_id\" NOT IN (SELECT \"item_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ")");
String query = "SELECT name FROM " + tempTable + " ORDER BY item_id";
PreparedStatement statement = conn.prepareStatement(query);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
index 9f53d12..8b5a591 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UserDefinedFunctionsIT.java
@@ -792,13 +792,159 @@ public class UserDefinedFunctionsIT extends BaseOwnClusterIT {
assertFalse(rs.next());
}
+ private static void initJoinTableValues(Connection conn) throws Exception {
+ conn.createStatement().execute("create table " + JOIN_ITEM_TABLE_FULL_NAME +
+ " (\"item_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " price integer, " +
+ " discount1 integer, " +
+ " discount2 integer, " +
+ " \"supplier_id\" varchar(10), " +
+ " description varchar)");
+ conn.createStatement().execute("create table " + JOIN_SUPPLIER_TABLE_FULL_NAME +
+ " (\"supplier_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " phone varchar(12), " +
+ " address varchar, " +
+ " loc_id varchar(5))");
+ PreparedStatement stmt;
+ conn.createStatement().execute("CREATE SEQUENCE my.seq");
+
+ // Insert into item table
+ stmt = conn.prepareStatement(
+ "upsert into " + JOIN_ITEM_TABLE_FULL_NAME +
+ " (\"item_id\", " +
+ " NAME, " +
+ " PRICE, " +
+ " DISCOUNT1, " +
+ " DISCOUNT2, " +
+ " \"supplier_id\", " +
+ " DESCRIPTION) " +
+ "values (?, ?, ?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "T1");
+ stmt.setInt(3, 100);
+ stmt.setInt(4, 5);
+ stmt.setInt(5, 10);
+ stmt.setString(6, "0000000001");
+ stmt.setString(7, "Item T1");
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "T2");
+ stmt.setInt(3, 200);
+ stmt.setInt(4, 5);
+ stmt.setInt(5, 8);
+ stmt.setString(6, "0000000001");
+ stmt.setString(7, "Item T2");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "T3");
+ stmt.setInt(3, 300);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 12);
+ stmt.setString(6, "0000000002");
+ stmt.setString(7, "Item T3");
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "T4");
+ stmt.setInt(3, 400);
+ stmt.setInt(4, 6);
+ stmt.setInt(5, 10);
+ stmt.setString(6, "0000000002");
+ stmt.setString(7, "Item T4");
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "T5");
+ stmt.setInt(3, 500);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 15);
+ stmt.setString(6, "0000000005");
+ stmt.setString(7, "Item T5");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "T6");
+ stmt.setInt(3, 600);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 15);
+ stmt.setString(6, "0000000006");
+ stmt.setString(7, "Item T6");
+ stmt.execute();
+
+ stmt.setString(1, "invalid001");
+ stmt.setString(2, "INVALID-1");
+ stmt.setInt(3, 0);
+ stmt.setInt(4, 0);
+ stmt.setInt(5, 0);
+ stmt.setString(6, "0000000000");
+ stmt.setString(7, "Invalid item for join test");
+ stmt.execute();
+
+ // Insert into supplier table
+ stmt = conn.prepareStatement(
+ "upsert into " + JOIN_SUPPLIER_TABLE_FULL_NAME +
+ " (\"supplier_id\", " +
+ " NAME, " +
+ " PHONE, " +
+ " ADDRESS, " +
+ " LOC_ID) " +
+ "values (?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "S1");
+ stmt.setString(3, "888-888-1111");
+ stmt.setString(4, "101 YYY Street");
+ stmt.setString(5, "10001");
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "S2");
+ stmt.setString(3, "888-888-2222");
+ stmt.setString(4, "202 YYY Street");
+ stmt.setString(5, "10002");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "S3");
+ stmt.setString(3, "888-888-3333");
+ stmt.setString(4, "303 YYY Street");
+ stmt.setString(5, null);
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "S4");
+ stmt.setString(3, "888-888-4444");
+ stmt.setString(4, "404 YYY Street");
+ stmt.setString(5, null);
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "S5");
+ stmt.setString(3, "888-888-5555");
+ stmt.setString(4, "505 YYY Street");
+ stmt.setString(5, "10005");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "S6");
+ stmt.setString(3, "888-888-6666");
+ stmt.setString(4, "606 YYY Street");
+ stmt.setString(5, "10006");
+ stmt.execute();
+
+ conn.commit();
+ }
+
@Test
public void testUdfWithJoin() throws Exception {
String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", myreverse8(supp.name) FROM "
+ JOIN_SUPPLIER_TABLE_FULL_NAME + " supp RIGHT JOIN " + JOIN_ITEM_TABLE_FULL_NAME
+ " item ON myreverse8(item.\"supplier_id\") = myreverse8(supp.\"supplier_id\") ORDER BY \"item_id\"";
Connection conn = driver.connect(url, EMPTY_PROPS);
- initJoinTableValues(url, null, null);
+ initJoinTableValues(conn);
conn.createStatement().execute(
"create function myreverse8(VARCHAR) returns VARCHAR as 'org.apache.phoenix.end2end.MyReverse' using jar "
+ "'" + util.getConfiguration().get(DYNAMIC_JARS_DIR_KEY) + "/myjar1.jar" + "'");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
index 9a2eec1..254046b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
@@ -227,13 +227,13 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testCreateIndexAfterUpsertStarted() throws Exception {
- String tableName = "TBL_" + generateUniqueName();
- String indexName = "IND_" + generateUniqueName();
- String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
- String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
- testCreateIndexAfterUpsertStarted(false, fullTableName + "1", fullIndexName + "1");
+ testCreateIndexAfterUpsertStarted(false,
+ SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, generateUniqueName()),
+ SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, generateUniqueName()));
if (transactional) {
- testCreateIndexAfterUpsertStarted(true, fullTableName + "2", fullIndexName + "2");
+ testCreateIndexAfterUpsertStarted(true,
+ SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, generateUniqueName()),
+ SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, generateUniqueName()));
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/test/java/org/apache/phoenix/compile/JoinQueryCompilerTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/compile/JoinQueryCompilerTest.java b/phoenix-core/src/test/java/org/apache/phoenix/compile/JoinQueryCompilerTest.java
index ffaafd8..665af51 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/compile/JoinQueryCompilerTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/compile/JoinQueryCompilerTest.java
@@ -41,6 +41,7 @@ import org.apache.phoenix.parse.SelectStatement;
import org.apache.phoenix.query.BaseConnectionlessQueryTest;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
+import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -48,6 +49,40 @@ import org.junit.Test;
*/
public class JoinQueryCompilerTest extends BaseConnectionlessQueryTest {
+ @BeforeClass
+ public static void createJoinTables() throws SQLException {
+ try (Connection conn = DriverManager.getConnection(getUrl())) {
+ conn.createStatement().execute("create table " + JOIN_ORDER_TABLE_FULL_NAME +
+ " (\"order_id\" varchar(15) not null primary key, " +
+ " \"customer_id\" varchar(10), " +
+ " \"item_id\" varchar(10), " +
+ " price integer, " +
+ " quantity integer, " +
+ " date timestamp)");
+ conn.createStatement().execute("create table " + JOIN_CUSTOMER_TABLE_FULL_NAME +
+ " (\"customer_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " phone varchar(12), " +
+ " address varchar, " +
+ " loc_id varchar(5), " +
+ " date date)");
+ conn.createStatement().execute("create table " + JOIN_ITEM_TABLE_FULL_NAME +
+ " (\"item_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " price integer, " +
+ " discount1 integer, " +
+ " discount2 integer, " +
+ " \"supplier_id\" varchar(10), " +
+ " description varchar)");
+ conn.createStatement().execute("create table " + JOIN_SUPPLIER_TABLE_FULL_NAME +
+ " (\"supplier_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " phone varchar(12), " +
+ " address varchar, " +
+ " loc_id varchar(5))");
+ }
+ }
+
@Test
public void testExplainPlan() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
index 452ea4d..b74cefb 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
@@ -21,10 +21,6 @@ import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
import static org.apache.phoenix.util.TestUtil.ATABLE_NAME;
import static org.apache.phoenix.util.TestUtil.ENTITY_HISTORY_TABLE_NAME;
import static org.apache.phoenix.util.TestUtil.FUNKY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.MULTI_CF_NAME;
import static org.apache.phoenix.util.TestUtil.PHOENIX_CONNECTIONLESS_JDBC_URL;
import static org.apache.phoenix.util.TestUtil.PTSDB2_NAME;
@@ -114,11 +110,9 @@ public class BaseConnectionlessQueryTest extends BaseTest {
ensureTableCreated(getUrl(), PTSDB2_NAME);
ensureTableCreated(getUrl(), PTSDB3_NAME);
ensureTableCreated(getUrl(), MULTI_CF_NAME);
- ensureTableCreated(getUrl(), JOIN_ORDER_TABLE_FULL_NAME);
- ensureTableCreated(getUrl(), JOIN_CUSTOMER_TABLE_FULL_NAME);
- ensureTableCreated(getUrl(), JOIN_ITEM_TABLE_FULL_NAME);
- ensureTableCreated(getUrl(), JOIN_SUPPLIER_TABLE_FULL_NAME);
ensureTableCreated(getUrl(), TABLE_WITH_ARRAY);
+
+
Properties props = new Properties();
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(HConstants.LATEST_TIMESTAMP));
PhoenixConnection conn = DriverManager.getConnection(PHOENIX_CONNECTIONLESS_JDBC_URL, props).unwrap(PhoenixConnection.class);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 3de0b77..075828e 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -44,11 +44,6 @@ import static org.apache.phoenix.util.TestUtil.E_VALUE;
import static org.apache.phoenix.util.TestUtil.FUNKY_NAME;
import static org.apache.phoenix.util.TestUtil.HBASE_DYNAMIC_COLUMNS;
import static org.apache.phoenix.util.TestUtil.HBASE_NATIVE;
-import static org.apache.phoenix.util.TestUtil.JOIN_COITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.MDTEST_NAME;
import static org.apache.phoenix.util.TestUtil.MULTI_CF_NAME;
import static org.apache.phoenix.util.TestUtil.PARENTID1;
@@ -94,9 +89,7 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Timestamp;
import java.sql.Types;
-import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
@@ -410,41 +403,6 @@ public abstract class BaseTest {
" kv bigint)\n");
builder.put(SUM_DOUBLE_NAME,"create table SumDoubleTest" +
" (id varchar not null primary key, d DOUBLE, f FLOAT, ud UNSIGNED_DOUBLE, uf UNSIGNED_FLOAT, i integer, de decimal)");
- builder.put(JOIN_ORDER_TABLE_FULL_NAME, "create table " + JOIN_ORDER_TABLE_FULL_NAME +
- " (\"order_id\" varchar(15) not null primary key, " +
- " \"customer_id\" varchar(10), " +
- " \"item_id\" varchar(10), " +
- " price integer, " +
- " quantity integer, " +
- " date timestamp)");
- builder.put(JOIN_CUSTOMER_TABLE_FULL_NAME, "create table " + JOIN_CUSTOMER_TABLE_FULL_NAME +
- " (\"customer_id\" varchar(10) not null primary key, " +
- " name varchar, " +
- " phone varchar(12), " +
- " address varchar, " +
- " loc_id varchar(5), " +
- " date date)");
- builder.put(JOIN_ITEM_TABLE_FULL_NAME, "create table " + JOIN_ITEM_TABLE_FULL_NAME +
- " (\"item_id\" varchar(10) not null primary key, " +
- " name varchar, " +
- " price integer, " +
- " discount1 integer, " +
- " discount2 integer, " +
- " \"supplier_id\" varchar(10), " +
- " description varchar)");
- builder.put(JOIN_SUPPLIER_TABLE_FULL_NAME, "create table " + JOIN_SUPPLIER_TABLE_FULL_NAME +
- " (\"supplier_id\" varchar(10) not null primary key, " +
- " name varchar, " +
- " phone varchar(12), " +
- " address varchar, " +
- " loc_id varchar(5))");
- builder.put(JOIN_COITEM_TABLE_FULL_NAME, "create table " + JOIN_COITEM_TABLE_FULL_NAME +
- " (item_id varchar(10) NOT NULL, " +
- " item_name varchar NOT NULL, " +
- " co_item_id varchar(10), " +
- " co_item_name varchar " +
- " CONSTRAINT pk PRIMARY KEY (item_id, item_name)) " +
- " SALT_BUCKETS=4");
builder.put(BINARY_NAME,"create table " + BINARY_NAME +
" (a_binary BINARY(16) not null, \n" +
" b_binary BINARY(16), \n" +
@@ -1532,266 +1490,6 @@ public abstract class BaseTest {
}
}
- protected static void initJoinTableValues(String url, byte[][] splits, Long ts) throws Exception {
- if (ts == null) {
- ensureTableCreated(url, JOIN_CUSTOMER_TABLE_FULL_NAME, JOIN_CUSTOMER_TABLE_FULL_NAME, splits);
- ensureTableCreated(url, JOIN_ITEM_TABLE_FULL_NAME, JOIN_ITEM_TABLE_FULL_NAME, splits);
- ensureTableCreated(url, JOIN_SUPPLIER_TABLE_FULL_NAME, JOIN_SUPPLIER_TABLE_FULL_NAME, splits);
- ensureTableCreated(url, JOIN_ORDER_TABLE_FULL_NAME, JOIN_ORDER_TABLE_FULL_NAME, splits);
- } else {
- ensureTableCreated(url, JOIN_CUSTOMER_TABLE_FULL_NAME, JOIN_CUSTOMER_TABLE_FULL_NAME, splits, ts - 2);
- ensureTableCreated(url, JOIN_ITEM_TABLE_FULL_NAME, JOIN_ITEM_TABLE_FULL_NAME, splits, ts - 2);
- ensureTableCreated(url, JOIN_SUPPLIER_TABLE_FULL_NAME, JOIN_SUPPLIER_TABLE_FULL_NAME, splits, ts - 2);
- ensureTableCreated(url, JOIN_ORDER_TABLE_FULL_NAME, JOIN_ORDER_TABLE_FULL_NAME, splits, ts - 2);
- }
-
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- if (ts != null) {
- props.setProperty(CURRENT_SCN_ATTRIB, ts.toString());
- }
- Connection conn = DriverManager.getConnection(url, props);
- try {
- conn.createStatement().execute("CREATE SEQUENCE my.seq");
- // Insert into customer table
- PreparedStatement stmt = conn.prepareStatement(
- "upsert into " + JOIN_CUSTOMER_TABLE_FULL_NAME +
- " (\"customer_id\", " +
- " NAME, " +
- " PHONE, " +
- " ADDRESS, " +
- " LOC_ID, " +
- " DATE) " +
- "values (?, ?, ?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "C1");
- stmt.setString(3, "999-999-1111");
- stmt.setString(4, "101 XXX Street");
- stmt.setString(5, "10001");
- stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000002");
- stmt.setString(2, "C2");
- stmt.setString(3, "999-999-2222");
- stmt.setString(4, "202 XXX Street");
- stmt.setString(5, null);
- stmt.setDate(6, new Date(format.parse("2013-11-25 16:45:07").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "C3");
- stmt.setString(3, "999-999-3333");
- stmt.setString(4, "303 XXX Street");
- stmt.setString(5, null);
- stmt.setDate(6, new Date(format.parse("2013-11-25 10:06:29").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "C4");
- stmt.setString(3, "999-999-4444");
- stmt.setString(4, "404 XXX Street");
- stmt.setString(5, "10004");
- stmt.setDate(6, new Date(format.parse("2013-11-22 14:22:56").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000005");
- stmt.setString(2, "C5");
- stmt.setString(3, "999-999-5555");
- stmt.setString(4, "505 XXX Street");
- stmt.setString(5, "10005");
- stmt.setDate(6, new Date(format.parse("2013-11-27 09:37:50").getTime()));
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "C6");
- stmt.setString(3, "999-999-6666");
- stmt.setString(4, "606 XXX Street");
- stmt.setString(5, "10001");
- stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
- stmt.execute();
-
- // Insert into item table
- stmt = conn.prepareStatement(
- "upsert into " + JOIN_ITEM_TABLE_FULL_NAME +
- " (\"item_id\", " +
- " NAME, " +
- " PRICE, " +
- " DISCOUNT1, " +
- " DISCOUNT2, " +
- " \"supplier_id\", " +
- " DESCRIPTION) " +
- "values (?, ?, ?, ?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "T1");
- stmt.setInt(3, 100);
- stmt.setInt(4, 5);
- stmt.setInt(5, 10);
- stmt.setString(6, "0000000001");
- stmt.setString(7, "Item T1");
- stmt.execute();
-
- stmt.setString(1, "0000000002");
- stmt.setString(2, "T2");
- stmt.setInt(3, 200);
- stmt.setInt(4, 5);
- stmt.setInt(5, 8);
- stmt.setString(6, "0000000001");
- stmt.setString(7, "Item T2");
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "T3");
- stmt.setInt(3, 300);
- stmt.setInt(4, 8);
- stmt.setInt(5, 12);
- stmt.setString(6, "0000000002");
- stmt.setString(7, "Item T3");
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "T4");
- stmt.setInt(3, 400);
- stmt.setInt(4, 6);
- stmt.setInt(5, 10);
- stmt.setString(6, "0000000002");
- stmt.setString(7, "Item T4");
- stmt.execute();
-
- stmt.setString(1, "0000000005");
- stmt.setString(2, "T5");
- stmt.setInt(3, 500);
- stmt.setInt(4, 8);
- stmt.setInt(5, 15);
- stmt.setString(6, "0000000005");
- stmt.setString(7, "Item T5");
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "T6");
- stmt.setInt(3, 600);
- stmt.setInt(4, 8);
- stmt.setInt(5, 15);
- stmt.setString(6, "0000000006");
- stmt.setString(7, "Item T6");
- stmt.execute();
-
- stmt.setString(1, "invalid001");
- stmt.setString(2, "INVALID-1");
- stmt.setInt(3, 0);
- stmt.setInt(4, 0);
- stmt.setInt(5, 0);
- stmt.setString(6, "0000000000");
- stmt.setString(7, "Invalid item for join test");
- stmt.execute();
-
- // Insert into supplier table
- stmt = conn.prepareStatement(
- "upsert into " + JOIN_SUPPLIER_TABLE_FULL_NAME +
- " (\"supplier_id\", " +
- " NAME, " +
- " PHONE, " +
- " ADDRESS, " +
- " LOC_ID) " +
- "values (?, ?, ?, ?, ?)");
- stmt.setString(1, "0000000001");
- stmt.setString(2, "S1");
- stmt.setString(3, "888-888-1111");
- stmt.setString(4, "101 YYY Street");
- stmt.setString(5, "10001");
- stmt.execute();
-
- stmt.setString(1, "0000000002");
- stmt.setString(2, "S2");
- stmt.setString(3, "888-888-2222");
- stmt.setString(4, "202 YYY Street");
- stmt.setString(5, "10002");
- stmt.execute();
-
- stmt.setString(1, "0000000003");
- stmt.setString(2, "S3");
- stmt.setString(3, "888-888-3333");
- stmt.setString(4, "303 YYY Street");
- stmt.setString(5, null);
- stmt.execute();
-
- stmt.setString(1, "0000000004");
- stmt.setString(2, "S4");
- stmt.setString(3, "888-888-4444");
- stmt.setString(4, "404 YYY Street");
- stmt.setString(5, null);
- stmt.execute();
-
- stmt.setString(1, "0000000005");
- stmt.setString(2, "S5");
- stmt.setString(3, "888-888-5555");
- stmt.setString(4, "505 YYY Street");
- stmt.setString(5, "10005");
- stmt.execute();
-
- stmt.setString(1, "0000000006");
- stmt.setString(2, "S6");
- stmt.setString(3, "888-888-6666");
- stmt.setString(4, "606 YYY Street");
- stmt.setString(5, "10006");
- stmt.execute();
-
- // Insert into order table
- stmt = conn.prepareStatement(
- "upsert into " + JOIN_ORDER_TABLE_FULL_NAME +
- " (\"order_id\", " +
- " \"customer_id\", " +
- " \"item_id\", " +
- " PRICE, " +
- " QUANTITY," +
- " DATE) " +
- "values (?, ?, ?, ?, ?, ?)");
- stmt.setString(1, "000000000000001");
- stmt.setString(2, "0000000004");
- stmt.setString(3, "0000000001");
- stmt.setInt(4, 100);
- stmt.setInt(5, 1000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-22 14:22:56").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000002");
- stmt.setString(2, "0000000003");
- stmt.setString(3, "0000000006");
- stmt.setInt(4, 552);
- stmt.setInt(5, 2000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 10:06:29").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000003");
- stmt.setString(2, "0000000002");
- stmt.setString(3, "0000000002");
- stmt.setInt(4, 190);
- stmt.setInt(5, 3000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 16:45:07").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000004");
- stmt.setString(2, "0000000004");
- stmt.setString(3, "0000000006");
- stmt.setInt(4, 510);
- stmt.setInt(5, 4000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-26 13:26:04").getTime()));
- stmt.execute();
-
- stmt.setString(1, "000000000000005");
- stmt.setString(2, "0000000005");
- stmt.setString(3, "0000000003");
- stmt.setInt(4, 264);
- stmt.setInt(5, 5000);
- stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-27 09:37:50").getTime()));
- stmt.execute();
-
- conn.commit();
- } finally {
- conn.close();
- }
- }
-
/**
* Disable and drop all the tables except SYSTEM.CATALOG and SYSTEM.SEQUENCE
*/
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 987b19a..85e6970 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
- <comments />
+ <comments/>
</license>
</licenses>
@@ -117,7 +117,7 @@
<maven.assembly.version>2.5.2</maven.assembly.version>
<!-- Plugin options -->
- <numForkedUT>3</numForkedUT>
+ <numForkedUT>6</numForkedUT>
<numForkedIT>6</numForkedIT>
<!-- Set default encoding so multi-byte tests work correctly on the Mac -->
@@ -234,9 +234,10 @@
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
<runOrder>alphabetical</runOrder>
- <!--parallel>methods</parallel>
- <threadCount>20</threadCount-->
- <argLine>-enableassertions -Xmx3072m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
+ <!--parallel>classesAndMethods</parallel>
+ <threadCount>20</threadCount>
+ <enableAssertions>false</enableAssertions-->
+ <argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
@@ -261,9 +262,10 @@
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
<runOrder>alphabetical</runOrder>
- <!--parallel>methods</parallel>
- <threadCount>20</threadCount-->
- <argLine>-enableassertions -Xmx3072m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
+ <!--parallel>classesAndMethods</parallel>
+ <threadCount>20</threadCount>
+ <enableAssertions>false</enableAssertions-->
+ <argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
[05/48] phoenix git commit: PHOENIX-3304 Tracing tests failing
Posted by ma...@apache.org.
PHOENIX-3304 Tracing tests failing
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b4b76423
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b4b76423
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b4b76423
Branch: refs/heads/calcite
Commit: b4b7642363c6b9921212b9c4e7ec237dcc88f00e
Parents: 2d27179
Author: James Taylor <ja...@apache.org>
Authored: Tue Sep 20 22:39:19 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Tue Sep 20 22:39:19 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/trace/BaseTracingTestIT.java | 14 -------------
.../phoenix/trace/PhoenixTracingEndToEndIT.java | 22 +++++++++-----------
.../apache/phoenix/trace/TracingTestUtil.java | 8 +++++--
3 files changed, 16 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b4b76423/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java
index 7e5d17f..eed5618 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java
@@ -38,13 +38,10 @@ import org.apache.hadoop.metrics2.impl.ExposedMetricsRecordImpl;
import org.apache.hadoop.metrics2.lib.ExposedMetricsInfoImpl;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
import org.apache.phoenix.metrics.MetricInfo;
-import org.apache.phoenix.query.QueryServicesOptions;
-import org.apache.phoenix.schema.TableNotFoundException;
import org.apache.phoenix.trace.util.Tracing;
import org.apache.phoenix.trace.util.Tracing.Frequency;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
-import org.junit.Before;
/**
* Base test for tracing tests - helps manage getting tracing/non-tracing
@@ -52,16 +49,6 @@ import org.junit.Before;
*/
public class BaseTracingTestIT extends ParallelStatsDisabledIT {
- @Before
- public void resetTracingTableIfExists() throws Exception {
- Connection conn = getConnectionWithoutTracing();
- conn.setAutoCommit(true);
- try {
- conn.createStatement().executeUpdate(
- "DELETE FROM " + QueryServicesOptions.DEFAULT_TRACING_STATS_TABLE_NAME);
- } catch (TableNotFoundException ignore) {
- }
- }
public static Connection getConnectionWithoutTracing() throws SQLException {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
@@ -70,7 +57,6 @@ public class BaseTracingTestIT extends ParallelStatsDisabledIT {
public static Connection getConnectionWithoutTracing(Properties props) throws SQLException {
Connection conn = getConnectionWithTracingFrequency(props, Frequency.NEVER);
- conn.setAutoCommit(false);
return conn;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b4b76423/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
index d6ca23b..8097cc9 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
@@ -64,25 +64,26 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
private String enableForLoggingIndex;
private DisableableMetricsWriter sink;
- private String tableName;
+ private String tracingTableName;
@Before
public void setupMetrics() throws Exception {
PhoenixMetricsSink pWriter = new PhoenixMetricsSink();
Connection conn = getConnectionWithoutTracing();
- tableName = generateRandomString();
- pWriter.initForTesting(conn, tableName);
+ tracingTableName = "TRACING_" + generateRandomString();
+ pWriter.initForTesting(conn, tracingTableName);
sink = new DisableableMetricsWriter(pWriter);
enabledForLoggingTable = "ENABLED_FOR_LOGGING_" + generateRandomString();
- enableForLoggingIndex = "ENABALED_FOR_LOGGING_INDEX" + generateRandomString();
+ enableForLoggingIndex = "ENABALED_FOR_LOGGING_INDEX_" + generateRandomString();
- TracingTestUtil.registerSink(sink);
+ TracingTestUtil.registerSink(sink, tracingTableName);
}
@After
public void cleanup() {
sink.disable();
sink.clear();
+ TracingTestUtil.unregisterSink(tracingTableName);
}
private void waitForCommit(CountDownLatch latch) throws SQLException {
@@ -95,7 +96,7 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
sink.disable();
// swap the connection for one that listens
- sink.getDelegate().initForTesting(conn, tableName);
+ sink.getDelegate().initForTesting(conn, tracingTableName);
// enable the writer
sink.enable();
@@ -223,7 +224,7 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
public boolean foundTrace(TraceHolder trace, SpanInfo span) {
String traceInfo = trace.toString();
// skip logging traces that are just traces about tracing
- if (traceInfo.contains(tableName)) {
+ if (traceInfo.contains(tracingTableName)) {
return false;
}
return traceInfo.contains("Completing index");
@@ -247,7 +248,6 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
// create an index on the table - we know indexing has some basic tracing
ddl = "CREATE INDEX IF NOT EXISTS " + enableForLoggingIndex + " on " + enabledForLoggingTable + " (c1)";
conn.createStatement().execute(ddl);
- conn.commit();
}
@Test
@@ -321,14 +321,12 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
stmt.setLong(2, 1);
stmt.execute();
conn.commit();
- conn.rollback();
// setup for next set of updates
stmt.setString(1, "key2");
stmt.setLong(2, 2);
stmt.execute();
conn.commit();
- conn.rollback();
// do a scan of the table
String read = "SELECT COUNT(*) FROM " + enabledForLoggingTable;
@@ -338,7 +336,7 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
assertEquals("Didn't get the expected number of row", 2, results.getInt(1));
results.close();
- assertTrue("Get expected updates to trace table", updated.await(200, TimeUnit.SECONDS));
+ assertTrue("Didn't get expected updates to trace table", updated.await(60, TimeUnit.SECONDS));
// don't trace reads either
boolean found = checkStoredTraces(conn, new TraceChecker() {
@Override
@@ -461,7 +459,7 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
}
private boolean checkStoredTraces(Connection conn, TraceChecker checker) throws Exception {
- TraceReader reader = new TraceReader(conn, tableName);
+ TraceReader reader = new TraceReader(conn, tracingTableName);
int retries = 0;
boolean found = false;
outer: while (retries < MAX_RETRIES) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b4b76423/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java
index b2b12f7..9c539c3 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java
@@ -25,7 +25,11 @@ import org.apache.phoenix.metrics.Metrics;
*/
public class TracingTestUtil {
- public static void registerSink(MetricsSink sink){
- Metrics.initialize().register("phoenix", "test sink gets logged", sink);
+ public static void registerSink(MetricsSink sink, String name){
+ Metrics.initialize().register(name, "test sink gets logged", sink);
+ }
+
+ public static void unregisterSink(String name){
+ Metrics.initialize().unregisterSource(name);
}
}
[35/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
PHOENIX-3253 Make changes to tests to support method level parallelization
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/cae4a7c4
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/cae4a7c4
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/cae4a7c4
Branch: refs/heads/calcite
Commit: cae4a7c449b7f60e60a6cfd9b523087ff2e0d5a6
Parents: 2895835
Author: James Taylor <ja...@apache.org>
Authored: Sun Oct 2 11:10:14 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Sun Oct 2 11:10:14 2016 -0700
----------------------------------------------------------------------
.../phoenix/end2end/FlappingLocalIndexIT.java | 300 +++++++++++++++++
.../phoenix/end2end/index/BaseLocalIndexIT.java | 80 +++++
.../phoenix/end2end/index/LocalIndexIT.java | 299 +----------------
.../phoenix/tx/FlappingTransactionIT.java | 328 ++++++++++++++++++
.../phoenix/tx/NotThreadSafeTransactionIT.java | 331 -------------------
pom.xml | 4 +-
6 files changed, 712 insertions(+), 630 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cae4a7c4/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java
new file mode 100644
index 0000000..7509997
--- /dev/null
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java
@@ -0,0 +1,300 @@
+/*
+ * 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;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.util.Properties;
+
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.client.ResultScanner;
+import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.Pair;
+import org.apache.phoenix.end2end.index.BaseLocalIndexIT;
+import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Test;
+
+public class FlappingLocalIndexIT extends BaseLocalIndexIT {
+
+ public FlappingLocalIndexIT(boolean isNamespaceMapped) {
+ super(isNamespaceMapped);
+ }
+
+ @Test
+ public void testScanWhenATableHasMultipleLocalIndexes() throws Exception {
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
+
+ createBaseTable(tableName, null, "('e','i','o')");
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ try {
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'a')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')");
+ conn1.commit();
+ conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
+ conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + "2 ON " + tableName + "(k3)");
+ conn1.commit();
+ conn1 = DriverManager.getConnection(getUrl());
+ ResultSet rs = conn1.createStatement().executeQuery("SELECT COUNT(*) FROM " + tableName);
+ assertTrue(rs.next());
+ assertEquals(4, rs.getInt(1));
+ } finally {
+ conn1.close();
+ }
+ }
+
+ @Test
+ public void testLocalIndexScanWithSmallChunks() throws Exception {
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
+
+ createBaseTable(tableName, 3, null);
+ Properties props = new Properties();
+ props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, "2");
+ props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
+ Connection conn1 = DriverManager.getConnection(getUrl(), props);
+ try{
+ String[] strings = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
+ for (int i = 0; i < 26; i++) {
+ conn1.createStatement().execute(
+ "UPSERT INTO " + tableName + " values('"+strings[i]+"'," + i + ","
+ + (i + 1) + "," + (i + 2) + ",'" + strings[25 - i] + "')");
+ }
+ conn1.commit();
+ conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
+ conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + "_2 ON " + tableName + "(k3)");
+
+ ResultSet rs = conn1.createStatement().executeQuery("SELECT * FROM " + tableName);
+ assertTrue(rs.next());
+
+ String query = "SELECT t_id,k1,v1 FROM " + tableName;
+ rs = conn1.createStatement().executeQuery(query);
+ for (int j = 0; j < 26; j++) {
+ assertTrue(rs.next());
+ assertEquals(strings[25 - j], rs.getString("t_id"));
+ assertEquals(25 - j, rs.getInt("k1"));
+ assertEquals(strings[j], rs.getString("V1"));
+ }
+ query = "SELECT t_id,k1,k3 FROM " + tableName;
+ rs = conn1.createStatement().executeQuery(query);
+ Thread.sleep(1000);
+ for (int j = 0; j < 26; j++) {
+ assertTrue(rs.next());
+ assertEquals(strings[j], rs.getString("t_id"));
+ assertEquals(j, rs.getInt("k1"));
+ assertEquals(j + 2, rs.getInt("k3"));
+ }
+ } finally {
+ conn1.close();
+ }
+ }
+
+ @Test
+ public void testLocalIndexScan() throws Exception {
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
+ String indexTableName = schemaName + "." + indexName;
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
+ createBaseTable(tableName, null, "('e','i','o')");
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ try{
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('a',1,2,5,'y')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('e',1,2,3,'b')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'a')");
+ conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')");
+ conn1.commit();
+ conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
+
+ ResultSet rs = conn1.createStatement().executeQuery("SELECT COUNT(*) FROM " + indexTableName);
+ assertTrue(rs.next());
+
+ HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
+ int numRegions = admin.getTableRegions(physicalTableName).size();
+
+ String query = "SELECT * FROM " + tableName +" where v1 like 'a%'";
+ rs = conn1.createStatement().executeQuery("EXPLAIN "+ query);
+
+ assertEquals(
+ "CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER "
+ + indexPhysicalTableName + " [1,'a'] - [1,'b']\n"
+ + " SERVER FILTER BY FIRST KEY ONLY\n"
+ + "CLIENT MERGE SORT",
+ QueryUtil.getExplainPlan(rs));
+
+ rs = conn1.createStatement().executeQuery(query);
+ assertTrue(rs.next());
+ assertEquals("f", rs.getString("t_id"));
+ assertEquals(1, rs.getInt("k1"));
+ assertEquals(2, rs.getInt("k2"));
+ assertEquals("a", rs.getString("v1"));
+ assertEquals(3, rs.getInt("k3"));
+ assertTrue(rs.next());
+ assertEquals("j", rs.getString("t_id"));
+ assertEquals(2, rs.getInt("k1"));
+ assertEquals(4, rs.getInt("k2"));
+ assertEquals("a", rs.getString("v1"));
+ assertEquals(2, rs.getInt("k3"));
+ assertFalse(rs.next());
+ query = "SELECT t_id, k1, k2,V1 FROM " + tableName +" where v1='a'";
+ rs = conn1.createStatement().executeQuery("EXPLAIN "+ query);
+
+ assertEquals(
+ "CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER "
+ + indexPhysicalTableName + " [1,'a']\n"
+ + " SERVER FILTER BY FIRST KEY ONLY\n"
+ + "CLIENT MERGE SORT",
+ QueryUtil.getExplainPlan(rs));
+
+ rs = conn1.createStatement().executeQuery(query);
+ assertTrue(rs.next());
+ assertEquals("f", rs.getString("t_id"));
+ assertEquals(1, rs.getInt("k1"));
+ assertEquals(2, rs.getInt("k2"));
+ assertTrue(rs.next());
+ assertEquals("j", rs.getString("t_id"));
+ assertEquals(2, rs.getInt("k1"));
+ assertEquals(4, rs.getInt("k2"));
+ assertFalse(rs.next());
+ query = "SELECT t_id, k1, k2,V1, k3 FROM " + tableName +" where v1<='z' order by k3";
+ rs = conn1.createStatement().executeQuery("EXPLAIN "+ query);
+
+ assertEquals("CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER " + indexPhysicalTableName
+ + " [1,*] - [1,'z']\n" + " SERVER FILTER BY FIRST KEY ONLY\n"
+ + " SERVER SORTED BY [\"K3\"]\n" + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs));
+
+ rs = conn1.createStatement().executeQuery(query);
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt("k3"));
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt("k3"));
+ assertTrue(rs.next());
+ assertEquals(3, rs.getInt("k3"));
+ assertTrue(rs.next());
+ assertEquals(3, rs.getInt("k3"));
+ assertTrue(rs.next());
+ assertEquals(4, rs.getInt("k3"));
+ assertTrue(rs.next());
+ assertEquals(5, rs.getInt("k3"));
+ assertFalse(rs.next());
+
+ query = "SELECT t_id, k1, k2,v1 from " + tableName + " order by V1,t_id";
+ rs = conn1.createStatement().executeQuery("EXPLAIN " + query);
+
+ assertEquals(
+ "CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER "
+ + indexPhysicalTableName +" [1]\n"
+ + " SERVER FILTER BY FIRST KEY ONLY\n"
+ + "CLIENT MERGE SORT",
+ QueryUtil.getExplainPlan(rs));
+
+ rs = conn1.createStatement().executeQuery(query);
+ assertTrue(rs.next());
+ assertEquals("f", rs.getString("t_id"));
+ assertEquals(1, rs.getInt("k1"));
+ assertEquals(2, rs.getInt("k2"));
+ assertEquals("a", rs.getString("V1"));
+ assertTrue(rs.next());
+ assertEquals("j", rs.getString("t_id"));
+ assertEquals(2, rs.getInt("k1"));
+ assertEquals(4, rs.getInt("k2"));
+ assertEquals("a", rs.getString("V1"));
+ assertTrue(rs.next());
+ assertEquals("e", rs.getString("t_id"));
+ assertEquals(1, rs.getInt("k1"));
+ assertEquals(2, rs.getInt("k2"));
+ assertEquals("b", rs.getString("V1"));
+ assertTrue(rs.next());
+ assertEquals("q", rs.getString("t_id"));
+ assertEquals(3, rs.getInt("k1"));
+ assertEquals(1, rs.getInt("k2"));
+ assertEquals("c", rs.getString("V1"));
+ assertTrue(rs.next());
+ assertEquals("a", rs.getString("t_id"));
+ assertEquals(1, rs.getInt("k1"));
+ assertEquals(2, rs.getInt("k2"));
+ assertEquals("y", rs.getString("V1"));
+ assertTrue(rs.next());
+ assertEquals("b", rs.getString("t_id"));
+ assertEquals(1, rs.getInt("k1"));
+ assertEquals(2, rs.getInt("k2"));
+ assertEquals("z", rs.getString("V1"));
+ } finally {
+ conn1.close();
+ }
+ }
+
+ @Test
+ public void testBuildIndexWhenUserTableAlreadyHasData() throws Exception {
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
+ String indexTableName = schemaName + "." + indexName;
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
+ createBaseTable(tableName, null, "('e','i','o')");
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ conn1.createStatement().execute("UPSERT INTO "+tableName+" values('b',1,2,4,'z')");
+ conn1.createStatement().execute("UPSERT INTO "+tableName+" values('f',1,2,3,'z')");
+ conn1.createStatement().execute("UPSERT INTO "+tableName+" values('j',2,4,2,'a')");
+ conn1.createStatement().execute("UPSERT INTO "+tableName+" values('q',3,1,1,'c')");
+ conn1.commit();
+ conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
+ ResultSet rs = conn1.createStatement().executeQuery("SELECT COUNT(*) FROM " + indexTableName);
+ assertTrue(rs.next());
+ assertEquals(4, rs.getInt(1));
+ HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
+ HTable indexTable = new HTable(admin.getConfiguration(),Bytes.toBytes(indexPhysicalTableName));
+ Pair<byte[][], byte[][]> startEndKeys = indexTable.getStartEndKeys();
+ byte[][] startKeys = startEndKeys.getFirst();
+ byte[][] endKeys = startEndKeys.getSecond();
+ for (int i = 0; i < startKeys.length; i++) {
+ Scan s = new Scan();
+ s.addFamily(QueryConstants.DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES);
+ s.setStartRow(startKeys[i]);
+ s.setStopRow(endKeys[i]);
+ ResultScanner scanner = indexTable.getScanner(s);
+ int count = 0;
+ for(Result r:scanner){
+ count++;
+ }
+ scanner.close();
+ assertEquals(1, count);
+ }
+ indexTable.close();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cae4a7c4/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/BaseLocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/BaseLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/BaseLocalIndexIT.java
new file mode 100644
index 0000000..5c8670d
--- /dev/null
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/BaseLocalIndexIT.java
@@ -0,0 +1,80 @@
+/*
+ * 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.index;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Properties;
+
+import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.query.BaseTest;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public abstract class BaseLocalIndexIT extends ParallelStatsDisabledIT {
+ protected boolean isNamespaceMapped;
+ protected String schemaName;
+
+ public BaseLocalIndexIT(boolean isNamespaceMapped) {
+ this.isNamespaceMapped = isNamespaceMapped;
+ }
+
+ @Before
+ public void setup() {
+ schemaName = BaseTest.generateUniqueName();
+ }
+
+ protected Connection getConnection() throws SQLException{
+ Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
+ return DriverManager.getConnection(getUrl(),props);
+ }
+
+ protected void createBaseTable(String tableName, Integer saltBuckets, String splits) throws SQLException {
+ Connection conn = getConnection();
+ if (isNamespaceMapped) {
+ conn.createStatement().execute("CREATE SCHEMA IF NOT EXISTS " + schemaName);
+ }
+ String ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" +
+ "k1 INTEGER NOT NULL,\n" +
+ "k2 INTEGER NOT NULL,\n" +
+ "k3 INTEGER,\n" +
+ "v1 VARCHAR,\n" +
+ "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2))\n"
+ + (saltBuckets != null && splits == null ? (" salt_buckets=" + saltBuckets) : ""
+ + (saltBuckets == null && splits != null ? (" split on " + splits) : ""));
+ conn.createStatement().execute(ddl);
+ conn.close();
+ }
+
+ @Parameters(name = "LocalIndexIT_isNamespaceMapped={0}") // name is used by failsafe as file name in reports
+ public static Collection<Boolean> data() {
+ return Arrays.asList(true, false);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cae4a7c4/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
index 234a466..bf99db0 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
@@ -31,9 +31,7 @@ import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Properties;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
@@ -47,64 +45,25 @@ import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.phoenix.compile.QueryPlan;
import org.apache.phoenix.coprocessor.BaseScannerRegionObserver;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
import org.apache.phoenix.hbase.index.IndexRegionSplitPolicy;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixStatement;
-import org.apache.phoenix.query.BaseTest;
import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PNameFactory;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.PTable.IndexType;
import org.apache.phoenix.schema.PTableKey;
import org.apache.phoenix.schema.TableNotFoundException;
-import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
-import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class LocalIndexIT extends ParallelStatsDisabledIT {
- private boolean isNamespaceMapped;
- private String schemaName;
+public class LocalIndexIT extends BaseLocalIndexIT {
public LocalIndexIT(boolean isNamespaceMapped) {
- this.isNamespaceMapped = isNamespaceMapped;
- }
-
- @Before
- public void setup() {
- schemaName = BaseTest.generateUniqueName();
+ super(isNamespaceMapped);
}
- private void createBaseTable(String tableName, Integer saltBuckets, String splits) throws SQLException {
- Connection conn = getConnection();
- if (isNamespaceMapped) {
- conn.createStatement().execute("CREATE SCHEMA IF NOT EXISTS " + schemaName);
- }
- String ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" +
- "k1 INTEGER NOT NULL,\n" +
- "k2 INTEGER NOT NULL,\n" +
- "k3 INTEGER,\n" +
- "v1 VARCHAR,\n" +
- "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2))\n"
- + (saltBuckets != null && splits == null ? (" salt_buckets=" + saltBuckets) : ""
- + (saltBuckets == null && splits != null ? (" split on " + splits) : ""));
- conn.createStatement().execute(ddl);
- conn.close();
- }
-
- @Parameters(name = "LocalIndexIT_isNamespaceMapped={0}") // name is used by failsafe as file name in reports
- public static Collection<Boolean> data() {
- return Arrays.asList(true, false);
- }
-
@Test
public void testLocalIndexRoundTrip() throws Exception {
String tableName = schemaName + "." + generateUniqueName();
@@ -192,12 +151,6 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
}
}
- private Connection getConnection() throws SQLException{
- Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
- props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
- return DriverManager.getConnection(getUrl(),props);
- }
-
@Test
public void testDropLocalIndexTable() throws Exception {
String tableName = schemaName + "." + generateUniqueName();
@@ -257,184 +210,6 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
}
@Test
- public void testBuildIndexWhenUserTableAlreadyHasData() throws Exception {
- String tableName = schemaName + "." + generateUniqueName();
- String indexName = "IDX_" + generateUniqueName();
- String indexTableName = schemaName + "." + indexName;
- TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
- String indexPhysicalTableName = physicalTableName.getNameAsString();
-
- createBaseTable(tableName, null, "('e','i','o')");
- Connection conn1 = DriverManager.getConnection(getUrl());
- conn1.createStatement().execute("UPSERT INTO "+tableName+" values('b',1,2,4,'z')");
- conn1.createStatement().execute("UPSERT INTO "+tableName+" values('f',1,2,3,'z')");
- conn1.createStatement().execute("UPSERT INTO "+tableName+" values('j',2,4,2,'a')");
- conn1.createStatement().execute("UPSERT INTO "+tableName+" values('q',3,1,1,'c')");
- conn1.commit();
- conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
- ResultSet rs = conn1.createStatement().executeQuery("SELECT COUNT(*) FROM " + indexTableName);
- assertTrue(rs.next());
- assertEquals(4, rs.getInt(1));
- HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
- HTable indexTable = new HTable(admin.getConfiguration(),Bytes.toBytes(indexPhysicalTableName));
- Pair<byte[][], byte[][]> startEndKeys = indexTable.getStartEndKeys();
- byte[][] startKeys = startEndKeys.getFirst();
- byte[][] endKeys = startEndKeys.getSecond();
- for (int i = 0; i < startKeys.length; i++) {
- Scan s = new Scan();
- s.addFamily(QueryConstants.DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES);
- s.setStartRow(startKeys[i]);
- s.setStopRow(endKeys[i]);
- ResultScanner scanner = indexTable.getScanner(s);
- int count = 0;
- for(Result r:scanner){
- count++;
- }
- scanner.close();
- assertEquals(1, count);
- }
- indexTable.close();
- }
-
- @Test
- public void testLocalIndexScan() throws Exception {
- String tableName = schemaName + "." + generateUniqueName();
- String indexName = "IDX_" + generateUniqueName();
- String indexTableName = schemaName + "." + indexName;
- TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
- String indexPhysicalTableName = physicalTableName.getNameAsString();
-
- createBaseTable(tableName, null, "('e','i','o')");
- Connection conn1 = DriverManager.getConnection(getUrl());
- try{
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('a',1,2,5,'y')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('e',1,2,3,'b')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'a')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')");
- conn1.commit();
- conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
-
- ResultSet rs = conn1.createStatement().executeQuery("SELECT COUNT(*) FROM " + indexTableName);
- assertTrue(rs.next());
-
- HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
- int numRegions = admin.getTableRegions(physicalTableName).size();
-
- String query = "SELECT * FROM " + tableName +" where v1 like 'a%'";
- rs = conn1.createStatement().executeQuery("EXPLAIN "+ query);
-
- assertEquals(
- "CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER "
- + indexPhysicalTableName + " [1,'a'] - [1,'b']\n"
- + " SERVER FILTER BY FIRST KEY ONLY\n"
- + "CLIENT MERGE SORT",
- QueryUtil.getExplainPlan(rs));
-
- rs = conn1.createStatement().executeQuery(query);
- assertTrue(rs.next());
- assertEquals("f", rs.getString("t_id"));
- assertEquals(1, rs.getInt("k1"));
- assertEquals(2, rs.getInt("k2"));
- assertEquals("a", rs.getString("v1"));
- assertEquals(3, rs.getInt("k3"));
- assertTrue(rs.next());
- assertEquals("j", rs.getString("t_id"));
- assertEquals(2, rs.getInt("k1"));
- assertEquals(4, rs.getInt("k2"));
- assertEquals("a", rs.getString("v1"));
- assertEquals(2, rs.getInt("k3"));
- assertFalse(rs.next());
- query = "SELECT t_id, k1, k2,V1 FROM " + tableName +" where v1='a'";
- rs = conn1.createStatement().executeQuery("EXPLAIN "+ query);
-
- assertEquals(
- "CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER "
- + indexPhysicalTableName + " [1,'a']\n"
- + " SERVER FILTER BY FIRST KEY ONLY\n"
- + "CLIENT MERGE SORT",
- QueryUtil.getExplainPlan(rs));
-
- rs = conn1.createStatement().executeQuery(query);
- assertTrue(rs.next());
- assertEquals("f", rs.getString("t_id"));
- assertEquals(1, rs.getInt("k1"));
- assertEquals(2, rs.getInt("k2"));
- assertTrue(rs.next());
- assertEquals("j", rs.getString("t_id"));
- assertEquals(2, rs.getInt("k1"));
- assertEquals(4, rs.getInt("k2"));
- assertFalse(rs.next());
- query = "SELECT t_id, k1, k2,V1, k3 FROM " + tableName +" where v1<='z' order by k3";
- rs = conn1.createStatement().executeQuery("EXPLAIN "+ query);
-
- assertEquals("CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER " + indexPhysicalTableName
- + " [1,*] - [1,'z']\n" + " SERVER FILTER BY FIRST KEY ONLY\n"
- + " SERVER SORTED BY [\"K3\"]\n" + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs));
-
- rs = conn1.createStatement().executeQuery(query);
- assertTrue(rs.next());
- assertEquals(1, rs.getInt("k3"));
- assertTrue(rs.next());
- assertEquals(2, rs.getInt("k3"));
- assertTrue(rs.next());
- assertEquals(3, rs.getInt("k3"));
- assertTrue(rs.next());
- assertEquals(3, rs.getInt("k3"));
- assertTrue(rs.next());
- assertEquals(4, rs.getInt("k3"));
- assertTrue(rs.next());
- assertEquals(5, rs.getInt("k3"));
- assertFalse(rs.next());
-
- query = "SELECT t_id, k1, k2,v1 from " + tableName + " order by V1,t_id";
- rs = conn1.createStatement().executeQuery("EXPLAIN " + query);
-
- assertEquals(
- "CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER "
- + indexPhysicalTableName +" [1]\n"
- + " SERVER FILTER BY FIRST KEY ONLY\n"
- + "CLIENT MERGE SORT",
- QueryUtil.getExplainPlan(rs));
-
- rs = conn1.createStatement().executeQuery(query);
- assertTrue(rs.next());
- assertEquals("f", rs.getString("t_id"));
- assertEquals(1, rs.getInt("k1"));
- assertEquals(2, rs.getInt("k2"));
- assertEquals("a", rs.getString("V1"));
- assertTrue(rs.next());
- assertEquals("j", rs.getString("t_id"));
- assertEquals(2, rs.getInt("k1"));
- assertEquals(4, rs.getInt("k2"));
- assertEquals("a", rs.getString("V1"));
- assertTrue(rs.next());
- assertEquals("e", rs.getString("t_id"));
- assertEquals(1, rs.getInt("k1"));
- assertEquals(2, rs.getInt("k2"));
- assertEquals("b", rs.getString("V1"));
- assertTrue(rs.next());
- assertEquals("q", rs.getString("t_id"));
- assertEquals(3, rs.getInt("k1"));
- assertEquals(1, rs.getInt("k2"));
- assertEquals("c", rs.getString("V1"));
- assertTrue(rs.next());
- assertEquals("a", rs.getString("t_id"));
- assertEquals(1, rs.getInt("k1"));
- assertEquals(2, rs.getInt("k2"));
- assertEquals("y", rs.getString("V1"));
- assertTrue(rs.next());
- assertEquals("b", rs.getString("t_id"));
- assertEquals(1, rs.getInt("k1"));
- assertEquals(2, rs.getInt("k2"));
- assertEquals("z", rs.getString("V1"));
- } finally {
- conn1.close();
- }
- }
-
- @Test
public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception {
String tableName = schemaName + "." + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
@@ -670,31 +445,6 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
}
@Test
- public void testScanWhenATableHasMultipleLocalIndexes() throws Exception {
- String tableName = schemaName + "." + generateUniqueName();
- String indexName = "IDX_" + generateUniqueName();
-
- createBaseTable(tableName, null, "('e','i','o')");
- Connection conn1 = DriverManager.getConnection(getUrl());
- try {
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'a')");
- conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')");
- conn1.commit();
- conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
- conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + "2 ON " + tableName + "(k3)");
- conn1.commit();
- conn1 = DriverManager.getConnection(getUrl());
- ResultSet rs = conn1.createStatement().executeQuery("SELECT COUNT(*) FROM " + tableName);
- assertTrue(rs.next());
- assertEquals(4, rs.getInt(1));
- } finally {
- conn1.close();
- }
- }
-
- @Test
public void testLocalIndexesOnTableWithImmutableRows() throws Exception {
String tableName = schemaName + "." + generateUniqueName();
String indexName = "IDX_" + generateUniqueName();
@@ -791,49 +541,4 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
}
}
- @Test
- public void testLocalIndexScanWithSmallChunks() throws Exception {
- String tableName = schemaName + "." + generateUniqueName();
- String indexName = "IDX_" + generateUniqueName();
-
- createBaseTable(tableName, 3, null);
- Properties props = new Properties();
- props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, "2");
- props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
- Connection conn1 = DriverManager.getConnection(getUrl(), props);
- try{
- String[] strings = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
- for (int i = 0; i < 26; i++) {
- conn1.createStatement().execute(
- "UPSERT INTO " + tableName + " values('"+strings[i]+"'," + i + ","
- + (i + 1) + "," + (i + 2) + ",'" + strings[25 - i] + "')");
- }
- conn1.commit();
- conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
- conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + "_2 ON " + tableName + "(k3)");
-
- ResultSet rs = conn1.createStatement().executeQuery("SELECT * FROM " + tableName);
- assertTrue(rs.next());
-
- String query = "SELECT t_id,k1,v1 FROM " + tableName;
- rs = conn1.createStatement().executeQuery(query);
- for (int j = 0; j < 26; j++) {
- assertTrue(rs.next());
- assertEquals(strings[25 - j], rs.getString("t_id"));
- assertEquals(25 - j, rs.getInt("k1"));
- assertEquals(strings[j], rs.getString("V1"));
- }
- query = "SELECT t_id,k1,k3 FROM " + tableName;
- rs = conn1.createStatement().executeQuery(query);
- Thread.sleep(1000);
- for (int j = 0; j < 26; j++) {
- assertTrue(rs.next());
- assertEquals(strings[j], rs.getString("t_id"));
- assertEquals(j, rs.getInt("k1"));
- assertEquals(j + 2, rs.getInt("k3"));
- }
- } finally {
- conn1.close();
- }
- }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cae4a7c4/phoenix-core/src/it/java/org/apache/phoenix/tx/FlappingTransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/FlappingTransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/FlappingTransactionIT.java
new file mode 100644
index 0000000..5a990cf
--- /dev/null
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/FlappingTransactionIT.java
@@ -0,0 +1,328 @@
+/*
+ * 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.tx;
+
+import static org.apache.phoenix.util.TestUtil.INDEX_DATA_SCHEMA;
+import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.apache.phoenix.util.TestUtil.createTransactionalTable;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+
+import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.exception.SQLExceptionCode;
+import org.apache.phoenix.jdbc.PhoenixConnection;
+import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.TestUtil;
+import org.apache.tephra.TransactionContext;
+import org.apache.tephra.TransactionSystemClient;
+import org.apache.tephra.TxConstants;
+import org.apache.tephra.hbase.TransactionAwareHTable;
+import org.junit.Test;
+
+/**
+ *
+ * Transaction related tests that flap when run in parallel.
+ * TODO: review with Tephra community
+ *
+ */
+public class FlappingTransactionIT extends ParallelStatsDisabledIT {
+ @Test
+ public void testDelete() throws Exception {
+ String transTableName = generateUniqueName();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
+ String selectSQL = "SELECT * FROM " + fullTableName;
+ try (Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ Connection conn2 = DriverManager.getConnection(getUrl())) {
+ TestUtil.createTransactionalTable(conn, fullTableName);
+ conn1.setAutoCommit(false);
+ ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+
+ String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+ PreparedStatement stmt = conn1.prepareStatement(upsert);
+ // upsert two rows
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+ conn1.commit();
+
+ TestUtil.setRowKeyColumns(stmt, 2);
+ stmt.execute();
+
+ // verify rows can be read even though commit has not been called
+ int rowsDeleted = conn1.createStatement().executeUpdate("DELETE FROM " + fullTableName);
+ assertEquals(2, rowsDeleted);
+
+ // Delete and second upsert not committed yet, so there should be one row.
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+
+ conn1.commit();
+
+ // verify rows are deleted after commit
+ rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+ }
+ }
+
+ @Test
+ public void testInflightUpdateNotSeen() throws Exception {
+ String transTableName = generateUniqueName();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
+ String selectSQL = "SELECT * FROM " + fullTableName;
+ try (Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ Connection conn2 = DriverManager.getConnection(getUrl())) {
+ createTransactionalTable(conn, fullTableName);
+ conn1.setAutoCommit(false);
+ conn2.setAutoCommit(true);
+ ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+
+ String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+ PreparedStatement stmt = conn1.prepareStatement(upsert);
+ // upsert two rows
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+ conn1.commit();
+
+ TestUtil.setRowKeyColumns(stmt, 2);
+ stmt.execute();
+
+ rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 IS NULL");
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+
+ upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk, int_col1) VALUES(?, ?, ?, ?, ?, ?, 1)";
+ stmt = conn1.prepareStatement(upsert);
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+
+ rs = conn1.createStatement().executeQuery("SELECT int_col1 FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ assertFalse(rs.next());
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertEquals(0, rs.getInt(1));
+ rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertFalse(rs.next());
+
+ conn1.commit();
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertFalse(rs.next());
+ }
+ }
+
+ @Test
+ public void testInflightDeleteNotSeen() throws Exception {
+ String transTableName = generateUniqueName();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
+ String selectSQL = "SELECT * FROM " + fullTableName;
+ try (Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ Connection conn2 = DriverManager.getConnection(getUrl())) {
+ createTransactionalTable(conn, fullTableName);
+ conn1.setAutoCommit(false);
+ conn2.setAutoCommit(true);
+ ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+
+ String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+ PreparedStatement stmt = conn1.prepareStatement(upsert);
+ // upsert two rows
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+ TestUtil.setRowKeyColumns(stmt, 2);
+ stmt.execute();
+
+ conn1.commit();
+
+ rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+
+ String delete = "DELETE FROM " + fullTableName + " WHERE varchar_pk = 'varchar1'";
+ stmt = conn1.prepareStatement(delete);
+ int count = stmt.executeUpdate();
+ assertEquals(1,count);
+
+ rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ assertFalse(rs.next());
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+ assertFalse(rs.next());
+
+ conn1.commit();
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ assertFalse(rs.next());
+ }
+ }
+
+ @Test
+ public void testExternalTxContext() throws Exception {
+ ResultSet rs;
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ conn.setAutoCommit(false);
+ String fullTableName = generateUniqueName();
+ PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
+
+ TransactionSystemClient txServiceClient = pconn.getQueryServices().getTransactionSystemClient();
+
+ Statement stmt = conn.createStatement();
+ stmt.execute("CREATE TABLE " + fullTableName + "(K VARCHAR PRIMARY KEY, V1 VARCHAR, V2 VARCHAR) TRANSACTIONAL=true");
+ HTableInterface htable = pconn.getQueryServices().getTable(Bytes.toBytes(fullTableName));
+ stmt.executeUpdate("upsert into " + fullTableName + " values('x', 'a', 'a')");
+ conn.commit();
+
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1,rs.getInt(1));
+ }
+
+ // Use HBase level Tephra APIs to start a new transaction
+ TransactionAwareHTable txAware = new TransactionAwareHTable(htable, TxConstants.ConflictDetection.ROW);
+ TransactionContext txContext = new TransactionContext(txServiceClient, txAware);
+ txContext.start();
+
+ // Use HBase APIs to add a new row
+ Put put = new Put(Bytes.toBytes("z"));
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("b"));
+ txAware.put(put);
+
+ // Use Phoenix APIs to add new row (sharing the transaction context)
+ pconn.setTransactionContext(txContext);
+ conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('y', 'c', 'c')");
+
+ // New connection should not see data as it hasn't been committed yet
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1,rs.getInt(1));
+ }
+
+ // Use new connection to create a row with a conflict
+ Connection connWithConflict = DriverManager.getConnection(getUrl(), props);
+ connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('z', 'd', 'd')");
+
+ // Existing connection should see data even though it hasn't been committed yet
+ rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(3,rs.getInt(1));
+
+ // Use Tephra APIs directly to finish (i.e. commit) the transaction
+ txContext.finish();
+
+ // Confirm that attempt to commit row with conflict fails
+ try {
+ connWithConflict.commit();
+ fail();
+ } catch (SQLException e) {
+ assertEquals(SQLExceptionCode.TRANSACTION_CONFLICT_EXCEPTION.getErrorCode(), e.getErrorCode());
+ } finally {
+ connWithConflict.close();
+ }
+
+ // New connection should now see data as it has been committed
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(3,rs.getInt(1));
+ }
+
+ // Repeat the same as above, but this time abort the transaction
+ txContext = new TransactionContext(txServiceClient, txAware);
+ txContext.start();
+
+ // Use HBase APIs to add a new row
+ put = new Put(Bytes.toBytes("j"));
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("e"));
+ txAware.put(put);
+
+ // Use Phoenix APIs to add new row (sharing the transaction context)
+ pconn.setTransactionContext(txContext);
+ conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('k', 'f', 'f')");
+
+ // Existing connection should see data even though it hasn't been committed yet
+ rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(5,rs.getInt(1));
+
+ connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('k', 'g', 'g')");
+ rs = connWithConflict.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(4,rs.getInt(1));
+
+ // Use Tephra APIs directly to abort (i.e. rollback) the transaction
+ txContext.abort();
+
+ rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(3,rs.getInt(1));
+
+ // Should succeed since conflicting row was aborted
+ connWithConflict.commit();
+
+ // New connection should now see data as it has been committed
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(4,rs.getInt(1));
+ }
+
+ // Even using HBase APIs directly, we shouldn't find 'j' since a delete marker would have been
+ // written to hide it.
+ Result result = htable.get(new Get(Bytes.toBytes("j")));
+ assertTrue(result.isEmpty());
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cae4a7c4/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
deleted file mode 100644
index e0005e4..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * 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.tx;
-
-import static org.apache.phoenix.util.TestUtil.INDEX_DATA_SCHEMA;
-import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
-import static org.apache.phoenix.util.TestUtil.createTransactionalTable;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Properties;
-
-import javax.annotation.concurrent.NotThreadSafe;
-
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HTableInterface;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
-import org.apache.phoenix.exception.SQLExceptionCode;
-import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.TestUtil;
-import org.apache.tephra.TransactionContext;
-import org.apache.tephra.TransactionSystemClient;
-import org.apache.tephra.TxConstants;
-import org.apache.tephra.hbase.TransactionAwareHTable;
-import org.junit.Test;
-
-/**
- *
- * Transaction related tests that flap when run in parallel.
- * TODO: review with Tephra community
- *
- */
-@NotThreadSafe // Prevents test methods from running in parallel
-public class NotThreadSafeTransactionIT extends ParallelStatsDisabledIT {
- @Test
- public void testDelete() throws Exception {
- String transTableName = generateUniqueName();
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
- String selectSQL = "SELECT * FROM " + fullTableName;
- try (Connection conn = DriverManager.getConnection(getUrl());
- Connection conn1 = DriverManager.getConnection(getUrl());
- Connection conn2 = DriverManager.getConnection(getUrl())) {
- TestUtil.createTransactionalTable(conn, fullTableName);
- conn1.setAutoCommit(false);
- ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
-
- String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
- PreparedStatement stmt = conn1.prepareStatement(upsert);
- // upsert two rows
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
- conn1.commit();
-
- TestUtil.setRowKeyColumns(stmt, 2);
- stmt.execute();
-
- // verify rows can be read even though commit has not been called
- int rowsDeleted = conn1.createStatement().executeUpdate("DELETE FROM " + fullTableName);
- assertEquals(2, rowsDeleted);
-
- // Delete and second upsert not committed yet, so there should be one row.
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
-
- conn1.commit();
-
- // verify rows are deleted after commit
- rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
- }
- }
-
- @Test
- public void testInflightUpdateNotSeen() throws Exception {
- String transTableName = generateUniqueName();
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
- String selectSQL = "SELECT * FROM " + fullTableName;
- try (Connection conn = DriverManager.getConnection(getUrl());
- Connection conn1 = DriverManager.getConnection(getUrl());
- Connection conn2 = DriverManager.getConnection(getUrl())) {
- createTransactionalTable(conn, fullTableName);
- conn1.setAutoCommit(false);
- conn2.setAutoCommit(true);
- ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
-
- String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
- PreparedStatement stmt = conn1.prepareStatement(upsert);
- // upsert two rows
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
- conn1.commit();
-
- TestUtil.setRowKeyColumns(stmt, 2);
- stmt.execute();
-
- rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 IS NULL");
- assertTrue(rs.next());
- assertEquals(2, rs.getInt(1));
-
- upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk, int_col1) VALUES(?, ?, ?, ?, ?, ?, 1)";
- stmt = conn1.prepareStatement(upsert);
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
-
- rs = conn1.createStatement().executeQuery("SELECT int_col1 FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- assertFalse(rs.next());
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertEquals(0, rs.getInt(1));
- rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
- assertFalse(rs.next());
-
- conn1.commit();
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertFalse(rs.next());
- }
- }
-
- @Test
- public void testInflightDeleteNotSeen() throws Exception {
- String transTableName = generateUniqueName();
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
- String selectSQL = "SELECT * FROM " + fullTableName;
- try (Connection conn = DriverManager.getConnection(getUrl());
- Connection conn1 = DriverManager.getConnection(getUrl());
- Connection conn2 = DriverManager.getConnection(getUrl())) {
- createTransactionalTable(conn, fullTableName);
- conn1.setAutoCommit(false);
- conn2.setAutoCommit(true);
- ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
-
- String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
- PreparedStatement stmt = conn1.prepareStatement(upsert);
- // upsert two rows
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
- TestUtil.setRowKeyColumns(stmt, 2);
- stmt.execute();
-
- conn1.commit();
-
- rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(2, rs.getInt(1));
-
- String delete = "DELETE FROM " + fullTableName + " WHERE varchar_pk = 'varchar1'";
- stmt = conn1.prepareStatement(delete);
- int count = stmt.executeUpdate();
- assertEquals(1,count);
-
- rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- assertFalse(rs.next());
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(2, rs.getInt(1));
- assertFalse(rs.next());
-
- conn1.commit();
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- assertFalse(rs.next());
- }
- }
-
- @Test
- public void testExternalTxContext() throws Exception {
- ResultSet rs;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- conn.setAutoCommit(false);
- String fullTableName = generateUniqueName();
- PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
-
- TransactionSystemClient txServiceClient = pconn.getQueryServices().getTransactionSystemClient();
-
- Statement stmt = conn.createStatement();
- stmt.execute("CREATE TABLE " + fullTableName + "(K VARCHAR PRIMARY KEY, V1 VARCHAR, V2 VARCHAR) TRANSACTIONAL=true");
- HTableInterface htable = pconn.getQueryServices().getTable(Bytes.toBytes(fullTableName));
- stmt.executeUpdate("upsert into " + fullTableName + " values('x', 'a', 'a')");
- conn.commit();
-
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1,rs.getInt(1));
- }
-
- // Use HBase level Tephra APIs to start a new transaction
- TransactionAwareHTable txAware = new TransactionAwareHTable(htable, TxConstants.ConflictDetection.ROW);
- TransactionContext txContext = new TransactionContext(txServiceClient, txAware);
- txContext.start();
-
- // Use HBase APIs to add a new row
- Put put = new Put(Bytes.toBytes("z"));
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("b"));
- txAware.put(put);
-
- // Use Phoenix APIs to add new row (sharing the transaction context)
- pconn.setTransactionContext(txContext);
- conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('y', 'c', 'c')");
-
- // New connection should not see data as it hasn't been committed yet
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1,rs.getInt(1));
- }
-
- // Use new connection to create a row with a conflict
- Connection connWithConflict = DriverManager.getConnection(getUrl(), props);
- connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('z', 'd', 'd')");
-
- // Existing connection should see data even though it hasn't been committed yet
- rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(3,rs.getInt(1));
-
- // Use Tephra APIs directly to finish (i.e. commit) the transaction
- txContext.finish();
-
- // Confirm that attempt to commit row with conflict fails
- try {
- connWithConflict.commit();
- fail();
- } catch (SQLException e) {
- assertEquals(SQLExceptionCode.TRANSACTION_CONFLICT_EXCEPTION.getErrorCode(), e.getErrorCode());
- } finally {
- connWithConflict.close();
- }
-
- // New connection should now see data as it has been committed
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(3,rs.getInt(1));
- }
-
- // Repeat the same as above, but this time abort the transaction
- txContext = new TransactionContext(txServiceClient, txAware);
- txContext.start();
-
- // Use HBase APIs to add a new row
- put = new Put(Bytes.toBytes("j"));
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("e"));
- txAware.put(put);
-
- // Use Phoenix APIs to add new row (sharing the transaction context)
- pconn.setTransactionContext(txContext);
- conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('k', 'f', 'f')");
-
- // Existing connection should see data even though it hasn't been committed yet
- rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(5,rs.getInt(1));
-
- connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('k', 'g', 'g')");
- rs = connWithConflict.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(4,rs.getInt(1));
-
- // Use Tephra APIs directly to abort (i.e. rollback) the transaction
- txContext.abort();
-
- rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(3,rs.getInt(1));
-
- // Should succeed since conflicting row was aborted
- connWithConflict.commit();
-
- // New connection should now see data as it has been committed
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(4,rs.getInt(1));
- }
-
- // Even using HBase APIs directly, we shouldn't find 'j' since a delete marker would have been
- // written to hide it.
- Result result = htable.get(new Get(Bytes.toBytes("j")));
- assertTrue(result.isEmpty());
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cae4a7c4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index dac2b4d..2da2077 100644
--- a/pom.xml
+++ b/pom.xml
@@ -234,7 +234,7 @@
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
<runOrder>alphabetical</runOrder>
- <parallel>classesAndMethods</parallel>
+ <parallel>methods</parallel>
<threadCount>20</threadCount>
<argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
@@ -261,7 +261,7 @@
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
<runOrder>alphabetical</runOrder>
- <parallel>classesAndMethods</parallel>
+ <parallel>methods</parallel>
<threadCount>20</threadCount>
<!-- We're intermittantly hitting this assertion:
Caused by: java.lang.AssertionError: we should never remove a different context
[25/48] phoenix git commit: PHOENIX-3153 Convert join-related IT
tests to be derived from BaseHBaseManagedTimeTableReuseIT
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
index 38ee4cd..eade3cb 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
@@ -17,14 +17,6 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ORDER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SCHEMA;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -42,65 +34,23 @@ import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.schema.TableAlreadyExistsException;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.Before;
-import org.junit.BeforeClass;
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;
-import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
-
- private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- private String[] indexDDL;
- private String[] plans;
-
- public SortMergeJoinIT(String[] indexDDL, String[] plans) {
- this.indexDDL = indexDDL;
- this.plans = plans;
- }
-
- @BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- @Before
- public void initTable() throws Exception {
- initJoinTableValues(getUrl(), null, null);
- if (indexDDL != null && indexDDL.length > 0) {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- for (String ddl : indexDDL) {
- try {
- conn.createStatement().execute(ddl);
- } catch (TableAlreadyExistsException e) {
- }
- }
- conn.close();
- }
- }
+public class SortMergeJoinIT extends BaseJoinIT {
@Parameters
public static Collection<Object> data() {
@@ -108,29 +58,29 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
testCases.add(new String[][] {
{}, {
"SORT-MERGE-JOIN (LEFT) TABLES\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\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_DISPLAY_NAME + "\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_DISPLAY_NAME + "\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_DISPLAY_NAME + "\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_DISPLAY_NAME + "\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.ItemTable\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
"AND\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER Join.ItemTable\n" +
+ " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + "\n" +
" SERVER FILTER BY FIRST KEY ONLY"
}});
testCases.add(new String[][] {
@@ -150,7 +100,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
" 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_DISPLAY_NAME + "\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" +
@@ -162,7 +112,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
" SERVER SORTED BY [\"I.:item_id\"]\n" +
" CLIENT MERGE SORT\n" +
"AND\n" +
- " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\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",
@@ -186,40 +136,40 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
"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_DISPLAY_NAME + " [1]\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_DISPLAY_NAME + " [1]\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_DISPLAY_NAME + "\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_DISPLAY_NAME + " [1]\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_DISPLAY_NAME + "\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.ItemTable [1]\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.ItemTable [1]\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" +
@@ -229,11 +179,15 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
}
+ public SortMergeJoinIT(String[] indexDDL, String[] plans) {
+ super(indexDDL, plans);
+ }
+
@Test
public void testDefaultJoin() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -276,9 +230,9 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testInnerJoin() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -327,12 +281,12 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testLeftJoin() throws Exception {
- String query[] = new String[3];
- query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
- query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ " + JOIN_ITEM_TABLE_FULL_NAME + ".\"item_id\", " + JOIN_ITEM_TABLE_FULL_NAME + ".name, " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".\"supplier_id\", " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " ON " + JOIN_ITEM_TABLE_FULL_NAME + ".\"supplier_id\" = " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".\"supplier_id\" ORDER BY \"item_id\"";
- query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", " + JOIN_ITEM_TABLE_FULL_NAME + ".name, supp.\"supplier_id\", " + JOIN_SUPPLIER_TABLE_FULL_NAME + ".name, next value for my.seq FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON " + JOIN_ITEM_TABLE_FULL_NAME + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query[] = new String[3];
+ query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
+ query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"item_id\", " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".name, " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".\"supplier_id\", " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " ON " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"supplier_id\" = " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".\"supplier_id\" ORDER BY \"item_id\"";
+ query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".name, supp.\"supplier_id\", " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ".name, next value for " + seqName + " FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
@@ -384,9 +338,9 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testRightJoin() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp RIGHT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " item ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item ON item.\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -434,10 +388,10 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testInnerJoinWithPreFilters() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -496,9 +450,9 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testLeftJoinWithPreFilters() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -546,10 +500,10 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithPostFilters() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp RIGHT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " item ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005' ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" BETWEEN '0000000001' AND '0000000005' ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE supp.\"supplier_id\" = '0000000001' OR supp.\"supplier_id\" = '0000000005' ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -608,24 +562,24 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testStarJoin() throws Exception {
- String[] query = new String[5];
- query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o, "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c, "
- + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[3] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + JOIN_ORDER_TABLE_FULL_NAME + " o, "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c), "
- + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[4] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o, ("
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c, "
- + JOIN_ITEM_TABLE_FULL_NAME + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String[] query = new String[5];
+ query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN "
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
+ query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o, "
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c, "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
+ query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o JOIN "
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
+ query[3] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o, "
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c), "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
+ query[4] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o, ("
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c, "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
try {
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
@@ -674,14 +628,14 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testLeftJoinWithAggregation() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC";
- String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i LEFT JOIN "
- + JOIN_ORDER_TABLE_FULL_NAME + " o ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC";
+ String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i LEFT JOIN "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -749,12 +703,12 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testRightJoinWithAggregation() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o RIGHT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o RIGHT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.\"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" GROUP BY i.\"item_id\" ORDER BY q DESC NULLS LAST, iid";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -814,14 +768,14 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testLeftRightJoin() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + "(" + JOIN_ITEM_TABLE_FULL_NAME + " i RIGHT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
- + " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + "(" + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i RIGHT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ + " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -917,14 +871,14 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testRightLeftJoin() throws Exception {
- String query1 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i RIGHT JOIN "
- + JOIN_ORDER_TABLE_FULL_NAME + " o ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"";
- String query2 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o RIGHT JOIN "
- + "(" + JOIN_ITEM_TABLE_FULL_NAME + " i LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
- + " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i RIGHT JOIN "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"";
+ String query2 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + "(" + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ + " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -1020,15 +974,15 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testMultiLeftJoin() throws Exception {
- String[] queries = {
- "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"",
- "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + "(" + JOIN_ITEM_TABLE_FULL_NAME + " i LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\") "
- + "ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\""};
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String[] queries = {
+ "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"",
+ "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + "(" + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\") "
+ + "ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\""};
try {
for (String query : queries) {
PreparedStatement statement = conn.prepareStatement(query);
@@ -1073,12 +1027,11 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testMultiRightJoin() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o RIGHT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
-
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1147,13 +1100,13 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
// to test that repeated row keys within a single chunk are handled properly
@Test
public void testMultiRightJoin_SmallChunkSize() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o RIGHT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
-
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, "1");
Connection conn = DriverManager.getConnection(getUrl(), props);
+
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1220,98 +1173,98 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithWildcard() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + JOIN_ITEM_TABLE_FULL_NAME + " LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON " + JOIN_ITEM_TABLE_FULL_NAME + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".\"supplier_id\" = supp.\"supplier_id\" ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id"), "0000000001");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".NAME"), "T1");
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".PRICE"), 100);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT1"), 5);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT2"), 10);
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".supplier_id"), "0000000001");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DESCRIPTION"), "Item T1");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".item_id"), "0000000001");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".NAME"), "T1");
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".PRICE"), 100);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT1"), 5);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT2"), 10);
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".supplier_id"), "0000000001");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DESCRIPTION"), "Item T1");
assertEquals(rs.getString("SUPP.supplier_id"), "0000000001");
assertEquals(rs.getString("supp.name"), "S1");
assertEquals(rs.getString("supp.phone"), "888-888-1111");
assertEquals(rs.getString("supp.address"), "101 YYY Street");
assertEquals(rs.getString("supp.loc_id"), "10001");
assertTrue (rs.next());
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id"), "0000000002");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".NAME"), "T2");
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".PRICE"), 200);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT1"), 5);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT2"), 8);
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".supplier_id"), "0000000001");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DESCRIPTION"), "Item T2");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".item_id"), "0000000002");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".NAME"), "T2");
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".PRICE"), 200);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT1"), 5);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT2"), 8);
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".supplier_id"), "0000000001");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DESCRIPTION"), "Item T2");
assertEquals(rs.getString("SUPP.supplier_id"), "0000000001");
assertEquals(rs.getString("supp.name"), "S1");
assertEquals(rs.getString("supp.phone"), "888-888-1111");
assertEquals(rs.getString("supp.address"), "101 YYY Street");
assertEquals(rs.getString("supp.loc_id"), "10001");
assertTrue (rs.next());
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id"), "0000000003");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".NAME"), "T3");
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".PRICE"), 300);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT1"), 8);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT2"), 12);
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".supplier_id"), "0000000002");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DESCRIPTION"), "Item T3");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".item_id"), "0000000003");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".NAME"), "T3");
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".PRICE"), 300);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT1"), 8);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT2"), 12);
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".supplier_id"), "0000000002");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DESCRIPTION"), "Item T3");
assertEquals(rs.getString("SUPP.supplier_id"), "0000000002");
assertEquals(rs.getString("supp.name"), "S2");
assertEquals(rs.getString("supp.phone"), "888-888-2222");
assertEquals(rs.getString("supp.address"), "202 YYY Street");
assertEquals(rs.getString("supp.loc_id"), "10002");
assertTrue (rs.next());
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id"), "0000000004");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".NAME"), "T4");
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".PRICE"), 400);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT1"), 6);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT2"), 10);
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".supplier_id"), "0000000002");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DESCRIPTION"), "Item T4");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".item_id"), "0000000004");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".NAME"), "T4");
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".PRICE"), 400);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT1"), 6);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT2"), 10);
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".supplier_id"), "0000000002");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DESCRIPTION"), "Item T4");
assertEquals(rs.getString("SUPP.supplier_id"), "0000000002");
assertEquals(rs.getString("supp.name"), "S2");
assertEquals(rs.getString("supp.phone"), "888-888-2222");
assertEquals(rs.getString("supp.address"), "202 YYY Street");
assertEquals(rs.getString("supp.loc_id"), "10002");
assertTrue (rs.next());
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id"), "0000000005");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".NAME"), "T5");
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".PRICE"), 500);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT1"), 8);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT2"), 15);
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".supplier_id"), "0000000005");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DESCRIPTION"), "Item T5");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".item_id"), "0000000005");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".NAME"), "T5");
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".PRICE"), 500);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT1"), 8);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT2"), 15);
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".supplier_id"), "0000000005");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DESCRIPTION"), "Item T5");
assertEquals(rs.getString("SUPP.supplier_id"), "0000000005");
assertEquals(rs.getString("supp.name"), "S5");
assertEquals(rs.getString("supp.phone"), "888-888-5555");
assertEquals(rs.getString("supp.address"), "505 YYY Street");
assertEquals(rs.getString("supp.loc_id"), "10005");
assertTrue (rs.next());
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id"), "0000000006");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".NAME"), "T6");
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".PRICE"), 600);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT1"), 8);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT2"), 15);
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".supplier_id"), "0000000006");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DESCRIPTION"), "Item T6");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".item_id"), "0000000006");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".NAME"), "T6");
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".PRICE"), 600);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT1"), 8);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT2"), 15);
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".supplier_id"), "0000000006");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DESCRIPTION"), "Item T6");
assertEquals(rs.getString("SUPP.supplier_id"), "0000000006");
assertEquals(rs.getString("supp.name"), "S6");
assertEquals(rs.getString("supp.phone"), "888-888-6666");
assertEquals(rs.getString("supp.address"), "606 YYY Street");
assertEquals(rs.getString("supp.loc_id"), "10006");
assertTrue (rs.next());
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".item_id"), "invalid001");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".NAME"), "INVALID-1");
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".PRICE"), 0);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT1"), 0);
- assertEquals(rs.getInt(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DISCOUNT2"), 0);
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".supplier_id"), "0000000000");
- assertEquals(rs.getString(JOIN_ITEM_TABLE_DISPLAY_NAME + ".DESCRIPTION"), "Invalid item for join test");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".item_id"), "invalid001");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".NAME"), "INVALID-1");
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".PRICE"), 0);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT1"), 0);
+ assertEquals(rs.getInt(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DISCOUNT2"), 0);
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".supplier_id"), "0000000000");
+ assertEquals(rs.getString(getDisplayTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".DESCRIPTION"), "Invalid item for join test");
assertNull(rs.getString("SUPP.supplier_id"));
assertNull(rs.getString("supp.name"));
assertNull(rs.getString("supp.phone"));
@@ -1326,11 +1279,11 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithTableWildcard() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.*, "+ JOIN_ITEM_TABLE_FULL_NAME + ".*, \"order_id\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o RIGHT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.*, "+ getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ".*, \"order_id\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1472,9 +1425,9 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinMultiJoinKeys() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ c.name, s.name FROM " + JOIN_CUSTOMER_TABLE_FULL_NAME + " c LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON \"customer_id\" = \"supplier_id\" AND c.loc_id = s.loc_id AND substr(s.name, 2, 1) = substr(c.name, 2, 1) ORDER BY \"customer_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ c.name, s.name FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON \"customer_id\" = \"supplier_id\" AND c.loc_id = s.loc_id AND substr(s.name, 2, 1) = substr(c.name, 2, 1) ORDER BY \"customer_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1505,10 +1458,10 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithDifferentNumericJoinKeyTypes() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o INNER JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" AND o.price = (i.price * (100 - discount2)) / 100.0 WHERE quantity < 5000";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" AND o.price = (i.price * (100 - discount2)) / 100.0 WHERE quantity < 5000";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1527,10 +1480,10 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithDifferentDateJoinKeyTypes() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, o.date FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o INNER JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.date = c.date ORDER BY \"order_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.date = c.date ORDER BY \"order_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1559,10 +1512,10 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithIncomparableJoinKeyTypes() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o INNER JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" AND o.price / 100 = substr(i.name, 2, 1)";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, i.price, discount2, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" AND o.price / 100 = substr(i.name, 2, 1)";
try {
PreparedStatement statement = conn.prepareStatement(query);
statement.executeQuery();
@@ -1576,10 +1529,10 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinPlanWithIndex() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON substr(item.name, 2, 1) = substr(supp.name, 2, 1) AND (supp.name BETWEEN 'S1' AND 'S5') WHERE item.name BETWEEN 'T1' AND 'T5' ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE (item.name = 'T1' OR item.name = 'T5') AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON substr(item.name, 2, 1) = substr(supp.name, 2, 1) AND (supp.name BETWEEN 'S1' AND 'S5') WHERE item.name BETWEEN 'T1' AND 'T5' ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" WHERE (item.name = 'T1' OR item.name = 'T5') AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -1632,11 +1585,11 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithSkipMergeOptimization() throws Exception {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN "
- + JOIN_ORDER_TABLE_FULL_NAME + " o ON o.\"item_id\" = i.\"item_id\" AND quantity < 5000 RIGHT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ s.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" AND quantity < 5000 RIGHT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1660,7 +1613,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[0], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[0], QueryUtil.getExplainPlan(rs));
} finally {
conn.close();
}
@@ -1668,12 +1621,12 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testSelfJoin() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i2.\"item_id\", i1.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i1 JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i2 ON i1.\"item_id\" = i2.\"item_id\" ORDER BY i1.\"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i1.name, i2.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i1 JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i2 ON i1.\"item_id\" = i2.\"supplier_id\" ORDER BY i1.name, i2.name";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i2.\"item_id\", i1.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i1 JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i2 ON i1.\"item_id\" = i2.\"item_id\" ORDER BY i1.\"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i1.name, i2.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i1 JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i2 ON i1.\"item_id\" = i2.\"supplier_id\" ORDER BY i1.name, i2.name";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -1702,7 +1655,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query1);
- assertEquals(plans[2], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[2], QueryUtil.getExplainPlan(rs));
statement = conn.prepareStatement(query2);
rs = statement.executeQuery();
@@ -1733,7 +1686,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testUpsertWithJoin() throws Exception {
- String tempTable = "TEMP_JOINED_TABLE";
+ String tempTable = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
@@ -1748,14 +1701,14 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
conn.createStatement().execute("UPSERT /*+ USE_SORT_MERGE_JOIN*/ INTO " + tempTable
+ "(\"order_id\", item_name, supplier_name, quantity, date) "
+ "SELECT \"order_id\", i.name, s.name, quantity, date FROM "
- + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\"");
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\"");
conn.createStatement().execute("UPSERT /*+ USE_SORT_MERGE_JOIN*/ INTO " + tempTable
+ "(\"order_id\", item_name, quantity) "
+ "SELECT 'ORDER_SUM', i.name, sum(quantity) FROM "
- + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" "
+ "GROUP BY i.name ORDER BY i.name");
String query = "SELECT * FROM " + tempTable;
@@ -1819,8 +1772,8 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
//Bug: PHOENIX-1182
- String sourceTable = "SOURCE_TABLE";
- String joinTable = "JOIN_TABLE";
+ String sourceTable = generateUniqueName();
+ String joinTable = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + sourceTable
+ " (TID CHAR(3) NOT NULL, "
+ " A UNSIGNED_INT NOT NULL, "
@@ -1887,17 +1840,17 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testSubJoin() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, count(c.name), min(s.name), max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + "(" + JOIN_SUPPLIER_TABLE_FULL_NAME + " s RIGHT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, count(c.name), min(s.name), max(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + "(" + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON c.\"customer_id\" = o.\"customer_id\" GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + JOIN_CUSTOMER_TABLE_FULL_NAME + " c INNER JOIN "
- + "(" + JOIN_ORDER_TABLE_FULL_NAME + " o INNER JOIN "
- + "(" + JOIN_SUPPLIER_TABLE_FULL_NAME + " s RIGHT JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON c.\"customer_id\" = o.\"customer_id\" GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c INNER JOIN "
+ + "(" + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
+ + "(" + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s RIGHT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\") ON c.\"customer_id\" = o.\"customer_id\""
+ " WHERE c.\"customer_id\" <= '0000000005' AND \"order_id\" != '000000000000003' AND i.name != 'T3' ORDER BY c.\"customer_id\", i.name";
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2010,10 +1963,10 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithSubquery() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.sid, supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\" sid, name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " WHERE name BETWEEN 'S1' AND 'S5') AS supp ON item.\"supplier_id\" = supp.sid ORDER BY \"item_id\"";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + ") AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.sid, supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\" sid, name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " WHERE name BETWEEN 'S1' AND 'S5') AS supp ON item.\"supplier_id\" = supp.sid ORDER BY \"item_id\"";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name = 'S1' OR supp.name = 'S5') ORDER BY \"item_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2075,7 +2028,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " LIMIT 5) AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name != 'S1') ORDER BY \"item_id\"";
+ String query = "SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item INNER JOIN (SELECT reverse(loc_id), \"supplier_id\", name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " LIMIT 5) AS supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND (supp.name != 'S1') ORDER BY \"item_id\"";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -2102,16 +2055,16 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithSubqueryAndAggregation() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN (SELECT name, \"item_id\" iid FROM "
- + JOIN_ITEM_TABLE_FULL_NAME + ") AS i ON o.\"item_id\" = i.iid GROUP BY i.name ORDER BY i.name";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.iid, sum(o.quantity) q FROM (SELECT \"item_id\" iid, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") AS o LEFT JOIN (SELECT \"item_id\" FROM "
- + JOIN_ITEM_TABLE_FULL_NAME + ") AS i ON o.iid = i.\"item_id\" GROUP BY o.iid ORDER BY q DESC";
- String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid FROM " + JOIN_ITEM_TABLE_FULL_NAME + ") AS i LEFT JOIN (SELECT \"item_id\" iid, sum(quantity) q FROM "
- + JOIN_ORDER_TABLE_FULL_NAME + " GROUP BY \"item_id\") AS o ON o.iid = i.iid ORDER BY o.q DESC NULLS LAST, i.iid";
- String query4 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid, sum(quantity) q FROM " + JOIN_ORDER_TABLE_FULL_NAME + " GROUP BY \"item_id\") AS o JOIN (SELECT \"item_id\" iid FROM "
- + JOIN_ITEM_TABLE_FULL_NAME + ") AS i ON o.iid = i.iid ORDER BY o.q DESC, i.iid";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.name, sum(quantity) FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN (SELECT name, \"item_id\" iid FROM "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON o.\"item_id\" = i.iid GROUP BY i.name ORDER BY i.name";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.iid, sum(o.quantity) q FROM (SELECT \"item_id\" iid, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o LEFT JOIN (SELECT \"item_id\" FROM "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON o.iid = i.\"item_id\" GROUP BY o.iid ORDER BY q DESC";
+ String query3 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i LEFT JOIN (SELECT \"item_id\" iid, sum(quantity) q FROM "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " GROUP BY \"item_id\") AS o ON o.iid = i.iid ORDER BY o.q DESC NULLS LAST, i.iid";
+ String query4 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid, o.q FROM (SELECT \"item_id\" iid, sum(quantity) q FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " GROUP BY \"item_id\") AS o JOIN (SELECT \"item_id\" iid FROM "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON o.iid = i.iid ORDER BY o.q DESC, i.iid";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2196,17 +2149,17 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testNestedSubqueries() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ q.iname, count(c.name), min(q.sname), max(o.quantity) FROM (SELECT \"customer_id\" cid, \"item_id\" iid, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") AS o LEFT JOIN "
- + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iid, s.name sname, i.name iname FROM (SELECT \"supplier_id\" sid, name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, \"supplier_id\" sid FROM " + JOIN_ITEM_TABLE_FULL_NAME + ") AS i ON i.sid = s.sid) AS q"
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ q.iname, count(c.name), min(q.sname), max(o.quantity) FROM (SELECT \"customer_id\" cid, \"item_id\" iid, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o LEFT JOIN "
+ + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iid, s.name sname, i.name iname FROM (SELECT \"supplier_id\" sid, name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, \"supplier_id\" sid FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON i.sid = s.sid) AS q"
+ " ON o.iid = q.iid LEFT JOIN (SELECT \"customer_id\" cid, name FROM "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + ") AS c ON c.cid = o.cid GROUP BY q.iname ORDER BY q.iname";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, date FROM " + JOIN_CUSTOMER_TABLE_FULL_NAME + ") AS c INNER JOIN "
- + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.date odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, date FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") AS o INNER JOIN "
- + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iiid, i.name iname, i.price iprice, i.discount1 idiscount1, i.discount2 idiscount2, i.sid isid, i.description idescription, s.sid ssid, s.name sname, s.phone sphone, s.address saddress, s.loc_id sloc_id FROM (SELECT \"supplier_id\" sid, name, phone, address, loc_id FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, price, discount1, discount2, \"supplier_id\" sid, description FROM " + JOIN_ITEM_TABLE_FULL_NAME + ") AS i ON i.sid = s.sid) as qi"
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + ") AS c ON c.cid = o.cid GROUP BY q.iname ORDER BY q.iname";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, date FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + ") AS c INNER JOIN "
+ + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.date odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o INNER JOIN "
+ + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iiid, i.name iname, i.price iprice, i.discount1 idiscount1, i.discount2 idiscount2, i.sid isid, i.description idescription, s.sid ssid, s.name sname, s.phone sphone, s.address saddress, s.loc_id sloc_id FROM (SELECT \"supplier_id\" sid, name, phone, address, loc_id FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, price, discount1, discount2, \"supplier_id\" sid, description FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON i.sid = s.sid) as qi"
+ " ON o.iid = qi.iiid) as qo ON c.cid = qo.ocid"
+ " WHERE c.cid <= '0000000005' AND qo.ooid != '000000000000003' AND qo.iname != 'T3' ORDER BY c.cid, qo.iname";
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2316,14 +2269,14 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithLimit() throws Exception {
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN "
- + JOIN_ORDER_TABLE_FULL_NAME + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 4";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN "
- + JOIN_ORDER_TABLE_FULL_NAME + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 3";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 4";
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\" LIMIT 3";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2383,16 +2336,16 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithOffset() throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s LEFT JOIN " + JOIN_ITEM_TABLE_FULL_NAME
- + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN " + JOIN_ORDER_TABLE_FULL_NAME
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s LEFT JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME)
+ + " i ON i.\"supplier_id\" = s.\"supplier_id\" LEFT JOIN " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME)
+ " o ON o.\"item_id\" = i.\"item_id\" LIMIT 2 OFFSET 1";
String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, s.address, quantity FROM "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s JOIN " + JOIN_ITEM_TABLE_FULL_NAME
- + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN " + JOIN_ORDER_TABLE_FULL_NAME
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s JOIN " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME)
+ + " i ON i.\"supplier_id\" = s.\"supplier_id\" JOIN " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME)
+ " o ON o.\"item_id\" = i.\"item_id\" LIMIT 1 OFFSET 2";
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@ -2430,7 +2383,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item, " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp WHERE item.\"supplier_id\" > supp.\"supplier_id\"";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item, " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp WHERE item.\"supplier_id\" > supp.\"supplier_id\"";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -2469,7 +2422,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
- query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" > supp.\"supplier_id\"";
+ query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ item.name, supp.name FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " item JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " supp ON item.\"supplier_id\" > supp.\"supplier_id\"";
statement = conn.prepareStatement(query);
try {
statement.executeQuery();
@@ -2484,14 +2437,14 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
@Test
public void testJoinWithSetMaxRows() throws Exception {
- String [] queries = new String[2];
- queries[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, quantity FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN "
- + JOIN_ORDER_TABLE_FULL_NAME + " o ON o.\"item_id\" = i.\"item_id\"";
- queries[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.\"order_id\", i.name, o.quantity FROM " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN "
- + "(SELECT \"order_id\", \"item_id\", quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") o "
- + "ON o.\"item_id\" = i.\"item_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String [] queries = new String[2];
+ queries[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, quantity FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN "
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o ON o.\"item_id\" = i.\"item_id\"";
+ queries[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ o.\"order_id\", i.name, o.quantity FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i JOIN "
+ + "(SELECT \"order_id\", \"item_id\", quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") o "
+ + "ON o.\"item_id\" = i.\"item_id\"";
try {
for (int i = 0; i < queries.length; i++) {
String query = queries[i];
@@ -2518,7 +2471,7 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT {
assertFalse(rs.next());
rs = statement.executeQuery("EXPLAIN " + query);
- assertEquals(i == 0 ? plans[1] : plans[1].replaceFirst("O\\.item_id", "item_id"), QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(i == 0 ? plans[1] : plans[1].replaceFirst("O\\.item_id", "item_id"), QueryUtil.getExplainPlan(rs));
}
} finally {
conn.close();
[47/48] phoenix git commit: quote 'date' columns
Posted by ma...@apache.org.
quote 'date' columns
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a617d2e3
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a617d2e3
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a617d2e3
Branch: refs/heads/calcite
Commit: a617d2e3651fc96aebe9b57c297025b60884b5e2
Parents: 587a07b
Author: maryannxue <ma...@gmail.com>
Authored: Fri Oct 7 12:06:47 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Fri Oct 7 12:06:47 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/SortMergeJoinIT.java | 40 ++++++++++----------
1 file changed, 20 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/a617d2e3/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
index b387ee8..c8bd542 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java
@@ -582,19 +582,19 @@ public class SortMergeJoinIT extends BaseJoinIT {
String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
String[] query = new String[5];
- query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o JOIN "
+ query[0] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName4 + " o JOIN "
+ tableName3 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ tableName1 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o, "
+ query[1] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName4 + " o, "
+ tableName3 + " c, "
+ tableName1 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o JOIN "
+ query[2] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName4 + " o JOIN "
+ tableName3 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ tableName1 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[3] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + tableName4 + " o, "
+ query[3] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM (" + tableName4 + " o, "
+ tableName3 + " c), "
+ tableName1 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[4] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName4 + " o, ("
+ query[4] = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName4 + " o, ("
+ tableName3 + " c, "
+ tableName1 + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
try {
@@ -794,10 +794,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
- String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ String query1 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName4 + " o LEFT JOIN "
+ tableName1 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName4 + " o LEFT JOIN "
+ "(" + tableName1 + " i RIGHT JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
@@ -900,10 +900,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
- String query1 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + tableName1 + " i RIGHT JOIN "
+ String query1 = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName1 + " i RIGHT JOIN "
+ tableName4 + " o ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"";
- String query2 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o RIGHT JOIN "
+ String query2 = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName4 + " o RIGHT JOIN "
+ "(" + tableName1 + " i LEFT JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
@@ -1007,10 +1007,10 @@ public class SortMergeJoinIT extends BaseJoinIT {
String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
String[] queries = {
- "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName4 + " o LEFT JOIN "
+ tableName1 + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\"",
- "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o LEFT JOIN "
+ "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName4 + " o LEFT JOIN "
+ "(" + tableName1 + " i LEFT JOIN " + tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\") "
+ "ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\""};
try {
@@ -1062,7 +1062,7 @@ public class SortMergeJoinIT extends BaseJoinIT {
String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o RIGHT JOIN "
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName4 + " o RIGHT JOIN "
+ tableName1 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
@@ -1140,7 +1140,7 @@ public class SortMergeJoinIT extends BaseJoinIT {
String tableName1 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
String tableName2 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, date FROM " + tableName4 + " o RIGHT JOIN "
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName4 + " o RIGHT JOIN "
+ tableName1 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
@@ -1529,8 +1529,8 @@ public class SortMergeJoinIT extends BaseJoinIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
String tableName3 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
String tableName4 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
- String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, o.date FROM " + tableName4 + " o INNER JOIN "
- + tableName3 + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.date = c.date ORDER BY \"order_id\"";
+ String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ \"order_id\", c.name, o.\"DATE\" FROM " + tableName4 + " o INNER JOIN "
+ + tableName3 + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.\"DATE\" = c.\"DATE\" ORDER BY \"order_id\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -1754,11 +1754,11 @@ public class SortMergeJoinIT extends BaseJoinIT {
+ " item_name varchar not null, "
+ " supplier_name varchar, "
+ " quantity integer, "
- + " date timestamp "
+ + " \"DATE\" timestamp "
+ " CONSTRAINT pk PRIMARY KEY (\"order_id\", item_name))");
conn.createStatement().execute("UPSERT /*+ USE_SORT_MERGE_JOIN*/ INTO " + tempTable
- + "(\"order_id\", item_name, supplier_name, quantity, date) "
- + "SELECT \"order_id\", i.name, s.name, quantity, date FROM "
+ + "(\"order_id\", item_name, supplier_name, quantity, \"DATE\") "
+ + "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM "
+ tableName4 + " o LEFT JOIN "
+ tableName1 + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ tableName2 + " s ON i.\"supplier_id\" = s.\"supplier_id\"");
@@ -2227,8 +2227,8 @@ public class SortMergeJoinIT extends BaseJoinIT {
+ "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iid, s.name sname, i.name iname FROM (SELECT \"supplier_id\" sid, name FROM " + tableName2 + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, \"supplier_id\" sid FROM " + tableName1 + ") AS i ON i.sid = s.sid) AS q"
+ " ON o.iid = q.iid LEFT JOIN (SELECT \"customer_id\" cid, name FROM "
+ tableName3 + ") AS c ON c.cid = o.cid GROUP BY q.iname ORDER BY q.iname";
- String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, date FROM " + tableName3 + ") AS c INNER JOIN "
- + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.date odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, date FROM " + tableName4 + ") AS o INNER JOIN "
+ String query2 = "SELECT /*+ USE_SORT_MERGE_JOIN*/ * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, \"DATE\" FROM " + tableName3 + ") AS c INNER JOIN "
+ + "(SELECT /*+ USE_SORT_MERGE_JOIN*/ o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.\"DATE\" odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, \"DATE\" FROM " + tableName4 + ") AS o INNER JOIN "
+ "(SELECT /*+ USE_SORT_MERGE_JOIN*/ i.iid iiid, i.name iname, i.price iprice, i.discount1 idiscount1, i.discount2 idiscount2, i.sid isid, i.description idescription, s.sid ssid, s.name sname, s.phone sphone, s.address saddress, s.loc_id sloc_id FROM (SELECT \"supplier_id\" sid, name, phone, address, loc_id FROM " + tableName2 + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, price, discount1, discount2, \"supplier_id\" sid, description FROM " + tableName1 + ") AS i ON i.sid = s.sid) as qi"
+ " ON o.iid = qi.iiid) as qo ON c.cid = qo.ocid"
+ " WHERE c.cid <= '0000000005' AND qo.ooid != '000000000000003' AND qo.iname != 'T3' ORDER BY c.cid, qo.iname";
[22/48] phoenix git commit: PHOENIX-3287 Retry starting KDC on
BindException
Posted by ma...@apache.org.
PHOENIX-3287 Retry starting KDC on BindException
MiniKDC has a race-condition in its port-allocation.
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/cb7234d3
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/cb7234d3
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/cb7234d3
Branch: refs/heads/calcite
Commit: cb7234d3f09c49f21e9a58a990c0efb141ddf6c5
Parents: fedbca8
Author: Josh Elser <el...@apache.org>
Authored: Fri Sep 23 14:29:50 2016 -0400
Committer: Josh Elser <el...@apache.org>
Committed: Fri Sep 23 17:54:40 2016 -0400
----------------------------------------------------------------------
.../phoenix/jdbc/SecureUserConnectionsTest.java | 27 +++++++++++++++-----
1 file changed, 21 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb7234d3/phoenix-core/src/test/java/org/apache/phoenix/jdbc/SecureUserConnectionsTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/jdbc/SecureUserConnectionsTest.java b/phoenix-core/src/test/java/org/apache/phoenix/jdbc/SecureUserConnectionsTest.java
index a14e47b..4996f94 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/jdbc/SecureUserConnectionsTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/jdbc/SecureUserConnectionsTest.java
@@ -31,13 +31,14 @@ import java.util.List;
import java.util.Properties;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.CommonConfigurationKeys;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.minikdc.MiniKdc;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.authentication.util.KerberosName;
-import org.apache.hadoop.security.authentication.util.KerberosUtil;
import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.ConnectionInfo;
import org.apache.phoenix.query.ConfigurationFactory;
import org.apache.phoenix.util.InstanceResolver;
@@ -54,6 +55,9 @@ import org.junit.Test;
* collide and when they do not.
*/
public class SecureUserConnectionsTest {
+ private static final Log LOG = LogFactory.getLog(SecureUserConnectionsTest.class);
+ private static final int KDC_START_ATTEMPTS = 10;
+
private static final File TEMP_DIR = new File(getClassTempDir());
private static final File KEYTAB_DIR = new File(TEMP_DIR, "keytabs");
private static final File KDC_DIR = new File(TEMP_DIR, "kdc");
@@ -68,11 +72,22 @@ public class SecureUserConnectionsTest {
public static void setupKdc() throws Exception {
ensureIsEmptyDirectory(KDC_DIR);
ensureIsEmptyDirectory(KEYTAB_DIR);
- // Create and start the KDC
- Properties kdcConf = MiniKdc.createConf();
- kdcConf.put(MiniKdc.DEBUG, true);
- KDC = new MiniKdc(kdcConf, KDC_DIR);
- KDC.start();
+ // Create and start the KDC. MiniKDC appears to have a race condition in how it does
+ // port allocation (with apache-ds). See PHOENIX-3287.
+ boolean started = false;
+ for (int i = 0; !started && i < KDC_START_ATTEMPTS; i++) {
+ Properties kdcConf = MiniKdc.createConf();
+ kdcConf.put(MiniKdc.DEBUG, true);
+ KDC = new MiniKdc(kdcConf, KDC_DIR);
+ try {
+ KDC.start();
+ started = true;
+ } catch (Exception e) {
+ LOG.warn("PHOENIX-3287: Failed to start KDC, retrying..", e);
+ }
+ }
+ assertTrue("The embedded KDC failed to start successfully after " + KDC_START_ATTEMPTS
+ + " attempts.", started);
createUsers(NUM_USERS);
[18/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
PHOENIX-3253 Make changes to tests to support method level parallelization
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/bebb5ced
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/bebb5ced
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/bebb5ced
Branch: refs/heads/calcite
Commit: bebb5cedf761b132b78db675a19ede5849f6ea94
Parents: 16f0da3
Author: James Taylor <ja...@apache.org>
Authored: Thu Sep 22 17:16:43 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Thu Sep 22 17:16:43 2016 -0700
----------------------------------------------------------------------
.../StatisticsCollectionRunTrackerIT.java | 2 +-
.../phoenix/end2end/AbsFunctionEnd2EndIT.java | 2 +-
.../AlterMultiTenantTableWithViewsIT.java | 16 +-
.../apache/phoenix/end2end/AlterSessionIT.java | 2 +-
.../apache/phoenix/end2end/AlterTableIT.java | 10 +-
.../phoenix/end2end/AlterTableWithViewsIT.java | 16 +-
.../phoenix/end2end/AppendOnlySchemaIT.java | 22 +--
.../phoenix/end2end/ArithmeticQueryIT.java | 36 ++--
.../phoenix/end2end/ArrayAppendFunctionIT.java | 18 +-
.../phoenix/end2end/ArrayConcatFunctionIT.java | 16 +-
.../phoenix/end2end/ArrayFillFunctionIT.java | 12 +-
.../phoenix/end2end/ArrayPrependFunctionIT.java | 68 +++----
.../end2end/ArrayToStringFunctionIT.java | 22 +--
.../phoenix/end2end/ArraysWithNullsIT.java | 32 ++--
.../apache/phoenix/end2end/AutoCommitIT.java | 2 +-
.../phoenix/end2end/AutoPartitionViewsIT.java | 18 +-
.../end2end/BaseTenantSpecificTablesIT.java | 12 +-
.../end2end/BaseTenantSpecificViewIndexIT.java | 12 +-
.../org/apache/phoenix/end2end/BaseViewIT.java | 8 +-
.../apache/phoenix/end2end/BinaryRowKeyIT.java | 6 +-
.../phoenix/end2end/CSVCommonsLoaderIT.java | 20 +-
.../phoenix/end2end/CbrtFunctionEnd2EndIT.java | 4 +-
.../phoenix/end2end/CoalesceFunctionIT.java | 20 +-
.../end2end/ConvertTimezoneFunctionIT.java | 14 +-
.../org/apache/phoenix/end2end/DateTimeIT.java | 68 +++----
.../phoenix/end2end/DecodeFunctionIT.java | 12 +-
.../org/apache/phoenix/end2end/DeleteIT.java | 26 +--
.../phoenix/end2end/DisableLocalIndexIT.java | 2 +-
.../phoenix/end2end/DistinctPrefixFilterIT.java | 6 +-
.../apache/phoenix/end2end/DynamicFamilyIT.java | 4 +-
.../apache/phoenix/end2end/DynamicUpsertIT.java | 2 +-
.../phoenix/end2end/EncodeFunctionIT.java | 8 +-
.../phoenix/end2end/EvaluationOfORIT.java | 2 +-
.../phoenix/end2end/ExecuteStatementsIT.java | 6 +-
.../phoenix/end2end/ExpFunctionEnd2EndIT.java | 4 +-
.../phoenix/end2end/FirstValueFunctionIT.java | 14 +-
.../end2end/GetSetByteBitFunctionEnd2EndIT.java | 2 +-
.../apache/phoenix/end2end/GroupByCaseIT.java | 20 +-
.../apache/phoenix/end2end/HashJoinMoreIT.java | 12 +-
.../org/apache/phoenix/end2end/InListIT.java | 10 +-
.../apache/phoenix/end2end/IndexExtendedIT.java | 30 +--
.../apache/phoenix/end2end/InstrFunctionIT.java | 16 +-
.../org/apache/phoenix/end2end/IsNullIT.java | 6 +-
.../org/apache/phoenix/end2end/KeyOnlyIT.java | 2 +-
.../phoenix/end2end/LastValueFunctionIT.java | 22 +--
.../phoenix/end2end/LikeExpressionIT.java | 12 +-
.../phoenix/end2end/LnLogFunctionEnd2EndIT.java | 4 +-
.../apache/phoenix/end2end/MD5FunctionIT.java | 6 +-
.../org/apache/phoenix/end2end/MapReduceIT.java | 8 +-
.../phoenix/end2end/MappingTableDataTypeIT.java | 2 +-
.../end2end/MinMaxAggregateFunctionIT.java | 2 +-
.../phoenix/end2end/ModulusExpressionIT.java | 10 +-
.../phoenix/end2end/MultiCfQueryExecIT.java | 2 +-
.../end2end/NamespaceSchemaMappingIT.java | 2 +-
.../phoenix/end2end/NthValueFunctionIT.java | 22 +--
.../end2end/OctetLengthFunctionEnd2EndIT.java | 2 +-
.../org/apache/phoenix/end2end/OrderByIT.java | 16 +-
.../phoenix/end2end/ParallelIteratorsIT.java | 4 +-
.../apache/phoenix/end2end/PercentileIT.java | 15 +-
.../phoenix/end2end/PhoenixRuntimeIT.java | 18 +-
.../phoenix/end2end/PowerFunctionEnd2EndIT.java | 4 +-
.../apache/phoenix/end2end/PrimitiveTypeIT.java | 18 +-
.../org/apache/phoenix/end2end/QueryMoreIT.java | 8 +-
.../phoenix/end2end/QueryWithOffsetIT.java | 2 +-
.../apache/phoenix/end2end/RTrimFunctionIT.java | 2 +-
.../org/apache/phoenix/end2end/ReadOnlyIT.java | 2 +-
.../end2end/RegexpReplaceFunctionIT.java | 2 +-
.../phoenix/end2end/RegexpSplitFunctionIT.java | 2 +-
.../phoenix/end2end/RegexpSubstrFunctionIT.java | 2 +-
.../phoenix/end2end/ReverseFunctionIT.java | 2 +-
.../apache/phoenix/end2end/ReverseScanIT.java | 4 +-
.../phoenix/end2end/RoundFloorCeilFuncIT.java | 2 +-
.../phoenix/end2end/SerialIteratorsIT.java | 2 +-
.../phoenix/end2end/ServerExceptionIT.java | 2 +-
.../phoenix/end2end/SignFunctionEnd2EndIT.java | 4 +-
.../end2end/SkipScanAfterManualSplitIT.java | 6 +-
.../apache/phoenix/end2end/SkipScanQueryIT.java | 22 +--
.../phoenix/end2end/SortMergeJoinMoreIT.java | 20 +-
.../org/apache/phoenix/end2end/SortOrderIT.java | 88 ++++-----
.../phoenix/end2end/SpooledTmpFileDeleteIT.java | 2 +-
.../phoenix/end2end/SqrtFunctionEnd2EndIT.java | 4 +-
.../phoenix/end2end/StatementHintsIT.java | 2 +-
.../phoenix/end2end/StatsCollectorIT.java | 4 +-
.../apache/phoenix/end2end/StoreNullsIT.java | 8 +-
.../org/apache/phoenix/end2end/StringIT.java | 10 +-
.../end2end/StringToArrayFunctionIT.java | 14 +-
.../apache/phoenix/end2end/TenantIdTypeIT.java | 2 +-
.../end2end/TenantSpecificTablesDDLIT.java | 30 +--
.../end2end/TenantSpecificTablesDMLIT.java | 2 +-
.../end2end/TenantSpecificViewIndexIT.java | 8 +-
.../end2end/TimezoneOffsetFunctionIT.java | 14 +-
.../phoenix/end2end/ToCharFunctionIT.java | 6 +-
.../phoenix/end2end/ToDateFunctionIT.java | 2 +-
.../phoenix/end2end/TransactionalViewIT.java | 4 +-
.../org/apache/phoenix/end2end/UnionAllIT.java | 80 ++++----
.../org/apache/phoenix/end2end/UpgradeIT.java | 89 ++++-----
.../phoenix/end2end/UpsertBigValuesIT.java | 8 +-
.../end2end/UpsertSelectAutoCommitIT.java | 10 +-
.../apache/phoenix/end2end/UpsertValuesIT.java | 2 +-
.../org/apache/phoenix/end2end/UseSchemaIT.java | 16 +-
.../java/org/apache/phoenix/end2end/ViewIT.java | 76 ++++----
.../end2end/index/AsyncIndexDisabledIT.java | 4 +-
.../index/ChildViewsUseParentViewIndexIT.java | 20 +-
.../phoenix/end2end/index/DropMetadataIT.java | 14 +-
.../index/GlobalIndexOptimizationIT.java | 28 +--
.../phoenix/end2end/index/ImmutableIndexIT.java | 18 +-
.../index/ImmutableIndexWithStatsIT.java | 4 +-
.../end2end/index/IndexExpressionIT.java | 87 ++++-----
.../apache/phoenix/end2end/index/IndexIT.java | 84 ++++-----
.../phoenix/end2end/index/IndexMetadataIT.java | 35 ++--
.../phoenix/end2end/index/LocalIndexIT.java | 70 +++----
.../phoenix/end2end/index/MutableIndexIT.java | 38 ++--
.../phoenix/end2end/index/SaltedIndexIT.java | 12 +-
.../phoenix/end2end/index/ViewIndexIT.java | 22 +--
.../end2end/index/txn/MutableRollbackIT.java | 28 +--
.../phoenix/end2end/index/txn/RollbackIT.java | 8 +-
.../salted/SaltedTableUpsertSelectIT.java | 22 +--
.../salted/SaltedTableVarLengthRowKeyIT.java | 2 +-
.../phoenix/iterate/PhoenixQueryTimeoutIT.java | 2 +-
.../iterate/RoundRobinResultIteratorIT.java | 10 +-
.../org/apache/phoenix/rpc/UpdateCacheIT.java | 26 +--
.../phoenix/rpc/UpdateCacheWithScnIT.java | 3 +-
.../trace/PhoenixTableMetricsWriterIT.java | 4 +-
.../phoenix/trace/PhoenixTraceReaderIT.java | 4 +-
.../phoenix/trace/PhoenixTracingEndToEndIT.java | 6 +-
.../phoenix/tx/NotThreadSafeTransactionIT.java | 163 ++++++++++++++++
.../org/apache/phoenix/tx/TransactionIT.java | 189 ++++---------------
.../org/apache/phoenix/tx/TxCheckpointIT.java | 22 +--
.../java/org/apache/phoenix/query/BaseTest.java | 36 ++--
.../java/org/apache/phoenix/util/TestUtil.java | 29 ++-
.../org/apache/phoenix/flume/PhoenixSinkIT.java | 4 +-
.../phoenix/flume/RegexEventSerializerIT.java | 12 +-
132 files changed, 1228 insertions(+), 1154 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
index bd88922..759ad4f 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
@@ -65,7 +65,7 @@ public class StatisticsCollectionRunTrackerIT extends ParallelStatsEnabledIT {
@Before
public void generateTableNames() {
String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
- String tableName = "T_" + generateRandomString();
+ String tableName = "T_" + generateUniqueName();
fullTableName = SchemaUtil.getTableName(schemaName, tableName);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AbsFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AbsFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AbsFunctionEnd2EndIT.java
index c70bed2..8447286 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AbsFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AbsFunctionEnd2EndIT.java
@@ -36,7 +36,7 @@ import org.junit.Test;
*/
public class AbsFunctionEnd2EndIT extends ParallelStatsDisabledIT {
- private static final String TABLE_NAME = generateRandomString();
+ private static final String TABLE_NAME = generateUniqueName();
private static final String KEY = "key";
@Before
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
index 7a4e391..adadca7 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
@@ -85,7 +85,7 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testAddDropColumnToBaseTablePropagatesToEntireViewHierarchy() throws Exception {
String baseTable = "testViewHierarchy";
- String baseViewName = generateRandomString();
+ String baseViewName = generateUniqueName();
String view1 = baseViewName + "_VIEW1";
String view2 = baseViewName + "_VIEW2";
String view3 = baseViewName + "_VIEW3";
@@ -171,7 +171,7 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testChangingPKOfBaseTableChangesPKForAllViews() throws Exception {
String baseTable = "testChangePKOfBaseTable";
- String baseViewName = generateRandomString();
+ String baseViewName = generateUniqueName();
String view1 = baseViewName + "_VIEW1";
String view2 = baseViewName + "_VIEW2";
String view3 = baseViewName + "_VIEW3";
@@ -269,7 +269,7 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testAddPKColumnToBaseTableWhoseViewsHaveIndices() throws Exception {
String baseTable = "testAddPKColumnToBaseTableWhoseViewsHaveIndices";
- String baseViewName = generateRandomString();
+ String baseViewName = generateUniqueName();
String view1 = baseViewName + "_VIEW1";
String view2 = baseViewName + "_VIEW2";
String view3 = baseViewName + "_VIEW3";
@@ -410,8 +410,8 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testAddingPkAndKeyValueColumnsToBaseTableWithDivergedView() throws Exception {
String baseTable = "testAlteringPkOfBaseTableWithDivergedView".toUpperCase();
- String view1 = generateRandomString();
- String divergedView = generateRandomString();
+ String view1 = generateUniqueName();
+ String divergedView = generateUniqueName();
String divergedViewIndex = divergedView + "_IDX";
/* baseTable
/ |
@@ -490,7 +490,7 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testAddColumnsToSaltedBaseTableWithViews() throws Exception {
String baseTable = "testAddColumnsToSaltedBaseTableWithViews".toUpperCase();
- String view1 = generateRandomString();
+ String view1 = generateUniqueName();
try (Connection conn = DriverManager.getConnection(getUrl())) {
String baseTableDDL = "CREATE TABLE " + baseTable + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR, V3 VARCHAR CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT = true ";
conn.createStatement().execute(baseTableDDL);
@@ -520,7 +520,7 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testDropColumnsFromSaltedBaseTableWithViews() throws Exception {
String baseTable = "testDropColumnsFromSaltedBaseTableWithViews".toUpperCase();
- String view1 = generateRandomString();
+ String view1 = generateUniqueName();
try (Connection conn = DriverManager.getConnection(getUrl())) {
String baseTableDDL = "CREATE TABLE " + baseTable + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR, V3 VARCHAR CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT = true ";
conn.createStatement().execute(baseTableDDL);
@@ -560,7 +560,7 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testAlteringViewConditionallyModifiesHTableMetadata() throws Exception {
String baseTable = "testAlteringViewConditionallyModifiesBaseTable".toUpperCase();
- String view1 = generateRandomString();
+ String view1 = generateUniqueName();
try (Connection conn = DriverManager.getConnection(getUrl())) {
String baseTableDDL = "CREATE TABLE " + baseTable + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR, V3 VARCHAR CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT = true ";
conn.createStatement().execute(baseTableDDL);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
index 6e0cdd5..ffd9656 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
@@ -42,7 +42,7 @@ import static org.junit.Assert.assertTrue;
*/
public class AlterSessionIT extends ParallelStatsDisabledIT {
- private static final String TABLE_NAME = generateRandomString();
+ private static final String TABLE_NAME = generateUniqueName();
private static Connection testConn;
@BeforeClass
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
index 2634335..031fd5c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
@@ -83,9 +83,9 @@ public class AlterTableIT extends ParallelStatsDisabledIT {
@Before
public void setupTableNames() throws Exception {
schemaName = "";
- dataTableName = generateRandomString();
- indexTableName = "I_" + generateRandomString();
- localIndexTableName = "LI_" + generateRandomString();
+ dataTableName = generateUniqueName();
+ indexTableName = "I_" + generateUniqueName();
+ localIndexTableName = "LI_" + generateUniqueName();
dataTableFullName = SchemaUtil.getTableName(schemaName, dataTableName);
indexTableFullName = SchemaUtil.getTableName(schemaName, indexTableName);
localIndexTableFullName = SchemaUtil.getTableName(schemaName, localIndexTableName);
@@ -1364,7 +1364,7 @@ public class AlterTableIT extends ParallelStatsDisabledIT {
+"CONSTRAINT PK PRIMARY KEY (ID1, ID2)) SALT_BUCKETS = 8";
Connection conn1 = DriverManager.getConnection(getUrl(), props);
conn1.createStatement().execute(ddl);
- String viewFullName = SchemaUtil.getTableName(schemaName, generateRandomString());
+ String viewFullName = SchemaUtil.getTableName(schemaName, generateUniqueName());
ddl = "CREATE VIEW " + viewFullName + " AS SELECT * FROM " + dataTableFullName + " WHERE CREATION_TIME = 1";
conn1.createStatement().execute(ddl);
ddl = "ALTER VIEW " + viewFullName + " SET IMMUTABLE_ROWS = TRUE";
@@ -2170,7 +2170,7 @@ public class AlterTableIT extends ParallelStatsDisabledIT {
assertFalse(table.getColumn("PK2").isRowTimestamp());
assertIsRowTimestampSet(schemaName, dataTableName, "PK1");
- String dataTableName2 = BaseTest.generateRandomString();
+ String dataTableName2 = BaseTest.generateUniqueName();
String dataTableFullName2 = SchemaUtil.getTableName(schemaName, dataTableName2);
conn.createStatement().execute("CREATE TABLE " + dataTableFullName2 + " (PK1 VARCHAR, PK2 DATE PRIMARY KEY ROW_TIMESTAMP, KV1 VARCHAR, KV2 INTEGER)");
table = phxConn.getTable(new PTableKey(phxConn.getTenantId(), dataTableFullName2));
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
index 64627f1..c9e2f26 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
@@ -89,7 +89,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
public void testAddNewColumnsToBaseTableWithViews() throws Exception {
try (Connection conn = DriverManager.getConnection(getUrl());
Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : conn ) {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String viewOfTable = tableName + "_VIEW";
String ddlFormat = "CREATE TABLE IF NOT EXISTS " + tableName + " ("
+ " %s ID char(1) NOT NULL,"
@@ -114,7 +114,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
public void testDropColumnsFromBaseTableWithView() throws Exception {
try (Connection conn = DriverManager.getConnection(getUrl());
Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : conn ) {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String viewOfTable = tableName + "_VIEW";
String ddlFormat = "CREATE TABLE IF NOT EXISTS " + tableName + " (" + " %s ID char(1) NOT NULL,"
+ " COL1 integer NOT NULL," + " COL2 bigint NOT NULL,"
@@ -146,7 +146,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : conn ) {
conn.setAutoCommit(false);
viewConn.setAutoCommit(false);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String viewOfTable = tableName + "_VIEW";
String ddlFormat = "CREATE TABLE IF NOT EXISTS " + tableName + " ("
@@ -253,7 +253,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : conn ) {
conn.setAutoCommit(false);
viewConn.setAutoCommit(false);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String viewOfTable = tableName + "_VIEW";
String ddlFormat = "CREATE TABLE IF NOT EXISTS " + tableName + " ("
@@ -364,7 +364,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
public void testAddExistingViewPkColumnToBaseTableWithMultipleViews() throws Exception {
try (Connection conn = DriverManager.getConnection(getUrl());
Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : conn ) {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String viewOfTable1 = tableName + "_VIEW1";
String viewOfTable2 = tableName + "_VIEW2";
String ddlFormat = "CREATE TABLE IF NOT EXISTS " + tableName + "("
@@ -428,7 +428,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
conn.setAutoCommit(false);
viewConn.setAutoCommit(false);
viewConn2.setAutoCommit(false);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String viewOfTable1 = tableName + "_VIEW1";
String viewOfTable2 = tableName + "_VIEW2";
String ddlFormat = "CREATE TABLE IF NOT EXISTS " + tableName + "("
@@ -618,7 +618,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
@Test
public void testDivergedViewsStayDiverged() throws Exception {
- String baseTable = generateRandomString();
+ String baseTable = generateUniqueName();
String view1 = baseTable + "_VIEW1";
String view2 = baseTable + "_VIEW2";
try (Connection conn = DriverManager.getConnection(getUrl());
@@ -661,7 +661,7 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
public void testMakeBaseTableTransactional() throws Exception {
try (Connection conn = DriverManager.getConnection(getUrl());
Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : conn ) {
- String baseTableName = "NONTXNTBL_" + generateRandomString() + (isMultiTenant ? "0":"1");
+ String baseTableName = "NONTXNTBL_" + generateUniqueName() + (isMultiTenant ? "0":"1");
String viewOfTable = baseTableName + "_VIEW";
String ddlFormat = "CREATE TABLE IF NOT EXISTS " + baseTableName + " ("
+ " %s ID char(1) NOT NULL,"
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
index 1aedc0d..ed9fa74 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
@@ -75,9 +75,9 @@ public class AppendOnlySchemaIT extends ParallelStatsDisabledIT {
try (Connection conn1 = connectionQueryServices.connect(getUrl(), props);
Connection conn2 = sameClient ? conn1 : connectionQueryServices.connect(getUrl(), props)) {
- String metricTableName = generateRandomString();
- String viewName = generateRandomString();
- String metricIdSeqTableName = generateRandomString();
+ String metricTableName = generateUniqueName();
+ String viewName = generateUniqueName();
+ String metricIdSeqTableName = generateUniqueName();
// create sequence for auto partition
conn1.createStatement().execute("CREATE SEQUENCE " + metricIdSeqTableName + " CACHE 1");
// create base table
@@ -186,9 +186,9 @@ public class AppendOnlySchemaIT extends ParallelStatsDisabledIT {
try (Connection conn1 = DriverManager.getConnection(getUrl(), props);
Connection conn2 = sameClient ? conn1 : DriverManager.getConnection(getUrl(), props)) {
- String metricTableName = generateRandomString();
- String viewName = generateRandomString();
- String metricIdSeqTableName = generateRandomString();
+ String metricTableName = generateUniqueName();
+ String viewName = generateUniqueName();
+ String metricIdSeqTableName = generateUniqueName();
// create sequence for auto partition
conn1.createStatement().execute("CREATE SEQUENCE " + metricIdSeqTableName + " CACHE 1");
@@ -289,8 +289,8 @@ public class AppendOnlySchemaIT extends ParallelStatsDisabledIT {
public void testValidateAttributes() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- String tableName = generateRandomString();
- String viewName = generateRandomString();
+ String tableName = generateUniqueName();
+ String viewName = generateUniqueName();
try {
conn.createStatement().execute(
"create table IF NOT EXISTS " + tableName + " ( id char(1) NOT NULL,"
@@ -326,9 +326,9 @@ public class AppendOnlySchemaIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn1 = DriverManager.getConnection(getUrl(), props);
Connection conn2 = DriverManager.getConnection(getUrl(), props)) {
- String metricTableName = generateRandomString();
- String viewName = generateRandomString();
- String metricIdSeqTableName = generateRandomString();
+ String metricTableName = generateUniqueName();
+ String viewName = generateUniqueName();
+ String metricIdSeqTableName = generateUniqueName();
// create sequence for auto partition
conn1.createStatement().execute("CREATE SEQUENCE " + metricIdSeqTableName + " CACHE 1");
// create base table
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArithmeticQueryIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArithmeticQueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArithmeticQueryIT.java
index 87fdee6..5ad356b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArithmeticQueryIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArithmeticQueryIT.java
@@ -48,7 +48,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String testDecimalArithmetic = generateRandomString();
+ String testDecimalArithmetic = generateUniqueName();
String ddl = "CREATE TABLE " + testDecimalArithmetic +
" (pk VARCHAR NOT NULL PRIMARY KEY, " +
"col1 DECIMAL(31,0), col2 DECIMAL(5), col3 DECIMAL(5,2), col4 DECIMAL)";
@@ -139,11 +139,11 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl = "CREATE TABLE " + source +
" (pk VARCHAR NOT NULL PRIMARY KEY, col1 DECIMAL(5,2), col2 DECIMAL(5,1), col3 DECIMAL(5,2), col4 DECIMAL(4,4))";
createTestTable(getUrl(), ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE " + target +
" (pk VARCHAR NOT NULL PRIMARY KEY, col1 DECIMAL(5,1), col2 DECIMAL(5,2), col3 DECIMAL(4,4))";
createTestTable(getUrl(), ddl);
@@ -249,7 +249,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String testDecimalArithmetic = generateRandomString();
+ String testDecimalArithmetic = generateUniqueName();
String ddl = "CREATE TABLE " + testDecimalArithmetic +
" (pk VARCHAR NOT NULL PRIMARY KEY, col1 DECIMAL(31, 11), col2 DECIMAL(31,1), col3 DECIMAL(38,1))";
createTestTable(getUrl(), ddl);
@@ -311,7 +311,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String testRandomFunction = generateRandomString();
+ String testRandomFunction = generateUniqueName();
String ddl =
"CREATE TABLE " + testRandomFunction + " (pk VARCHAR NOT NULL PRIMARY KEY)";
createTestTable(getUrl(), ddl);
@@ -368,7 +368,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
assertTrue(rs.next());
assertTrue(rand12 == rs.getDouble(3));
- String testRandomFunction1 = generateRandomString();
+ String testRandomFunction1 = generateUniqueName();
ddl = "CREATE TABLE " + testRandomFunction1
+ " (pk VARCHAR NOT NULL PRIMARY KEY, v1 UNSIGNED_DOUBLE)";
createTestTable(getUrl(), ddl);
@@ -427,7 +427,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String testDecimalArithmetic = generateRandomString();
+ String testDecimalArithmetic = generateUniqueName();
String ddl = "CREATE TABLE " + testDecimalArithmetic +
" (pk VARCHAR NOT NULL PRIMARY KEY, " +
"col1 DECIMAL(38,0), col2 DECIMAL(5, 2), col3 INTEGER, col4 BIGINT, col5 DECIMAL)";
@@ -656,7 +656,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
}
@Test
public void testSumDouble() throws Exception {
- String tableName = "TBL_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
initSumDoubleValues(tableName, null, getUrl());
String query = "SELECT SUM(d) FROM " + tableName ;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
@@ -674,7 +674,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testSumUnsignedDouble() throws Exception {
- String tableName = "TBL_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
initSumDoubleValues(tableName, null, getUrl());
String query = "SELECT SUM(ud) FROM " + tableName ;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
@@ -692,7 +692,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testSumFloat() throws Exception {
- String tableName = "TBL_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
initSumDoubleValues(tableName, null, getUrl());
String query = "SELECT SUM(f) FROM " + tableName ;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
@@ -710,7 +710,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testSumUnsignedFloat() throws Exception {
- String tableName = "TBL_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
initSumDoubleValues(tableName, null, getUrl());
String query = "SELECT SUM(uf) FROM " + tableName;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
@@ -727,7 +727,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
}
private String initIntegerTable(Connection conn) throws SQLException {
- String arithmetic_test = generateRandomString();
+ String arithmetic_test = generateUniqueName();
String ddl = "CREATE TABLE " + arithmetic_test
+ " (six INTEGER PRIMARY KEY, four INTEGER, three INTEGER)";
conn.createStatement().execute(ddl);
@@ -970,7 +970,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testCastingOnConstantAddInArithmeticEvaluation() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + testTable
+ " (k1 INTEGER NOT NULL, v1 INTEGER CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -988,7 +988,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testCastingOnConstantSubInArithmeticEvaluation() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + testTable
+ " (k1 INTEGER NOT NULL, v1 INTEGER CONSTRAINT pk PRIMARY KEY (k1))";
conn.createStatement().execute(ddl);
@@ -1005,7 +1005,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testFloatingPointUpsert() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String test = generateRandomString();
+ String test = generateUniqueName();
String ddl =
"CREATE TABLE " + test + " (id VARCHAR not null primary key, name VARCHAR, lat FLOAT)";
conn.createStatement().execute(ddl);
@@ -1021,7 +1021,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testFloatingPointMultiplicationUpsert() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String test = generateRandomString();
+ String test = generateUniqueName();
String ddl =
"CREATE TABLE " + test + " (id VARCHAR not null primary key, name VARCHAR, lat FLOAT)";
conn.createStatement().execute(ddl);
@@ -1038,7 +1038,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
@Test
public void testSystemTableHasDoubleForExponentialNumber() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String test = generateRandomString();
+ String test = generateUniqueName();
String ddl = "CREATE TABLE " + test + " (id VARCHAR not null primary key, num FLOAT)";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + test + "(id,num) VALUES ('testid', 1.2E3)";
@@ -1072,7 +1072,7 @@ public class ArithmeticQueryIT extends ParallelStatsDisabledIT {
private ResultSet createTableWithValues(String[] values, String valueType) throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String test = generateRandomString();
+ String test = generateUniqueName();
StringBuilder ddl = new StringBuilder(
"CREATE TABLE " + test + " (id VARCHAR not null primary key");
StringBuilder dmll = new StringBuilder("UPSERT INTO " + test + "(id,");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayAppendFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayAppendFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayAppendFunctionIT.java
index de42af1..e83b395 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayAppendFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayAppendFunctionIT.java
@@ -28,7 +28,7 @@ import org.junit.Test;
public class ArrayAppendFunctionIT extends ParallelStatsDisabledIT {
private String initTables(Connection conn) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[],integers INTEGER[],doubles DOUBLE[],bigints BIGINT[],chars CHAR(15)[],double1 DOUBLE,char1 CHAR(17),nullcheck INTEGER,chars2 CHAR(15)[])";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + tableName + "(region_name,varchars,integers,doubles,bigints,chars,double1,char1,nullcheck,chars2) VALUES('SF Bay Area'," +
@@ -49,7 +49,7 @@ public class ArrayAppendFunctionIT extends ParallelStatsDisabledIT {
}
private String initTablesDesc(Connection conn, String type, String val) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (pk " + type + " PRIMARY KEY DESC,varchars VARCHAR[],integers INTEGER[],doubles DOUBLE[],bigints BIGINT[],chars CHAR(15)[],chars2 CHAR(15)[], bools BOOLEAN[])";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + tableName + "(pk,varchars,integers,doubles,bigints,chars,chars2,bools) VALUES(" + val + "," +
@@ -268,7 +268,7 @@ public class ArrayAppendFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayAppendFunctionWithUpsert1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
@@ -292,7 +292,7 @@ public class ArrayAppendFunctionIT extends ParallelStatsDisabledIT {
public void testArrayAppendFunctionWithUpsert2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,integers INTEGER[])";
conn.createStatement().execute(ddl);
@@ -316,7 +316,7 @@ public class ArrayAppendFunctionIT extends ParallelStatsDisabledIT {
public void testArrayAppendFunctionWithUpsert3() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
conn.createStatement().execute(ddl);
@@ -340,8 +340,8 @@ public class ArrayAppendFunctionIT extends ParallelStatsDisabledIT {
public void testArrayAppendFunctionWithUpsertSelect1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String sourceTableName = generateRandomString();
- String targetTableName = generateRandomString();
+ String sourceTableName = generateUniqueName();
+ String targetTableName = generateUniqueName();
String ddl = "CREATE TABLE " + sourceTableName + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
conn.createStatement().execute(ddl);
@@ -381,8 +381,8 @@ public class ArrayAppendFunctionIT extends ParallelStatsDisabledIT {
public void testArrayAppendFunctionWithUpsertSelect2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String sourceTableName = generateRandomString();
- String targetTableName = generateRandomString();
+ String sourceTableName = generateUniqueName();
+ String targetTableName = generateUniqueName();
String ddl = "CREATE TABLE " + sourceTableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayConcatFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayConcatFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayConcatFunctionIT.java
index d2c76bd..e8ca9dc 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayConcatFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayConcatFunctionIT.java
@@ -29,7 +29,7 @@ import static org.junit.Assert.assertTrue;
public class ArrayConcatFunctionIT extends ParallelStatsDisabledIT {
private String initTables(Connection conn) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[],integers INTEGER[],doubles DOUBLE[],bigints BIGINT[],chars CHAR(15)[],double1 DOUBLE,char1 CHAR(17),nullcheck INTEGER,chars2 CHAR(15)[])";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + tableName + "(region_name,varchars,integers,doubles,bigints,chars,double1,char1,nullcheck,chars2) VALUES('SF Bay Area'," +
@@ -265,7 +265,7 @@ public class ArrayConcatFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayConcatFunctionWithUpsert1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
@@ -289,7 +289,7 @@ public class ArrayConcatFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayConcatFunctionWithUpsert2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,integers INTEGER[])";
conn.createStatement().execute(ddl);
@@ -313,7 +313,7 @@ public class ArrayConcatFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayConcatFunctionWithUpsert3() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
conn.createStatement().execute(ddl);
@@ -338,8 +338,8 @@ public class ArrayConcatFunctionIT extends ParallelStatsDisabledIT {
public void testArrayConcatFunctionWithUpsertSelect1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String sourceTableName = generateRandomString();
- String targetTableName = generateRandomString();
+ String sourceTableName = generateUniqueName();
+ String targetTableName = generateUniqueName();
String ddl = "CREATE TABLE " + sourceTableName + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
conn.createStatement().execute(ddl);
@@ -377,8 +377,8 @@ public class ArrayConcatFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayConcatFunctionWithUpsertSelect2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String sourceTableName = generateRandomString();
- String targetTableName = generateRandomString();
+ String sourceTableName = generateUniqueName();
+ String targetTableName = generateUniqueName();
String ddl = "CREATE TABLE " + sourceTableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
index 9eece23..4680998 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
@@ -30,7 +30,7 @@ import org.junit.Test;
public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
- private static final String REGIONS = generateRandomString();
+ private static final String REGIONS = generateUniqueName();
@BeforeClass
public static void initTables() throws Exception {
@@ -314,7 +314,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
public void testArrayFillFunctionWithUpsert1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String regions = generateRandomString();
+ String regions = generateUniqueName();
String ddl =
"CREATE TABLE " + regions + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
@@ -341,7 +341,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
public void testArrayFillFunctionWithUpsert2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String regions = generateRandomString();
+ String regions = generateUniqueName();
String ddl =
"CREATE TABLE " + regions + " (region_name VARCHAR PRIMARY KEY,integers INTEGER[])";
conn.createStatement().execute(ddl);
@@ -368,7 +368,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
public void testArrayFillFunctionWithUpsert3() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String regions = generateRandomString();
+ String regions = generateUniqueName();
String ddl =
"CREATE TABLE " + regions + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
conn.createStatement().execute(ddl);
@@ -437,12 +437,12 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
public void testArrayFillFunctionWithUpsertSelect2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl =
"CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE " + target
+ " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[],varchars2 VARCHAR[])";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayPrependFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayPrependFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayPrependFunctionIT.java
index 1fc04e7..182e664 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayPrependFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayPrependFunctionIT.java
@@ -80,7 +80,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInteger() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -98,7 +98,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionVarchar() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -117,7 +117,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
public void testArrayPrependFunctionNulls1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
String[] s = new String[]{null, null, "1", "2"};
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTableWithVarArray(conn, tableName, "VARCHAR", s, null);
String[] s2 = new String[]{null, null, null, "1", "2"};
PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2);
@@ -132,7 +132,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
public void testArrayPrependFunctionNulls2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
String[] s = new String[]{"1", "2"};
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTableWithVarArray(conn, tableName, "VARCHAR", s, null);
String[] s2 = new String[]{null, "1", "2"};
PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2);
@@ -147,7 +147,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
public void testArrayPrependFunctionNulls3() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
String[] s = new String[]{"176", null, "212"};
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTableWithVarArray(conn, tableName, "VARCHAR", s, null);
String[] s2 = new String[]{null, "176", null, "212"};
PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2);
@@ -162,7 +162,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
public void testArrayPrependFunctionNulls4() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
String[] s = new String[]{"176", null, "212"};
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTableWithVarArray(conn, tableName, "VARCHAR", s, "'foo'");
String[] s2 = new String[]{"foo", "176", null, "212"};
PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2);
@@ -176,7 +176,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionDouble() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -194,7 +194,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionDouble2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -212,7 +212,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionBigint() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(1112,bigints) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
@@ -229,7 +229,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionChar() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('fac',chars) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
@@ -246,7 +246,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test(expected = TypeMismatchException.class)
public void testArrayPrependFunctionIntToCharArray() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -256,7 +256,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test(expected = TypeMismatchException.class)
public void testArrayPrependFunctionVarcharToIntegerArray() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -267,7 +267,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test(expected = SQLException.class)
public void testArrayPrependFunctionChar2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('facfacfacfacfacfacfac',chars) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
@@ -278,7 +278,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionIntegerToDoubleArray() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -296,7 +296,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithNestedFunctions1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -314,7 +314,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithNestedFunctions2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -332,7 +332,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithNestedFunctions3() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -350,7 +350,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithUpsert1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
@@ -373,7 +373,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithUpsert2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,integers INTEGER[])";
conn.createStatement().execute(ddl);
@@ -397,7 +397,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithUpsert3() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + "(region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
conn.createStatement().execute(ddl);
@@ -420,7 +420,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithUpsertSelect1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String baseTable = generateRandomString();
+ String baseTable = generateUniqueName();
String source = baseTable + "_SOURCE";
String target = baseTable + "_TARGET";
String ddl = "CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
@@ -460,7 +460,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionWithUpsertSelect2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String baseTable = generateRandomString();
+ String baseTable = generateUniqueName();
String source = baseTable + "_SOURCE";
String target = baseTable + "_TARGET";
String ddl = "CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
@@ -500,7 +500,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInWhere1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -514,7 +514,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInWhere2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -528,7 +528,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInWhere3() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -542,7 +542,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInWhere4() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -556,7 +556,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInWhere5() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -570,7 +570,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInWhere6() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -584,7 +584,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionInWhere7() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -598,7 +598,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test(expected = SQLException.class)
public void testArrayPrependFunctionCharLimitCheck() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTables(conn, tableName);
ResultSet rs;
@@ -616,7 +616,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionIntegerDesc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTablesDesc(conn, tableName, "INTEGER", "23");
ResultSet rs;
@@ -635,7 +635,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionVarcharDesc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTablesDesc(conn, tableName, "VARCHAR", "'e'");
ResultSet rs;
@@ -653,7 +653,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionBigIntDesc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTablesDesc(conn, tableName, "BIGINT", "1112");
ResultSet rs;
rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,bigints) FROM " + tableName);
@@ -670,7 +670,7 @@ public class ArrayPrependFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayPrependFunctionBooleanDesc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTablesDesc(conn, tableName, "BOOLEAN", "false");
ResultSet rs;
rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,bools) FROM " + tableName);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayToStringFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayToStringFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayToStringFunctionIT.java
index 39d6c77..8a3461c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayToStringFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayToStringFunctionIT.java
@@ -36,7 +36,7 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Before
public void initTables() throws Exception {
conn = DriverManager.getConnection(getUrl());
- tableName = generateRandomString();
+ tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName
+ " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[],integers INTEGER[],doubles DOUBLE[],bigints BIGINT[],chars CHAR(15)[],double1 DOUBLE,varchar1 VARCHAR,nullcheck INTEGER,chars2 CHAR(15)[])";
conn.createStatement().execute(ddl);
@@ -256,7 +256,7 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayToStringFunctionWithUpsert1() throws Exception {
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl =
"CREATE TABLE " + table + " (region_name VARCHAR PRIMARY KEY,varchar VARCHAR)";
conn.createStatement().execute(ddl);
@@ -279,7 +279,7 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayToStringFunctionWithUpsert2() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchar VARCHAR)";
conn.createStatement().execute(ddl);
@@ -302,7 +302,7 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayToStringFunctionWithUpsert3() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchar VARCHAR)";
conn.createStatement().execute(ddl);
@@ -325,7 +325,7 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayToStringFunctionWithUpsert4() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl =
"CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchar VARCHAR)";
conn.createStatement().execute(ddl);
@@ -348,12 +348,12 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayToStringFunctionWithUpsertSelect1() throws Exception {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl =
"CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])";
conn.createStatement().execute(ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE " + target + " (region_name VARCHAR PRIMARY KEY,varchar VARCHAR)";
conn.createStatement().execute(ddl);
@@ -388,12 +388,12 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayToStringFunctionWithUpsertSelect2() throws Exception {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl =
"CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])";
conn.createStatement().execute(ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE " + target + " (region_name VARCHAR PRIMARY KEY,varchar VARCHAR)";
conn.createStatement().execute(ddl);
@@ -428,12 +428,12 @@ public class ArrayToStringFunctionIT extends ParallelStatsDisabledIT {
@Test
public void testArrayToStringFunctionWithUpsertSelect3() throws Exception {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl =
"CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,booleans BOOLEAN[])";
conn.createStatement().execute(ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE " + target + " (region_name VARCHAR PRIMARY KEY,varchar VARCHAR)";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArraysWithNullsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArraysWithNullsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArraysWithNullsIT.java
index 4d487c5..4f78b3e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArraysWithNullsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArraysWithNullsIT.java
@@ -31,7 +31,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertIntWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t1 = generateRandomString();
+ String t1 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t1 + " ( k VARCHAR PRIMARY KEY, a INTEGER[])");
@@ -54,7 +54,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertVarcharWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t2 = generateRandomString();
+ String t2 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t2 + " ( k VARCHAR PRIMARY KEY, a VARCHAR[])");
@@ -75,7 +75,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertBigIntWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t3 = generateRandomString();
+ String t3 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t3 + " ( k VARCHAR PRIMARY KEY, a BIGINT[])");
@@ -96,7 +96,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertFloatWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t4 = generateRandomString();
+ String t4 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t4 + " ( k VARCHAR PRIMARY KEY, a FLOAT[])");
@@ -117,7 +117,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertSmallIntWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t5 = generateRandomString();
+ String t5 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t5 + " ( k VARCHAR PRIMARY KEY, a SMALLINT[])");
@@ -138,7 +138,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertTinyIntWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t6 = generateRandomString();
+ String t6 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t6 + " ( k VARCHAR PRIMARY KEY, a TINYINT[])");
@@ -159,7 +159,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertBooleanWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t7 = generateRandomString();
+ String t7 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t7 + " ( k VARCHAR PRIMARY KEY, a BOOLEAN[])");
@@ -180,7 +180,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertDoubleWithNulls() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t8 = generateRandomString();
+ String t8 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t8 + " ( k VARCHAR PRIMARY KEY, a DOUBLE[])");
@@ -201,7 +201,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertDateWithNulls1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t9 = generateRandomString();
+ String t9 = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + t9 + " ( k VARCHAR PRIMARY KEY, a DATE[])");
PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + t9
+ " VALUES('a',ARRAY[TO_DATE('2015-05-20 06:12:14.184'),null,TO_DATE('2015-05-20 06:12:14.184'),null])");
@@ -219,7 +219,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertDateWithNulls2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t10 = generateRandomString();
+ String t10 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t10 + " ( k VARCHAR PRIMARY KEY, a DATE[])");
PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + t10
@@ -239,7 +239,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertTimeWithNulls1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t11 = generateRandomString();
+ String t11 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t11 + " ( k VARCHAR PRIMARY KEY, a TIME[])");
PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + t11
@@ -259,7 +259,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertTimeWithNulls2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t12 = generateRandomString();
+ String t12 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t12 + " ( k VARCHAR PRIMARY KEY, a TIME[])");
PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + t12
@@ -279,7 +279,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertTimeStampWithNulls1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t13 = generateRandomString();
+ String t13 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t13 + " ( k VARCHAR PRIMARY KEY, a TIMESTAMP[])");
PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + t13
@@ -298,7 +298,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertTimeStampWithNulls2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t14 = generateRandomString();
+ String t14 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t14 + " ( k VARCHAR PRIMARY KEY, a TIMESTAMP[])");
PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + t14
@@ -317,7 +317,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertCharWithNulls1() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t15 = generateRandomString();
+ String t15 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t15 + " ( k VARCHAR PRIMARY KEY, a CHAR(15)[])");
PreparedStatement stmt = conn.prepareStatement(
@@ -336,7 +336,7 @@ public class ArraysWithNullsIT extends ParallelStatsDisabledIT {
@Test
public void testArrayUpsertCharWithNulls2() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t16 = generateRandomString();
+ String t16 = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + t16 + " ( k VARCHAR PRIMARY KEY, a CHAR(15)[])");
PreparedStatement stmt = conn.prepareStatement(
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoCommitIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoCommitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoCommitIT.java
index 8928248..5cc6691 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoCommitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoCommitIT.java
@@ -41,7 +41,7 @@ public class AutoCommitIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable + " " +
" (r varchar not null, col1 integer" +
" CONSTRAINT pk PRIMARY KEY (r))\n";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoPartitionViewsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoPartitionViewsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoPartitionViewsIT.java
index eb7bbdf..5de41bf 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoPartitionViewsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AutoPartitionViewsIT.java
@@ -79,8 +79,8 @@ public class AutoPartitionViewsIT extends ParallelStatsDisabledIT {
Connection viewConn2 =
isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1)
: DriverManager.getConnection(getUrl())) {
- String tableName = generateRandomString();
- String autoSeqName = generateRandomString();
+ String tableName = generateUniqueName();
+ String autoSeqName = generateUniqueName();
try {
@@ -107,7 +107,7 @@ public class AutoPartitionViewsIT extends ParallelStatsDisabledIT {
conn.createStatement().execute(ddl);
- String baseViewName = generateRandomString();
+ String baseViewName = generateUniqueName();
String metricView1 = baseViewName + "_VIEW1";
String metricView2 = baseViewName + "_VIEW2";
String metricView3 = baseViewName + "_VIEW3";
@@ -234,8 +234,8 @@ public class AutoPartitionViewsIT extends ParallelStatsDisabledIT {
Connection viewConn2 =
isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL2)
: DriverManager.getConnection(getUrl())) {
- String tableName = generateRandomString();
- String autoSeqName = generateRandomString();
+ String tableName = generateUniqueName();
+ String autoSeqName = generateUniqueName();
String ddl =
String.format(
@@ -246,7 +246,7 @@ public class AutoPartitionViewsIT extends ParallelStatsDisabledIT {
conn.createStatement().execute(ddl);
conn.createStatement().execute("CREATE SEQUENCE " + autoSeqName + " CACHE 1");
- String baseViewName = generateRandomString();
+ String baseViewName = generateUniqueName();
String metricView1 = baseViewName + "_VIEW1";
String metricView2 = baseViewName + "_VIEW2";
// create a view
@@ -315,8 +315,8 @@ public class AutoPartitionViewsIT extends ParallelStatsDisabledIT {
Connection viewConn1 =
isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1)
: DriverManager.getConnection(getUrl())) {
- String tableName = generateRandomString();
- String autoSeqName = generateRandomString();
+ String tableName = generateUniqueName();
+ String autoSeqName = generateUniqueName();
String ddl =
String.format(
@@ -327,7 +327,7 @@ public class AutoPartitionViewsIT extends ParallelStatsDisabledIT {
conn.createStatement().execute(ddl);
conn.createStatement().execute("CREATE SEQUENCE " + autoSeqName + " CACHE 1");
- String metricView = generateRandomString() + "_VIEW";
+ String metricView = generateUniqueName() + "_VIEW";
// create a view
viewConn1.createStatement().execute(
"CREATE VIEW " + metricView + " AS SELECT * FROM " + tableName);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
index 17918d6..0749a20 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificTablesIT.java
@@ -47,14 +47,14 @@ public abstract class BaseTenantSpecificTablesIT extends ParallelStatsEnabledIT
@Before
public void createTables() throws SQLException {
- TENANT_ID = "T_" + BaseTest.generateRandomString();
- TENANT_ID2 = "T_" + BaseTest.generateRandomString();
+ TENANT_ID = "T_" + BaseTest.generateUniqueName();
+ TENANT_ID2 = "T_" + BaseTest.generateUniqueName();
PHOENIX_JDBC_TENANT_SPECIFIC_URL = getUrl() + ';' + TENANT_ID_ATTRIB + '=' + TENANT_ID;
PHOENIX_JDBC_TENANT_SPECIFIC_URL2 = getUrl() + ';' + TENANT_ID_ATTRIB + '=' + TENANT_ID2;
- PARENT_TABLE_NAME = "P_" + BaseTest.generateRandomString();
- TENANT_TABLE_NAME = "V_" + BaseTest.generateRandomString();
- PARENT_TABLE_NAME_NO_TENANT_TYPE_ID = "P_" + BaseTest.generateRandomString();
- TENANT_TABLE_NAME_NO_TENANT_TYPE_ID = "V_" + BaseTest.generateRandomString();
+ PARENT_TABLE_NAME = "P_" + BaseTest.generateUniqueName();
+ TENANT_TABLE_NAME = "V_" + BaseTest.generateUniqueName();
+ PARENT_TABLE_NAME_NO_TENANT_TYPE_ID = "P_" + BaseTest.generateUniqueName();
+ TENANT_TABLE_NAME_NO_TENANT_TYPE_ID = "V_" + BaseTest.generateUniqueName();
PARENT_TABLE_DDL = "CREATE TABLE " + PARENT_TABLE_NAME + " ( \n" +
" user VARCHAR ,\n" +
" tenant_id VARCHAR NOT NULL,\n" +
[13/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index e5dfb0d..0a89eff 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -102,8 +102,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
@@ -200,8 +200,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testCoveredColumns() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -310,8 +310,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testCompoundIndexKey() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -429,8 +429,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testMultipleUpdatesToSingleRow() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -513,8 +513,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testUpsertingNullForIndexedColumns() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
String testTableName = tableName + "_" + System.currentTimeMillis();
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -599,7 +599,7 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
public void testAlterTableWithImmutability() throws Exception {
String query;
ResultSet rs;
- String tableName = "TBL_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
@@ -638,8 +638,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
props.setProperty(QueryServices.SCAN_CACHE_SIZE_ATTRIB, Integer.toString(2));
props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
Connection conn1 = DriverManager.getConnection(getUrl());
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
dropTable(admin, conn1);
try{
@@ -660,8 +660,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
private void dropTable(HBaseAdmin admin, Connection conn) throws SQLException, IOException {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
conn.createStatement().execute("DROP TABLE IF EXISTS "+ tableName);
if(admin.tableExists(tableName)) {
admin.disableTable(TableName.valueOf(tableName));
@@ -690,8 +690,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
public void testIndexHalfStoreFileReader() throws Exception {
Connection conn1 = DriverManager.getConnection(getUrl());
HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
try {
dropTable(admin, conn1);
createBaseTable(conn1, tableName, "('e')");
@@ -836,8 +836,8 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
@Test
public void testTenantSpecificConnection() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
index ebdd565..5bf0c58 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/SaltedIndexIT.java
@@ -73,8 +73,8 @@ public class SaltedIndexIT extends ParallelStatsDisabledIT {
@Test
public void testMutableTableIndexMaintanenceSaltedSalted() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
testMutableTableIndexMaintanence(tableName, fullTableName, indexName, fullIndexName, TABLE_SPLITS, INDEX_SPLITS);
@@ -84,8 +84,8 @@ public class SaltedIndexIT extends ParallelStatsDisabledIT {
@Test
public void testMutableTableIndexMaintanenceSalted() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
testMutableTableIndexMaintanence(tableName, fullTableName, indexName, fullIndexName, null, INDEX_SPLITS);
@@ -95,8 +95,8 @@ public class SaltedIndexIT extends ParallelStatsDisabledIT {
@Test
public void testMutableTableIndexMaintanenceUnsalted() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
testMutableTableIndexMaintanence(tableName, fullTableName, indexName, fullIndexName, null, null);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
index 7bd1478..99a8b4d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
@@ -92,10 +92,10 @@ public class ViewIndexIT extends ParallelStatsDisabledIT {
@Test
public void testDeleteViewIndexSequences() throws Exception {
- String schemaName = generateRandomString();
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IND_" + generateRandomString();
- String VIEW_NAME = "VIEW_" + generateRandomString();
+ String schemaName = generateUniqueName();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
+ String VIEW_NAME = "VIEW_" + generateUniqueName();
String viewName = schemaName + "." + VIEW_NAME;
createBaseTable(schemaName, tableName, false, null, null);
@@ -120,10 +120,10 @@ public class ViewIndexIT extends ParallelStatsDisabledIT {
@Test
public void testMultiTenantViewLocalIndex() throws Exception {
- String schemaName = generateRandomString();
- String tableName = generateRandomString();
- String indexName = "IND_" + generateRandomString();
- String VIEW_NAME = "VIEW_" + generateRandomString();
+ String schemaName = generateUniqueName();
+ String tableName = generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
+ String VIEW_NAME = "VIEW_" + generateUniqueName();
createBaseTable(schemaName, tableName, true, null, null);
Connection conn = DriverManager.getConnection(getUrl());
PreparedStatement stmt = conn.prepareStatement(
@@ -167,9 +167,9 @@ public class ViewIndexIT extends ParallelStatsDisabledIT {
@Test
public void testCreatingIndexOnGlobalView() throws Exception {
- String baseTable = generateRandomString();
- String globalView = generateRandomString();
- String globalViewIdx = generateRandomString();
+ String baseTable = generateUniqueName();
+ String globalView = generateUniqueName();
+ String globalViewIdx = generateUniqueName();
try (Connection conn = DriverManager.getConnection(getUrl())) {
conn.createStatement().execute("CREATE TABLE " + baseTable + " (TENANT_ID CHAR(15) NOT NULL, PK2 DATE NOT NULL, PK3 INTEGER NOT NULL, KV1 VARCHAR, KV2 VARCHAR, KV3 CHAR(15) CONSTRAINT PK PRIMARY KEY(TENANT_ID, PK2 ROW_TIMESTAMP, PK3)) MULTI_TENANT=true");
conn.createStatement().execute("CREATE VIEW " + globalView + " AS SELECT * FROM " + baseTable);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
index 44ec7a5..3ffade0 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/MutableRollbackIT.java
@@ -77,11 +77,11 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
public void testRollbackOfUncommittedExistingKeyValueIndexUpdate() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName1 = "TBL1_" + generateRandomString();
- String indexName1 = "IDX1_" + generateRandomString();
+ String tableName1 = "TBL1_" + generateUniqueName();
+ String indexName1 = "IDX1_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName1);
- String tableName2 = "TBL2_" + generateRandomString();
- String indexName2 = "IDX2_" + generateRandomString();
+ String tableName2 = "TBL2_" + generateUniqueName();
+ String indexName2 = "IDX2_" + generateUniqueName();
String fullTableName2 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName2);
conn.setAutoCommit(false);
try {
@@ -209,11 +209,11 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
@Test
public void testRollbackOfUncommittedExistingRowKeyIndexUpdate() throws Exception {
- String tableName1 = "TBL1_" + generateRandomString();
- String indexName1 = "IDX1_" + generateRandomString();
+ String tableName1 = "TBL1_" + generateUniqueName();
+ String indexName1 = "IDX1_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName1);
- String tableName2 = "TBL2_" + generateRandomString();
- String indexName2 = "IDX2_" + generateRandomString();
+ String tableName2 = "TBL2_" + generateUniqueName();
+ String indexName2 = "IDX2_" + generateUniqueName();
String fullTableName2 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName2);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -352,10 +352,10 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
public void testMultiRollbackOfUncommittedExistingRowKeyIndexUpdate() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName1 = "TBL1_" + generateRandomString();
- String indexName1 = "IDX1_" + generateRandomString();
+ String tableName1 = "TBL1_" + generateUniqueName();
+ String indexName1 = "IDX1_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName1);
- String tableName2 = "TBL2_" + generateRandomString();
+ String tableName2 = "TBL2_" + generateUniqueName();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
@@ -458,10 +458,10 @@ public class MutableRollbackIT extends ParallelStatsDisabledIT {
public void testCheckpointAndRollback() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName1 = "TBL1_" + generateRandomString();
- String indexName1 = "IDX1_" + generateRandomString();
+ String tableName1 = "TBL1_" + generateUniqueName();
+ String indexName1 = "IDX1_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName1);
- String tableName2 = "TBL2_" + generateRandomString();
+ String tableName2 = "TBL2_" + generateUniqueName();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
index fb50548..5153a68 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/RollbackIT.java
@@ -76,8 +76,8 @@ public class RollbackIT extends ParallelStatsDisabledIT {
@Test
public void testRollbackOfUncommittedKeyValueIndexInsert() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -124,8 +124,8 @@ public class RollbackIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try {
Statement stmt = conn.createStatement();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java
index d680954..0b805c6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableUpsertSelectIT.java
@@ -44,11 +44,11 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + source +
" (pk VARCHAR NOT NULL PRIMARY KEY, col INTEGER)";
createTestTable(getUrl(), ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE IF NOT EXISTS " + target +
" (pk VARCHAR NOT NULL PRIMARY KEY, col INTEGER) SALT_BUCKETS=4";
createTestTable(getUrl(), ddl);
@@ -83,11 +83,11 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + source +
" (pk VARCHAR NOT NULL PRIMARY KEY, col INTEGER) SALT_BUCKETS=4";
createTestTable(getUrl(), ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE IF NOT EXISTS " + target +
" (pk VARCHAR NOT NULL PRIMARY KEY, col INTEGER)";
createTestTable(getUrl(), ddl);
@@ -127,11 +127,11 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + source +
" (pk VARCHAR NOT NULL PRIMARY KEY, col INTEGER) SALT_BUCKETS=4";
createTestTable(getUrl(), ddl);
- String target = generateRandomString();
+ String target = generateUniqueName();
ddl = "CREATE TABLE IF NOT EXISTS " + target +
" (pk VARCHAR NOT NULL PRIMARY KEY, col INTEGER) SALT_BUCKETS=4";
createTestTable(getUrl(), ddl);
@@ -166,7 +166,7 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String source = generateRandomString();
+ String source = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + source +
" (pk VARCHAR NOT NULL PRIMARY KEY, col1 INTEGER, col2 INTEGER) SALT_BUCKETS=4";
createTestTable(getUrl(), ddl);
@@ -200,7 +200,7 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String source1 = generateRandomString();
+ String source1 = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + source1 +
" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" +
" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4";
@@ -241,7 +241,7 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String source1 = generateRandomString();
+ String source1 = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + source1 +
" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" +
" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4";
@@ -258,7 +258,7 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
}
conn.commit();
- String source2 = generateRandomString();
+ String source2 = generateUniqueName();
String ddl2 = "CREATE TABLE IF NOT EXISTS " + source2 +
" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" +
" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4";
@@ -275,7 +275,7 @@ public class SaltedTableUpsertSelectIT extends ParallelStatsDisabledIT {
}
conn.commit();
- String dest = generateRandomString();
+ String dest = generateUniqueName();
String ddl3 = "CREATE TABLE IF NOT EXISTS " + dest +
" (pk1 varchar NULL, pk2 varchar NULL, pk3 integer NOT NULL, col1 INTEGER" +
" CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SALT_BUCKETS=4";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableVarLengthRowKeyIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableVarLengthRowKeyIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableVarLengthRowKeyIT.java
index c3f331b..fa43876 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableVarLengthRowKeyIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableVarLengthRowKeyIT.java
@@ -36,7 +36,7 @@ import org.junit.Test;
public class SaltedTableVarLengthRowKeyIT extends ParallelStatsDisabledIT {
- private static final String TEST_TABLE = generateRandomString();
+ private static final String TEST_TABLE = generateUniqueName();
private static void initTableValues() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java b/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
index 7b3b286..8fcdebb 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/iterate/PhoenixQueryTimeoutIT.java
@@ -37,7 +37,7 @@ import org.junit.Test;
*/
public class PhoenixQueryTimeoutIT extends ParallelStatsDisabledIT {
- private static final String QUERY_TIMEOUT_TEST = generateRandomString();
+ private static final String QUERY_TIMEOUT_TEST = generateUniqueName();
@Test
/**
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
index ba35f4e..47261ac 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/iterate/RoundRobinResultIteratorIT.java
@@ -78,7 +78,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
@Test
public void testRoundRobinAfterTableSplit() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
byte[] tableNameBytes = Bytes.toBytes(tableName);
int numRows = setupTableForSplit(tableName);
Connection conn = DriverManager.getConnection(getUrl());
@@ -128,7 +128,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
}
private void testSelectAllRowsWithDifferentFetchSizes(boolean salted) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
int numRows = 9;
Set<String> expectedKeys = Collections.unmodifiableSet(createTableAndInsertRows(tableName, numRows, salted, false));
Connection conn = DriverManager.getConnection(getUrl());
@@ -152,7 +152,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
}
private void testSelectRowsWithFilterAndDifferentFetchSizes(boolean salted) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
int numRows = 6;
Set<String> insertedKeys = createTableAndInsertRows(tableName, numRows, salted, false);
Connection conn = DriverManager.getConnection(getUrl());
@@ -205,7 +205,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
@Test
public void testFetchSizesAndRVCExpression() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Set<String> insertedKeys = Collections.unmodifiableSet(createTableAndInsertRows(tableName, 4, false, false));
Connection conn = DriverManager.getConnection(getUrl());
PreparedStatement stmt = conn.prepareStatement("SELECT K FROM " + tableName + " WHERE (K, V) > (?, ?)");
@@ -280,7 +280,7 @@ public class RoundRobinResultIteratorIT extends ParallelStatsDisabledIT {
int insertedRowsA = 10;
int insertedRowsB = 5;
int insertedRowsC = 7;
- String baseTableName = generateRandomString();
+ String baseTableName = generateUniqueName();
String tableA = "TABLEA" + baseTableName;
String tableB = "TABLEB" + baseTableName;
String tableC = "TABLEC" + baseTableName;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java b/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
index 56f9f4b..930f454 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheIT.java
@@ -76,7 +76,7 @@ public class UpdateCacheIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.createStatement().execute(
- "create table " + fullTableName + TEST_TABLE_SCHEMA);
+ "create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA);
}
}
@@ -84,33 +84,33 @@ public class UpdateCacheIT extends ParallelStatsDisabledIT {
public void testUpdateCacheForTxnTable() throws Exception {
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + TRANSACTIONAL_DATA_TABLE;
Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TEST_PROPERTIES));
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA + "TRANSACTIONAL=true");
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + "TRANSACTIONAL=true");
helpTestUpdateCache(fullTableName, null, new int[] {1, 1});
}
@Test
public void testUpdateCacheForNonTxnTable() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + tableName;
Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TEST_PROPERTIES));
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA);
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA);
helpTestUpdateCache(fullTableName, null, new int[] {1, 3});
}
@Test
public void testUpdateCacheForNonTxnSystemTable() throws Exception {
- String fullTableName = QueryConstants.SYSTEM_SCHEMA_NAME + QueryConstants.NAME_SEPARATOR + generateRandomString();
+ String fullTableName = QueryConstants.SYSTEM_SCHEMA_NAME + QueryConstants.NAME_SEPARATOR + generateUniqueName();
setupSystemTable(fullTableName);
helpTestUpdateCache(fullTableName, null, new int[] {0, 0});
}
@Test
public void testUpdateCacheForNeverUpdatedTable() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + tableName;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA);
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA);
conn.createStatement().execute(
"alter table " + fullTableName + " SET UPDATE_CACHE_FREQUENCY=NEVER");
}
@@ -119,20 +119,20 @@ public class UpdateCacheIT extends ParallelStatsDisabledIT {
@Test
public void testUpdateCacheForAlwaysUpdatedTable() throws Exception {
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + generateRandomString();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- conn.createStatement().execute("CREATE TABLE " + fullTableName + TEST_TABLE_SCHEMA + " UPDATE_CACHE_FREQUENCY=always");
+ conn.createStatement().execute("CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + " UPDATE_CACHE_FREQUENCY=always");
}
helpTestUpdateCache(fullTableName, null, new int[] {1, 3});
}
@Test
public void testUpdateCacheForTimeLimitedUpdateTable() throws Exception {
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + generateRandomString();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- conn.createStatement().execute("CREATE TABLE " + fullTableName + TEST_TABLE_SCHEMA + " UPDATE_CACHE_FREQUENCY=" + 10000);
+ conn.createStatement().execute("CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + " UPDATE_CACHE_FREQUENCY=" + 10000);
}
helpTestUpdateCache(fullTableName, null, new int[] {0, 0});
Thread.sleep(10000);
@@ -141,10 +141,10 @@ public class UpdateCacheIT extends ParallelStatsDisabledIT {
@Test
public void testUpdateCacheForChangingUpdateTable() throws Exception {
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + generateRandomString();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- conn.createStatement().execute("CREATE TABLE " + fullTableName + TEST_TABLE_SCHEMA + " UPDATE_CACHE_FREQUENCY=never");
+ conn.createStatement().execute("CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + " UPDATE_CACHE_FREQUENCY=never");
}
helpTestUpdateCache(fullTableName, null, new int[] {0, 0});
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheWithScnIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheWithScnIT.java b/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheWithScnIT.java
index 75f67b3..b0d672d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheWithScnIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheWithScnIT.java
@@ -29,6 +29,7 @@ import org.apache.phoenix.end2end.BaseClientManagedTimeIT;
import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
public class UpdateCacheWithScnIT extends BaseClientManagedTimeIT {
@@ -40,7 +41,7 @@ public class UpdateCacheWithScnIT extends BaseClientManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
Connection conn = DriverManager.getConnection(getUrl(), props);
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA);
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA);
// FIXME: given that the scn is advancing in the test, why aren't there more RPCs?
UpdateCacheIT.helpTestUpdateCache(fullTableName, ts+2, new int[] {1, 1});
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java
index f0319c0..dbb34ba 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java
@@ -43,7 +43,7 @@ public class PhoenixTableMetricsWriterIT extends BaseTracingTestIT {
public void testCreatesTable() throws Exception {
PhoenixMetricsSink sink = new PhoenixMetricsSink();
Connection conn = getConnectionWithoutTracing();
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
sink.initForTesting(conn, tableName);
// check for existence of the tracing table
@@ -74,7 +74,7 @@ public class PhoenixTableMetricsWriterIT extends BaseTracingTestIT {
// hook up a phoenix sink
PhoenixMetricsSink sink = new PhoenixMetricsSink();
Connection conn = getConnectionWithoutTracing();
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
sink.initForTesting(conn, tableName);
// create a simple metrics record
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java
index a7bd730..723810f 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java
@@ -55,7 +55,7 @@ public class PhoenixTraceReaderIT extends BaseTracingTestIT {
PhoenixMetricsSink sink = new PhoenixMetricsSink();
Properties props = new Properties(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
sink.initForTesting(conn, tableName);
// create a simple metrics record
@@ -88,7 +88,7 @@ public class PhoenixTraceReaderIT extends BaseTracingTestIT {
// hook up a phoenix sink
PhoenixMetricsSink sink = new PhoenixMetricsSink();
Connection conn = getConnectionWithoutTracing();
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
sink.initForTesting(conn, tableName);
// create a simple metrics record
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
index 8097cc9..19fc75f 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java
@@ -70,11 +70,11 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT {
public void setupMetrics() throws Exception {
PhoenixMetricsSink pWriter = new PhoenixMetricsSink();
Connection conn = getConnectionWithoutTracing();
- tracingTableName = "TRACING_" + generateRandomString();
+ tracingTableName = "TRACING_" + generateUniqueName();
pWriter.initForTesting(conn, tracingTableName);
sink = new DisableableMetricsWriter(pWriter);
- enabledForLoggingTable = "ENABLED_FOR_LOGGING_" + generateRandomString();
- enableForLoggingIndex = "ENABALED_FOR_LOGGING_INDEX_" + generateRandomString();
+ enabledForLoggingTable = "ENABLED_FOR_LOGGING_" + generateUniqueName();
+ enableForLoggingIndex = "ENABALED_FOR_LOGGING_INDEX_" + generateUniqueName();
TracingTestUtil.registerSink(sink, tracingTableName);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
new file mode 100644
index 0000000..6fea975
--- /dev/null
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
@@ -0,0 +1,163 @@
+/*
+ * 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.tx;
+
+import static org.apache.phoenix.util.TestUtil.INDEX_DATA_SCHEMA;
+import static org.apache.phoenix.util.TestUtil.createTransactionalTable;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.Map;
+
+import javax.annotation.concurrent.NotThreadSafe;
+
+import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.end2end.Shadower;
+import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.google.common.collect.Maps;
+
+@NotThreadSafe
+public class NotThreadSafeTransactionIT extends ParallelStatsDisabledIT {
+
+ @BeforeClass
+ @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
+ public static void doSetup() throws Exception {
+ Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
+ props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
+ setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ }
+
+ @Test
+ public void testInflightUpdateNotSeen() throws Exception {
+ String transTableName = generateUniqueName();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
+ String selectSQL = "SELECT * FROM " + fullTableName;
+ try (Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ Connection conn2 = DriverManager.getConnection(getUrl())) {
+ createTransactionalTable(conn, fullTableName);
+ conn1.setAutoCommit(false);
+ conn2.setAutoCommit(true);
+ ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+
+ String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+ PreparedStatement stmt = conn1.prepareStatement(upsert);
+ // upsert two rows
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+ conn1.commit();
+
+ TestUtil.setRowKeyColumns(stmt, 2);
+ stmt.execute();
+
+ rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 IS NULL");
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+
+ upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk, int_col1) VALUES(?, ?, ?, ?, ?, ?, 1)";
+ stmt = conn1.prepareStatement(upsert);
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+
+ rs = conn1.createStatement().executeQuery("SELECT int_col1 FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ assertFalse(rs.next());
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertEquals(0, rs.getInt(1));
+ rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertFalse(rs.next());
+
+ conn1.commit();
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
+ assertTrue(rs.next());
+ assertFalse(rs.next());
+ }
+ }
+
+ @Test
+ public void testInflightDeleteNotSeen() throws Exception {
+ String transTableName = generateUniqueName();
+ String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
+ String selectSQL = "SELECT * FROM " + fullTableName;
+ try (Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn1 = DriverManager.getConnection(getUrl());
+ Connection conn2 = DriverManager.getConnection(getUrl())) {
+ createTransactionalTable(conn, fullTableName);
+ conn1.setAutoCommit(false);
+ conn2.setAutoCommit(true);
+ ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
+ assertFalse(rs.next());
+
+ String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+ PreparedStatement stmt = conn1.prepareStatement(upsert);
+ // upsert two rows
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+ TestUtil.setRowKeyColumns(stmt, 2);
+ stmt.execute();
+
+ conn1.commit();
+
+ rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+
+ String delete = "DELETE FROM " + fullTableName + " WHERE varchar_pk = 'varchar1'";
+ stmt = conn1.prepareStatement(delete);
+ int count = stmt.executeUpdate();
+ assertEquals(1,count);
+
+ rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ assertFalse(rs.next());
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+ assertFalse(rs.next());
+
+ conn1.commit();
+
+ rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ assertFalse(rs.next());
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
index c219158..bf99c4b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
@@ -60,6 +60,7 @@ import org.apache.phoenix.schema.types.PInteger;
import org.apache.phoenix.util.ByteUtil;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.StringUtil;
import org.apache.phoenix.util.TestUtil;
import org.apache.tephra.TransactionContext;
import org.apache.tephra.TransactionSystemClient;
@@ -83,17 +84,13 @@ public class TransactionIT extends ParallelStatsDisabledIT {
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
- private static void createTable(Connection conn, String tableName) throws SQLException {
- conn.createStatement().execute("create table " + tableName + TEST_TABLE_SCHEMA + "TRANSACTIONAL=true");
- }
-
@Test
public void testReadOwnWrites() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
String selectSql = "SELECT * FROM "+ fullTableName;
try (Connection conn = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
conn.setAutoCommit(false);
ResultSet rs = conn.createStatement().executeQuery(selectSql);
assertFalse(rs.next());
@@ -124,11 +121,11 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testTxnClosedCorrecty() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
String selectSql = "SELECT * FROM "+fullTableName;
try (Connection conn = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
conn.setAutoCommit(false);
ResultSet rs = conn.createStatement().executeQuery(selectSql);
assertFalse(rs.next());
@@ -158,13 +155,13 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testDelete() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
String selectSQL = "SELECT * FROM " + fullTableName;
try (Connection conn = DriverManager.getConnection(getUrl());
Connection conn1 = DriverManager.getConnection(getUrl());
Connection conn2 = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
conn1.setAutoCommit(false);
ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
assertFalse(rs.next());
@@ -198,10 +195,10 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testAutoCommitQuerySingleTable() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
try (Connection conn = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
conn.setAutoCommit(true);
// verify no rows returned
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM " + fullTableName);
@@ -211,10 +208,10 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testAutoCommitQueryMultiTables() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
try (Connection conn = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
conn.setAutoCommit(true);
// verify no rows returned
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM " + fullTableName + " a JOIN " + fullTableName + " b ON (a.long_pk = b.int_pk)");
@@ -224,11 +221,11 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testColConflicts() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
try (Connection conn1 = DriverManager.getConnection(getUrl());
Connection conn2 = DriverManager.getConnection(getUrl())) {
- createTable(conn1, fullTableName);
+ TestUtil.createTransactionalTable(conn1, fullTableName);
conn1.setAutoCommit(false);
conn2.setAutoCommit(false);
String selectSql = "SELECT * FROM "+fullTableName;
@@ -297,26 +294,26 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testRowConflictDetected() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
Connection conn = DriverManager.getConnection(getUrl());
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
testRowConflicts(fullTableName);
}
@Test
public void testNoConflictDetectionForImmutableRows() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
Connection conn = DriverManager.getConnection(getUrl());
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
conn.createStatement().execute("ALTER TABLE " + fullTableName + " SET IMMUTABLE_ROWS=true");
testRowConflicts(fullTableName);
}
@Test
public void testNonTxToTxTable() throws Exception {
- String nonTxTableName = generateRandomString();
+ String nonTxTableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute("CREATE TABLE " + nonTxTableName + "(k INTEGER PRIMARY KEY, v VARCHAR)");
@@ -380,7 +377,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Ignore
@Test
public void testNonTxToTxTableFailure() throws Exception {
- String nonTxTableName = generateRandomString();
+ String nonTxTableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
// Put table in SYSTEM schema to prevent attempts to update the cache after we disable SYSTEM.CATALOG
@@ -422,7 +419,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testProperties() throws Exception {
- String nonTxTableName = generateRandomString();
+ String nonTxTableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute("CREATE TABLE " + nonTxTableName + "1(k INTEGER PRIMARY KEY, a.v VARCHAR, b.v VARCHAR, c.v VARCHAR) TTL=1000");
@@ -503,8 +500,8 @@ public class TransactionIT extends ParallelStatsDisabledIT {
public void testCreateTableToBeTransactional() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String t1 = generateRandomString();
- String t2 = generateRandomString();
+ String t1 = generateUniqueName();
+ String t2 = generateUniqueName();
String ddl = "CREATE TABLE " + t1 + " (k varchar primary key) transactional=true";
conn.createStatement().execute(ddl);
PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
@@ -547,11 +544,11 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testCurrentDate() throws Exception {
- String transTableName = generateRandomString();
+ String transTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
String selectSql = "SELECT current_date() FROM "+fullTableName;
try (Connection conn = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
+ TestUtil.createTransactionalTable(conn, fullTableName);
conn.setAutoCommit(false);
ResultSet rs = conn.createStatement().executeQuery(selectSql);
assertFalse(rs.next());
@@ -580,7 +577,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testReCreateTxnTableAfterDroppingExistingNonTxnTable() throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -595,7 +592,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
@Test
public void testRowTimestampDisabled() throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
@@ -624,7 +621,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String fullTableName = generateRandomString();
+ String fullTableName = generateUniqueName();
PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
TransactionSystemClient txServiceClient = pconn.getQueryServices().getTransactionSystemClient();
@@ -743,7 +740,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
public void testCheckpointAndRollback() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String fullTableName = generateRandomString();
+ String fullTableName = generateUniqueName();
conn.setAutoCommit(false);
try {
Statement stmt = conn.createStatement();
@@ -784,113 +781,6 @@ public class TransactionIT extends ParallelStatsDisabledIT {
}
@Test
- public void testInflightUpdateNotSeen() throws Exception {
- String transTableName = generateRandomString();
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
- String selectSQL = "SELECT * FROM " + fullTableName;
- try (Connection conn = DriverManager.getConnection(getUrl());
- Connection conn1 = DriverManager.getConnection(getUrl());
- Connection conn2 = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
- conn1.setAutoCommit(false);
- conn2.setAutoCommit(true);
- ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
-
- String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
- PreparedStatement stmt = conn1.prepareStatement(upsert);
- // upsert two rows
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
- conn1.commit();
-
- TestUtil.setRowKeyColumns(stmt, 2);
- stmt.execute();
-
- rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 IS NULL");
- assertTrue(rs.next());
- assertEquals(2, rs.getInt(1));
-
- upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk, int_col1) VALUES(?, ?, ?, ?, ?, ?, 1)";
- stmt = conn1.prepareStatement(upsert);
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
-
- rs = conn1.createStatement().executeQuery("SELECT int_col1 FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- assertFalse(rs.next());
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertEquals(0, rs.getInt(1));
- rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
- assertFalse(rs.next());
-
- conn1.commit();
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- rs = conn2.createStatement().executeQuery("SELECT * FROM " + fullTableName + " WHERE int_col1 = 1");
- assertTrue(rs.next());
- assertFalse(rs.next());
- }
- }
-
- @Test
- public void testInflightDeleteNotSeen() throws Exception {
- String transTableName = generateRandomString();
- String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + transTableName;
- String selectSQL = "SELECT * FROM " + fullTableName;
- try (Connection conn = DriverManager.getConnection(getUrl());
- Connection conn1 = DriverManager.getConnection(getUrl());
- Connection conn2 = DriverManager.getConnection(getUrl())) {
- createTable(conn, fullTableName);
- conn1.setAutoCommit(false);
- conn2.setAutoCommit(true);
- ResultSet rs = conn1.createStatement().executeQuery(selectSQL);
- assertFalse(rs.next());
-
- String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
- PreparedStatement stmt = conn1.prepareStatement(upsert);
- // upsert two rows
- TestUtil.setRowKeyColumns(stmt, 1);
- stmt.execute();
- TestUtil.setRowKeyColumns(stmt, 2);
- stmt.execute();
-
- conn1.commit();
-
- rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(2, rs.getInt(1));
-
- String delete = "DELETE FROM " + fullTableName + " WHERE varchar_pk = 'varchar1'";
- stmt = conn1.prepareStatement(delete);
- int count = stmt.executeUpdate();
- assertEquals(1,count);
-
- rs = conn1.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- assertFalse(rs.next());
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(2, rs.getInt(1));
- assertFalse(rs.next());
-
- conn1.commit();
-
- rs = conn2.createStatement().executeQuery("SELECT count(*) FROM " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- assertFalse(rs.next());
- }
- }
-
- @Test
public void testParallelUpsertSelect() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(QueryServices.MUTATE_BATCH_SIZE_ATTRIB, Integer.toString(3));
@@ -898,16 +788,19 @@ public class TransactionIT extends ParallelStatsDisabledIT {
props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, Integer.toString(3));
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- conn.createStatement().execute("CREATE SEQUENCE S1");
- conn.createStatement().execute("CREATE TABLE SALTEDT1 (pk INTEGER PRIMARY KEY, val INTEGER) SALT_BUCKETS=4,TRANSACTIONAL=true");
- conn.createStatement().execute("CREATE TABLE T2 (pk INTEGER PRIMARY KEY, val INTEGER) TRANSACTIONAL=true");
+ String fullTableName1 = generateUniqueName();
+ String fullTableName2 = generateUniqueName();
+ String sequenceName = "S_" + generateUniqueName();
+ conn.createStatement().execute("CREATE SEQUENCE " + sequenceName);
+ conn.createStatement().execute("CREATE TABLE " + fullTableName1 + " (pk INTEGER PRIMARY KEY, val INTEGER) SALT_BUCKETS=4,TRANSACTIONAL=true");
+ conn.createStatement().execute("CREATE TABLE " + fullTableName2 + " (pk INTEGER PRIMARY KEY, val INTEGER) TRANSACTIONAL=true");
for (int i = 0; i < 100; i++) {
- conn.createStatement().execute("UPSERT INTO SALTEDT1 VALUES (NEXT VALUE FOR S1, " + (i%10) + ")");
+ conn.createStatement().execute("UPSERT INTO " + fullTableName1 + " VALUES (NEXT VALUE FOR " + sequenceName + ", " + (i%10) + ")");
}
conn.commit();
conn.setAutoCommit(true);
- int upsertCount = conn.createStatement().executeUpdate("UPSERT INTO T2 SELECT pk, val FROM SALTEDT1");
+ int upsertCount = conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName2 + " SELECT pk, val FROM " + fullTableName1);
assertEquals(100,upsertCount);
conn.close();
}
@@ -916,24 +809,24 @@ public class TransactionIT extends ParallelStatsDisabledIT {
public void testTransactionalTableMetadata() throws SQLException {
try (Connection conn = DriverManager.getConnection(getUrl())) {
- String transactTableName = "TR";
+ String transactTableName = generateUniqueName();
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE " + transactTableName + " (k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " +
"TRANSACTIONAL=true");
conn.commit();
DatabaseMetaData dbmd = conn.getMetaData();
- ResultSet rs = dbmd.getTables(null, null, transactTableName, null);
+ ResultSet rs = dbmd.getTables(null, null, StringUtil.escapeLike(transactTableName), null);
assertTrue(rs.next());
assertEquals("Transactional table was not marked as transactional in JDBC API.",
"true", rs.getString(PhoenixDatabaseMetaData.TRANSACTIONAL));
- String nonTransactTableName = "NOTR";
+ String nonTransactTableName = generateUniqueName();
Statement stmt2 = conn.createStatement();
stmt2.execute("CREATE TABLE " + nonTransactTableName + "(k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) ");
conn.commit();
- ResultSet rs2 = dbmd.getTables(null, null, nonTransactTableName, null);
+ ResultSet rs2 = dbmd.getTables(null, null, StringUtil.escapeLike(nonTransactTableName), null);
assertTrue(rs2.next());
assertEquals("Non-transactional table was marked as transactional in JDBC API.",
"false", rs2.getString(PhoenixDatabaseMetaData.TRANSACTIONAL));
@@ -944,7 +837,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
public void testInflightPartialEval() throws SQLException {
try (Connection conn = DriverManager.getConnection(getUrl())) {
- String transactTableName = "TR" + generateRandomString();
+ String transactTableName = generateUniqueName();
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE " + transactTableName + " (k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " +
"TRANSACTIONAL=true");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
index 5a42a97..21ea072 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/TxCheckpointIT.java
@@ -80,9 +80,9 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
@Test
public void testUpsertSelectDoesntSeeUpsertedData() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
- String seqName = "SEQ_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
+ String seqName = "SEQ_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(tableName, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(QueryServices.MUTATE_BATCH_SIZE_ATTRIB, Integer.toString(3));
@@ -105,8 +105,8 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
@Test
public void testRollbackOfUncommittedDeleteSingleCol() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(tableName, tableName);
String indexDDL = "CREATE "+(localIndex? "LOCAL " : "")+"INDEX " + indexName + " ON " + fullTableName + " (v1) INCLUDE(v2)";
testRollbackOfUncommittedDelete(indexDDL, fullTableName);
@@ -114,8 +114,8 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
@Test
public void testRollbackOfUncommittedDeleteMultiCol() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(tableName, tableName);
String indexDDL = "CREATE "+(localIndex? "LOCAL " : "")+"INDEX " + indexName + " ON " + fullTableName + " (v1, v2)";
testRollbackOfUncommittedDelete(indexDDL, fullTableName);
@@ -208,8 +208,8 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
@Test
public void testCheckpointForUpsertSelect() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(tableName, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props);) {
@@ -298,8 +298,8 @@ public class TxCheckpointIT extends ParallelStatsDisabledIT {
@Test
public void testCheckpointForDeleteAndUpsert() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(tableName, tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
ResultSet rs;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 7d7abef..7008911 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -111,10 +111,10 @@ import java.util.concurrent.Future;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nonnull;
-import org.apache.commons.lang.RandomStringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
@@ -189,26 +189,6 @@ import com.google.inject.util.Providers;
*/
public abstract class BaseTest {
- protected static final String TEST_TABLE_SCHEMA = "(" +
- " varchar_pk VARCHAR NOT NULL, " +
- " char_pk CHAR(10) NOT NULL, " +
- " int_pk INTEGER NOT NULL, "+
- " long_pk BIGINT NOT NULL, " +
- " decimal_pk DECIMAL(31, 10) NOT NULL, " +
- " date_pk DATE NOT NULL, " +
- " a.varchar_col1 VARCHAR, " +
- " a.char_col1 CHAR(10), " +
- " a.int_col1 INTEGER, " +
- " a.long_col1 BIGINT, " +
- " a.decimal_col1 DECIMAL(31, 10), " +
- " a.date1 DATE, " +
- " b.varchar_col2 VARCHAR, " +
- " b.char_col2 CHAR(10), " +
- " b.int_col2 INTEGER, " +
- " b.long_col2 BIGINT, " +
- " b.decimal_col2 DECIMAL(31, 10), " +
- " b.date2 DATE " +
- " CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk, date_pk)) ";
private static final Map<String,String> tableDDLMap;
private static final Logger logger = LoggerFactory.getLogger(BaseTest.class);
protected static final int DEFAULT_TXN_TIMEOUT_SECONDS = 30;
@@ -801,8 +781,16 @@ public abstract class BaseTest {
createTestTable(url, ddl, splits, ts);
}
- public static String generateRandomString() {
- return RandomStringUtils.randomAlphabetic(20).toUpperCase();
+ private static AtomicInteger NAME_SUFFIX = new AtomicInteger(0);
+ private static final int MAX_SUFFIX_VALUE = 1000000;
+
+ public static String generateUniqueName() {
+ int nextName = NAME_SUFFIX.incrementAndGet();
+ if (nextName >= MAX_SUFFIX_VALUE) {
+ throw new IllegalStateException("Used up all unique names");
+ }
+ return "T" + Integer.toString(MAX_SUFFIX_VALUE + nextName).substring(1);
+ //return RandomStringUtils.randomAlphabetic(20).toUpperCase();
}
protected static void createTestTable(String url, String ddl) throws SQLException {
@@ -1112,7 +1100,7 @@ public abstract class BaseTest {
protected static String initATableValues(String tableName, String tenantId, byte[][] splits, Date date, Long ts, String url) throws Exception {
if(tableName == null) {
- tableName = generateRandomString();
+ tableName = generateUniqueName();
}
String tableDDLType = ATABLE_NAME;
if (ts == null) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
index 50180d1..de5af46 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
@@ -17,7 +17,7 @@
*/
package org.apache.phoenix.util;
-import static org.apache.phoenix.query.BaseTest.generateRandomString;
+import static org.apache.phoenix.query.BaseTest.generateUniqueName;
import static org.apache.phoenix.query.QueryConstants.MILLIS_IN_DAY;
import static org.apache.phoenix.query.QueryConstants.SINGLE_COLUMN_FAMILY_NAME;
import static org.apache.phoenix.query.QueryConstants.SINGLE_COLUMN_NAME;
@@ -125,6 +125,27 @@ public class TestUtil {
public static final String DEFAULT_INDEX_TABLE_NAME = "I";
public static final String DEFAULT_DATA_TABLE_FULL_NAME = SchemaUtil.getTableName(DEFAULT_SCHEMA_NAME, "T");
public static final String DEFAULT_INDEX_TABLE_FULL_NAME = SchemaUtil.getTableName(DEFAULT_SCHEMA_NAME, "I");
+
+ public static final String TEST_TABLE_SCHEMA = "(" +
+ " varchar_pk VARCHAR NOT NULL, " +
+ " char_pk CHAR(10) NOT NULL, " +
+ " int_pk INTEGER NOT NULL, "+
+ " long_pk BIGINT NOT NULL, " +
+ " decimal_pk DECIMAL(31, 10) NOT NULL, " +
+ " date_pk DATE NOT NULL, " +
+ " a.varchar_col1 VARCHAR, " +
+ " a.char_col1 CHAR(10), " +
+ " a.int_col1 INTEGER, " +
+ " a.long_col1 BIGINT, " +
+ " a.decimal_col1 DECIMAL(31, 10), " +
+ " a.date1 DATE, " +
+ " b.varchar_col2 VARCHAR, " +
+ " b.char_col2 CHAR(10), " +
+ " b.int_col2 INTEGER, " +
+ " b.long_col2 BIGINT, " +
+ " b.decimal_col2 DECIMAL(31, 10), " +
+ " b.date2 DATE " +
+ " CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk, date_pk)) ";
private TestUtil() {
}
@@ -509,7 +530,7 @@ public class TestUtil {
* list of values to be inserted into the pk column
*/
public static String initTables(Connection conn, String inputSqlType, List<Object> inputList) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
createTable(conn, inputSqlType, tableName, "ASC");
createTable(conn, inputSqlType, tableName, "DESC");
for (int i = 0; i < inputList.size(); ++i) {
@@ -768,5 +789,9 @@ public class TestUtil {
}
}
}
+
+ public static void createTransactionalTable(Connection conn, String tableName) throws SQLException {
+ conn.createStatement().execute("create table " + tableName + TestUtil.TEST_TABLE_SCHEMA + "TRANSACTIONAL=true");
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
----------------------------------------------------------------------
diff --git a/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java b/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
index 2d52fc2..e78a964 100644
--- a/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
+++ b/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
@@ -131,7 +131,7 @@ public class PhoenixSinkIT extends BaseHBaseManagedTimeIT {
@Test
public void testSinkLifecycle () {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName +
" (flume_time timestamp not null, col1 varchar , col2 varchar" +
@@ -162,7 +162,7 @@ public class PhoenixSinkIT extends BaseHBaseManagedTimeIT {
@Test
public void testCreateTable () throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " " +
" (flume_time timestamp not null, col1 varchar , col2 varchar" +
" CONSTRAINT pk PRIMARY KEY (flume_time))\n";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
----------------------------------------------------------------------
diff --git a/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java b/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
index 7348a65..9548e65 100644
--- a/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
+++ b/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
@@ -59,7 +59,7 @@ public class RegexEventSerializerIT extends BaseHBaseManagedTimeIT {
@Test
public void testKeyGenerator() throws EventDeliveryException, SQLException {
- final String fullTableName = generateRandomString();
+ final String fullTableName = generateUniqueName();
initSinkContextWithDefaults(fullTableName);
sink = new PhoenixSink();
@@ -94,7 +94,7 @@ public class RegexEventSerializerIT extends BaseHBaseManagedTimeIT {
@Test
public void testMismatchKeyGenerator() throws EventDeliveryException, SQLException {
- final String fullTableName = generateRandomString();
+ final String fullTableName = generateUniqueName();
initSinkContextWithDefaults(fullTableName);
setConfig(FlumeConstants.CONFIG_SERIALIZER_PREFIX + FlumeConstants.CONFIG_ROWKEY_TYPE_GENERATOR,DefaultKeyGenerator.UUID.name());
@@ -127,7 +127,7 @@ public class RegexEventSerializerIT extends BaseHBaseManagedTimeIT {
@Test
public void testMissingColumnsInEvent() throws EventDeliveryException, SQLException {
- final String fullTableName = generateRandomString();
+ final String fullTableName = generateUniqueName();
initSinkContextWithDefaults(fullTableName);
sink = new PhoenixSink();
@@ -160,7 +160,7 @@ public class RegexEventSerializerIT extends BaseHBaseManagedTimeIT {
@Test
public void testBatchEvents() throws EventDeliveryException, SQLException {
- final String fullTableName = generateRandomString();
+ final String fullTableName = generateUniqueName();
initSinkContextWithDefaults(fullTableName);
sink = new PhoenixSink();
@@ -205,7 +205,7 @@ public class RegexEventSerializerIT extends BaseHBaseManagedTimeIT {
public void testApacheLogRegex() throws Exception {
sinkContext = new Context ();
- final String fullTableName = generateRandomString();
+ final String fullTableName = generateUniqueName();
final String logRegex = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) \"([^ ]+) ([^ ]+)" +
" ([^\"]+)\" (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\")" +
" ([^ \"]*|\"[^\"]*\"))?";
@@ -280,7 +280,7 @@ public class RegexEventSerializerIT extends BaseHBaseManagedTimeIT {
public void testEventsWithHeaders() throws Exception {
sinkContext = new Context ();
- final String fullTableName = generateRandomString();
+ final String fullTableName = generateUniqueName();
final String ddl = "CREATE TABLE " + fullTableName +
" (rowkey VARCHAR not null, col1 varchar , cf1.col2 varchar , host varchar , source varchar \n" +
" CONSTRAINT pk PRIMARY KEY (rowkey))\n";
[36/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
PHOENIX-3253 Make changes to tests to support method level parallelization
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2f51568a
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2f51568a
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2f51568a
Branch: refs/heads/calcite
Commit: 2f51568a71aed4ac8d8a078d3f10bb5afeedd4c4
Parents: cae4a7c
Author: James Taylor <ja...@apache.org>
Authored: Sun Oct 2 12:47:34 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Sun Oct 2 12:47:34 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/AlterTableIT.java | 49 ----------
.../phoenix/end2end/FlappingAlterTableIT.java | 97 ++++++++++++++++++++
pom.xml | 12 +--
3 files changed, 103 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2f51568a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
index 0125a63..48f4217 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
@@ -1083,30 +1083,6 @@ public class AlterTableIT extends ParallelStatsDisabledIT {
}
@Test
- public void testAddColumnForNewColumnFamily() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String ddl = "CREATE TABLE " + dataTableFullName + " (\n"
- +"ID1 VARCHAR(15) NOT NULL,\n"
- +"ID2 VARCHAR(15) NOT NULL,\n"
- +"CREATED_DATE DATE,\n"
- +"CREATION_TIME BIGINT,\n"
- +"LAST_USED DATE,\n"
- +"CONSTRAINT PK PRIMARY KEY (ID1, ID2)) SALT_BUCKETS = 8";
- Connection conn1 = DriverManager.getConnection(getUrl(), props);
- conn1.createStatement().execute(ddl);
- ddl = "ALTER TABLE " + dataTableFullName + " ADD CF.STRING VARCHAR";
- conn1.createStatement().execute(ddl);
- try (HBaseAdmin admin = conn1.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
- HColumnDescriptor[] columnFamilies = admin.getTableDescriptor(Bytes.toBytes(dataTableFullName)).getColumnFamilies();
- assertEquals(2, columnFamilies.length);
- assertEquals("0", columnFamilies[0].getNameAsString());
- assertEquals(HColumnDescriptor.DEFAULT_TTL, columnFamilies[0].getTimeToLive());
- assertEquals("CF", columnFamilies[1].getNameAsString());
- assertEquals(HColumnDescriptor.DEFAULT_TTL, columnFamilies[1].getTimeToLive());
- }
- }
-
- @Test
public void testSetHColumnProperties() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String ddl = "CREATE TABLE " + dataTableFullName + " (\n"
@@ -1414,31 +1390,6 @@ public class AlterTableIT extends ParallelStatsDisabledIT {
}
}
- @Test
- public void testNewColumnFamilyInheritsTTLOfEmptyCF() throws Exception {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String ddl = "CREATE TABLE " + dataTableFullName + " (\n"
- +"ID1 VARCHAR(15) NOT NULL,\n"
- +"ID2 VARCHAR(15) NOT NULL,\n"
- +"CREATED_DATE DATE,\n"
- +"CREATION_TIME BIGINT,\n"
- +"LAST_USED DATE,\n"
- +"CONSTRAINT PK PRIMARY KEY (ID1, ID2)) SALT_BUCKETS = 8, TTL = 1000";
- Connection conn1 = DriverManager.getConnection(getUrl(), props);
- conn1.createStatement().execute(ddl);
- ddl = "ALTER TABLE " + dataTableFullName + " ADD CF.STRING VARCHAR";
- conn1.createStatement().execute(ddl);
- try (HBaseAdmin admin = conn1.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
- HTableDescriptor tableDesc = admin.getTableDescriptor(Bytes.toBytes(dataTableFullName));
- HColumnDescriptor[] columnFamilies = tableDesc.getColumnFamilies();
- assertEquals(2, columnFamilies.length);
- assertEquals("0", columnFamilies[0].getNameAsString());
- assertEquals(1000, columnFamilies[0].getTimeToLive());
- assertEquals("CF", columnFamilies[1].getNameAsString());
- assertEquals(1000, columnFamilies[1].getTimeToLive());
- }
- }
-
private static void assertImmutableRows(Connection conn, String fullTableName, boolean expectedValue) throws SQLException {
PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
assertEquals(expectedValue, pconn.getTable(new PTableKey(pconn.getTenantId(), fullTableName)).isImmutableRows());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2f51568a/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingAlterTableIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingAlterTableIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingAlterTableIT.java
new file mode 100644
index 0000000..a57088a
--- /dev/null
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingAlterTableIT.java
@@ -0,0 +1,97 @@
+/*
+ * 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;
+
+import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.junit.Assert.assertEquals;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.util.Properties;
+
+import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.phoenix.jdbc.PhoenixConnection;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.SchemaUtil;
+import org.junit.Before;
+import org.junit.Test;
+
+public class FlappingAlterTableIT extends ParallelStatsDisabledIT {
+ private String dataTableFullName;
+
+ @Before
+ public void setupTableNames() throws Exception {
+ String schemaName = "";
+ String dataTableName = generateUniqueName();
+ dataTableFullName = SchemaUtil.getTableName(schemaName, dataTableName);
+ }
+
+ @Test
+ public void testAddColumnForNewColumnFamily() throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String ddl = "CREATE TABLE " + dataTableFullName + " (\n"
+ +"ID1 VARCHAR(15) NOT NULL,\n"
+ +"ID2 VARCHAR(15) NOT NULL,\n"
+ +"CREATED_DATE DATE,\n"
+ +"CREATION_TIME BIGINT,\n"
+ +"LAST_USED DATE,\n"
+ +"CONSTRAINT PK PRIMARY KEY (ID1, ID2)) SALT_BUCKETS = 8";
+ Connection conn1 = DriverManager.getConnection(getUrl(), props);
+ conn1.createStatement().execute(ddl);
+ ddl = "ALTER TABLE " + dataTableFullName + " ADD CF.STRING VARCHAR";
+ conn1.createStatement().execute(ddl);
+ try (HBaseAdmin admin = conn1.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
+ HColumnDescriptor[] columnFamilies = admin.getTableDescriptor(Bytes.toBytes(dataTableFullName)).getColumnFamilies();
+ assertEquals(2, columnFamilies.length);
+ assertEquals("0", columnFamilies[0].getNameAsString());
+ assertEquals(HColumnDescriptor.DEFAULT_TTL, columnFamilies[0].getTimeToLive());
+ assertEquals("CF", columnFamilies[1].getNameAsString());
+ assertEquals(HColumnDescriptor.DEFAULT_TTL, columnFamilies[1].getTimeToLive());
+ }
+ }
+
+ @Test
+ public void testNewColumnFamilyInheritsTTLOfEmptyCF() throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String ddl = "CREATE TABLE " + dataTableFullName + " (\n"
+ +"ID1 VARCHAR(15) NOT NULL,\n"
+ +"ID2 VARCHAR(15) NOT NULL,\n"
+ +"CREATED_DATE DATE,\n"
+ +"CREATION_TIME BIGINT,\n"
+ +"LAST_USED DATE,\n"
+ +"CONSTRAINT PK PRIMARY KEY (ID1, ID2)) SALT_BUCKETS = 8, TTL = 1000";
+ Connection conn1 = DriverManager.getConnection(getUrl(), props);
+ conn1.createStatement().execute(ddl);
+ ddl = "ALTER TABLE " + dataTableFullName + " ADD CF.STRING VARCHAR";
+ conn1.createStatement().execute(ddl);
+ try (HBaseAdmin admin = conn1.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
+ HTableDescriptor tableDesc = admin.getTableDescriptor(Bytes.toBytes(dataTableFullName));
+ HColumnDescriptor[] columnFamilies = tableDesc.getColumnFamilies();
+ assertEquals(2, columnFamilies.length);
+ assertEquals("0", columnFamilies[0].getNameAsString());
+ assertEquals(1000, columnFamilies[0].getTimeToLive());
+ assertEquals("CF", columnFamilies[1].getNameAsString());
+ assertEquals(1000, columnFamilies[1].getTimeToLive());
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2f51568a/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2da2077..5cce42b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -236,7 +236,7 @@
<runOrder>alphabetical</runOrder>
<parallel>methods</parallel>
<threadCount>20</threadCount>
- <argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
+ <argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
@@ -271,7 +271,7 @@
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.doGetTable(MetaDataEndpointImpl.java:2835)
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.getTable(MetaDataEndpointImpl.java:490) -->
<enableAssertions>false</enableAssertions>
- <argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68</argLine>
+ <argLine>-Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
@@ -295,7 +295,7 @@
<forkCount>${numForkedIT}</forkCount>
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
- <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=128m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}"</argLine>
+ <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=128m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.ClientManagedTimeTest</groups>
@@ -319,7 +319,7 @@
<forkCount>${numForkedIT}</forkCount>
<runOrder>alphabetical</runOrder>
<reuseForks>true</reuseForks>
- <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=128m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}"</argLine>
+ <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=128m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.HBaseManagedTimeTest</groups>
@@ -337,7 +337,7 @@
<forkCount>${numForkedIT}</forkCount>
<runOrder>alphabetical</runOrder>
<reuseForks>false</reuseForks>
- <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}"</argLine>
+ <argLine>-enableassertions -Xmx2000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<testSourceDirectory>${basedir}/src/it/java</testSourceDirectory>
<groups>org.apache.phoenix.end2end.NeedsOwnMiniClusterTest</groups>
@@ -453,7 +453,7 @@
<forkCount>${numForkedUT}</forkCount>
<reuseForks>true</reuseForks>
<argLine>-enableassertions -Xmx2250m -XX:MaxPermSize=128m
- -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}"</argLine>
+ -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
</configuration>
[16/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/IsNullIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IsNullIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IsNullIT.java
index fb12fc4..10a5baa 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IsNullIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IsNullIT.java
@@ -33,7 +33,7 @@ import org.junit.Test;
public class IsNullIT extends ParallelStatsDisabledIT {
@Test
public void testIsNullInPk() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
ensureTableCreated(getUrl(), tableName, "IntIntKeyTest");
Connection conn = DriverManager.getConnection(getUrl());
String upsert = "UPSERT INTO " + tableName + " VALUES(4,2)";
@@ -62,7 +62,7 @@ public class IsNullIT extends ParallelStatsDisabledIT {
@Test
public void testIsNullWithLastPKColDesc() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute("CREATE TABLE " + tableName + "(k1 VARCHAR NOT NULL, k2 VARCHAR, k3 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1, k2, k3 DESC))");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES ('a')");
@@ -89,7 +89,7 @@ public class IsNullIT extends ParallelStatsDisabledIT {
@Test
public void testIsNullInCompositeKey() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + tableName + "(k1 VARCHAR, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1,k2))");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES (null,'a')");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES ('a','a')");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
index 7ec37ce..b682c1a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/KeyOnlyIT.java
@@ -45,7 +45,7 @@ public class KeyOnlyIT extends ParallelStatsEnabledIT {
@Before
public void createTable() throws SQLException {
- tableName = generateRandomString();
+ tableName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.createStatement().execute("create table " + tableName +
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/LastValueFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LastValueFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LastValueFunctionIT.java
index e28f510..2a3ebf7 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LastValueFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LastValueFunctionIT.java
@@ -33,7 +33,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void unsignedLong() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " date DATE, \"value\" UNSIGNED_LONG)";
@@ -65,7 +65,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void signedInteger() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG, date INTEGER, \"value\" INTEGER)";
@@ -90,7 +90,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void unsignedInteger() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -115,7 +115,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void simpleTestDescOrder() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -141,7 +141,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void simpleTestAscOrder() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -167,7 +167,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void charDatatype() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG, "
@@ -192,7 +192,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void varcharVariableLenghtDatatype() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -217,7 +217,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void groupMultipleValues() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -254,7 +254,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nullValuesInAggregatingColumns() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -279,7 +279,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void nullValuesInAggregatingColumnsSecond() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -305,7 +305,7 @@ public class LastValueFunctionIT extends ParallelStatsDisabledIT {
@Test
public void inOrderByClausule() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_INT,"
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
index 2d6b2cb..f522817 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
@@ -35,7 +35,7 @@ import org.junit.Test;
public class LikeExpressionIT extends ParallelStatsDisabledIT {
- private static final String TEST_TABLE = generateRandomString();
+ private static final String TEST_TABLE = generateUniqueName();
@BeforeClass
public static void doBeforeTestSetup() throws Exception {
@@ -94,7 +94,7 @@ public class LikeExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testLikeEverythingExpression() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE TABLE " + table
+ " (k1 VARCHAR, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1,k2))";
conn.createStatement().execute(ddl);
@@ -153,7 +153,7 @@ public class LikeExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testLikeWithEscapenLParen() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t = generateRandomString();
+ String t = generateUniqueName();
String ddl = "CREATE TABLE " + t + " (k VARCHAR, v VARCHAR, CONSTRAINT pk PRIMARY KEY (k))";
conn.createStatement().execute(ddl);
conn.createStatement().execute("UPSERT INTO " + t + " VALUES('aa','bb')");
@@ -175,7 +175,7 @@ public class LikeExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testNewLine() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t = generateRandomString();
+ String t = generateUniqueName();
String ddl = "CREATE TABLE " + t + " (k VARCHAR NOT NULL PRIMARY KEY)";
conn.createStatement().execute(ddl);
conn.createStatement().execute("UPSERT INTO " + t + " VALUES('AA\nA')");
@@ -204,7 +204,7 @@ public class LikeExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testOneChar() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String t = generateRandomString();
+ String t = generateUniqueName();
String ddl = "CREATE TABLE " + t + " (k VARCHAR NOT NULL PRIMARY KEY)";
conn.createStatement().execute(ddl);
conn.createStatement().execute("UPSERT INTO " + t + " VALUES('A')");
@@ -227,7 +227,7 @@ public class LikeExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testNull() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String table = generateRandomString();
+ String table = generateUniqueName();
String ddl = "CREATE TABLE " + table
+ " (pk INTEGER PRIMARY KEY, str VARCHAR)";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/LnLogFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LnLogFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LnLogFunctionEnd2EndIT.java
index ad4efbc..ddbe2ad 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LnLogFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LnLogFunctionEnd2EndIT.java
@@ -59,8 +59,8 @@ public class LnLogFunctionEnd2EndIT extends ParallelStatsDisabledIT {
public void initTable() throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
- signedTableName = generateRandomString();
- unsignedTableName = generateRandomString();
+ signedTableName = generateUniqueName();
+ unsignedTableName = generateUniqueName();
try {
conn = DriverManager.getConnection(getUrl());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/MD5FunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MD5FunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MD5FunctionIT.java
index b5fc2e9..1768b10 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MD5FunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MD5FunctionIT.java
@@ -37,7 +37,7 @@ public class MD5FunctionIT extends ParallelStatsDisabledIT {
String testString = "mwalsh";
Connection conn = DriverManager.getConnection(getUrl());
- String md5_retrieve_test = generateRandomString();
+ String md5_retrieve_test = generateUniqueName();
String ddl =
"CREATE TABLE IF NOT EXISTS " + md5_retrieve_test + " (pk VARCHAR NOT NULL PRIMARY KEY)";
conn.createStatement().execute(ddl);
@@ -58,7 +58,7 @@ public class MD5FunctionIT extends ParallelStatsDisabledIT {
String testString = "FOOBAR";
Connection conn = DriverManager.getConnection(getUrl());
- String md5_retrieve_test = generateRandomString();
+ String md5_retrieve_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + md5_retrieve_test
+ " (k1 CHAR(3) NOT NULL, k2 CHAR(3) NOT NULL, CONSTRAINT PK PRIMARY KEY (K1,K2))";
conn.createStatement().execute(ddl);
@@ -81,7 +81,7 @@ public class MD5FunctionIT extends ParallelStatsDisabledIT {
String testString2 = "mwalsh2";
Connection conn = DriverManager.getConnection(getUrl());
- String md5_upsert_test = generateRandomString();
+ String md5_upsert_test = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + md5_upsert_test
+ " (k1 binary(16) NOT NULL,k2 binary(16) NOT NULL CONSTRAINT pk PRIMARY KEY (k1, k2))";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/MapReduceIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MapReduceIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MapReduceIT.java
index 0b42a1f..68d9c9c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MapReduceIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MapReduceIT.java
@@ -64,8 +64,8 @@ public class MapReduceIT extends ParallelStatsDisabledIT {
@Test
public void testNoConditionsOnSelect() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String stockTableName = generateRandomString();
- String stockStatsTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
+ String stockStatsTableName = generateUniqueName();
conn.createStatement().execute(String.format(CREATE_STOCK_TABLE, stockTableName));
conn.createStatement().execute(String.format(CREATE_STOCK_STATS_TABLE, stockStatsTableName));
conn.commit();
@@ -79,8 +79,8 @@ public class MapReduceIT extends ParallelStatsDisabledIT {
@Test
public void testConditionsOnSelect() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String stockTableName = generateRandomString();
- String stockStatsTableName = generateRandomString();
+ String stockTableName = generateUniqueName();
+ String stockStatsTableName = generateUniqueName();
conn.createStatement().execute(String.format(CREATE_STOCK_TABLE, stockTableName));
conn.createStatement().execute(String.format(CREATE_STOCK_STATS_TABLE, stockStatsTableName));
conn.commit();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/MappingTableDataTypeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MappingTableDataTypeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MappingTableDataTypeIT.java
index 4bbbd03..768b005 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MappingTableDataTypeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MappingTableDataTypeIT.java
@@ -52,7 +52,7 @@ import org.junit.Test;
public class MappingTableDataTypeIT extends ParallelStatsDisabledIT {
@Test
public void testMappingHbaseTableToPhoenixTable() throws Exception {
- String mtest = generateRandomString();
+ String mtest = generateUniqueName();
final TableName tableName = TableName.valueOf(mtest);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
PhoenixConnection conn = DriverManager.getConnection(getUrl(), props).unwrap(PhoenixConnection.class);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/MinMaxAggregateFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MinMaxAggregateFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MinMaxAggregateFunctionIT.java
index c2228ff..c2429ab 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MinMaxAggregateFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MinMaxAggregateFunctionIT.java
@@ -25,7 +25,7 @@ import org.junit.Test;
public class MinMaxAggregateFunctionIT extends ParallelStatsDisabledIT {
- private static final String TABLE_NAME = generateRandomString();
+ private static final String TABLE_NAME = generateUniqueName();
@Test
public void testMinMaxAggregateFunctions() throws SQLException {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ModulusExpressionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ModulusExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ModulusExpressionIT.java
index 06ffb16..54cdba6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ModulusExpressionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ModulusExpressionIT.java
@@ -53,7 +53,7 @@ public class ModulusExpressionIT extends ParallelStatsDisabledIT {
private void testDividend(long dividend) throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, dividend, tableName);
for(long divisor : DIVISORS) {
@@ -105,7 +105,7 @@ public class ModulusExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testZeroDivisor() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, 0, tableName);
for(long dividend : DIVIDENDS) {
@@ -132,7 +132,7 @@ public class ModulusExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testNullDividend() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, SMALL_VALUE, tableName);
for(long divisor : DIVISORS) {
@@ -148,7 +148,7 @@ public class ModulusExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testNullDivisor() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, SMALL_VALUE, tableName);
for(long dividend : DIVIDENDS) {
@@ -170,7 +170,7 @@ public class ModulusExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testNullEverything() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
initTable(conn, SMALL_VALUE, tableName);
String sql = "SELECT null % kv FROM " + tableName;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
index 4a0bb01..ed87cb6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MultiCfQueryExecIT.java
@@ -47,7 +47,7 @@ public class MultiCfQueryExecIT extends ParallelStatsEnabledIT {
@Before
public void generateTableNames() throws SQLException {
String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
- String tableName = "T_" + generateRandomString();
+ String tableName = "T_" + generateUniqueName();
fullTableName = SchemaUtil.getTableName(schemaName, tableName);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/NamespaceSchemaMappingIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/NamespaceSchemaMappingIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/NamespaceSchemaMappingIT.java
index d092b08..0dfd550 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/NamespaceSchemaMappingIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/NamespaceSchemaMappingIT.java
@@ -57,7 +57,7 @@ public class NamespaceSchemaMappingIT extends ParallelStatsDisabledIT {
String namespace = "TEST_SCHEMA";
String schemaName = namespace;
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String phoenixFullTableName = schemaName + "." + tableName;
String hbaseFullTableName = schemaName + ":" + tableName;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/NthValueFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/NthValueFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/NthValueFunctionIT.java
index 4538cd0..c5cdf89 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/NthValueFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/NthValueFunctionIT.java
@@ -35,7 +35,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void simpleTest() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nthValue = generateRandomString();
+ String nthValue = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nthValue + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " dates INTEGER, val INTEGER)";
@@ -64,7 +64,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void offsetValueAscOrder() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nth_test_table = generateRandomString();
+ String nth_test_table = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nth_test_table + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
@@ -98,7 +98,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void offsetValueDescOrder() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nth_test_table = generateRandomString();
+ String nth_test_table = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nth_test_table + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " date INTEGER, \"value\" UNSIGNED_LONG)";
@@ -131,7 +131,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void offsetValueLastMismatchByColumn() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nth_test_table = generateRandomString();
+ String nth_test_table = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nth_test_table + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " date INTEGER, \"value\" UNSIGNED_LONG)";
@@ -164,7 +164,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void testSortOrderInDataColWithOffset() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nth_test_table = generateRandomString();
+ String nth_test_table = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nth_test_table + " "
+ "(id INTEGER NOT NULL, page_id UNSIGNED_LONG,"
+ " dates BIGINT NOT NULL, \"value\" BIGINT NOT NULL CONSTRAINT pk PRIMARY KEY (id, dates, \"value\" DESC))";
@@ -195,7 +195,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void nonUniqueValuesInOrderByAsc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nthValue = generateRandomString();
+ String nthValue = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nthValue + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " dates INTEGER, val INTEGER)";
@@ -226,7 +226,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void nonUniqueValuesInOrderByAscSkipDuplicit() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nthValue = generateRandomString();
+ String nthValue = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nthValue + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " dates INTEGER, val INTEGER)";
@@ -257,7 +257,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void nonUniqueValuesInOrderByDesc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nthValue = generateRandomString();
+ String nthValue = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nthValue + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " dates INTEGER, val INTEGER)";
@@ -288,7 +288,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void nonUniqueValuesInOrderNextValueDesc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nthValue = generateRandomString();
+ String nthValue = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nthValue + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " dates INTEGER, val INTEGER)";
@@ -321,7 +321,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void nonUniqueValuesInOrderNextValueAsc() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nthValue = generateRandomString();
+ String nthValue = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nthValue + " "
+ "(id INTEGER NOT NULL PRIMARY KEY, page_id UNSIGNED_LONG,"
+ " dates INTEGER, val INTEGER)";
@@ -354,7 +354,7 @@ public class NthValueFunctionIT extends ParallelStatsDisabledIT {
public void ignoreNullValues() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String nth_test_table = generateRandomString();
+ String nth_test_table = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + nth_test_table + " "
+ "(id INTEGER NOT NULL, page_id UNSIGNED_LONG,"
+ " dates BIGINT NOT NULL, \"value\" BIGINT NULL CONSTRAINT pk PRIMARY KEY (id, dates))";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/OctetLengthFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OctetLengthFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OctetLengthFunctionEnd2EndIT.java
index 0554814..78ebfaa 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OctetLengthFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OctetLengthFunctionEnd2EndIT.java
@@ -36,7 +36,7 @@ import org.junit.Test;
public class OctetLengthFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
- private static final String TABLE_NAME = generateRandomString();
+ private static final String TABLE_NAME = generateUniqueName();
@Before
public void initTable() throws Exception {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java
index 0f6641c..457b38e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java
@@ -123,7 +123,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
conn.setAutoCommit(false);
try {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName +
" (a_string varchar not null, col1 integer" +
" CONSTRAINT pk PRIMARY KEY (a_string))\n";
@@ -190,7 +190,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
conn.setAutoCommit(false);
try {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName +
" (a_string varchar not null, cf1.a integer, cf1.b varchar, col1 integer, cf2.c varchar, cf2.d integer, col2 integer" +
" CONSTRAINT pk PRIMARY KEY (a_string))\n";
@@ -290,7 +290,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
conn.setAutoCommit(false);
try {
- String tableName1 = generateRandomString();
+ String tableName1 = generateUniqueName();
String ddl = "CREATE TABLE " + tableName1 +
" (a_string varchar not null, cf1.a integer, cf1.b varchar, col1 integer, cf2.c varchar, cf2.d integer " +
" CONSTRAINT pk PRIMARY KEY (a_string))\n";
@@ -320,7 +320,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
stmt.execute();
conn.commit();
- String tableName2 = generateRandomString();
+ String tableName2 = generateUniqueName();
ddl = "CREATE TABLE " + tableName2 +
" (a_string varchar not null, col1 integer" +
" CONSTRAINT pk PRIMARY KEY (a_string))\n";
@@ -389,7 +389,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
conn.setAutoCommit(false);
try {
- String tableName1 = generateRandomString();
+ String tableName1 = generateUniqueName();
String ddl = "CREATE TABLE " + tableName1 +
" (a_string varchar not null, cf1.a integer, cf1.b varchar, col1 integer, cf2.c varchar, cf2.d integer " +
" CONSTRAINT pk PRIMARY KEY (a_string))\n";
@@ -419,7 +419,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
stmt.execute();
conn.commit();
- String tableName2 = generateRandomString();
+ String tableName2 = generateUniqueName();
ddl = "CREATE TABLE " + tableName2 +
" (a_string varchar not null, col1 integer" +
" CONSTRAINT pk PRIMARY KEY (a_string))\n";
@@ -471,7 +471,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
conn.setAutoCommit(false);
try {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName +
" (a_string varchar not null, col1 integer, col2 integer, col3 timestamp, col4 varchar" +
" CONSTRAINT pk PRIMARY KEY (a_string))\n";
@@ -519,7 +519,7 @@ public class OrderByIT extends ParallelStatsDisabledIT {
public void testOrderByRVC() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "create table " + tableName + " (testpk varchar not null primary key, l_quantity decimal(15,2), l_discount decimal(15,2))";
conn.createStatement().execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
index dfcf68c..5fc7d9e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelIteratorsIT.java
@@ -70,8 +70,8 @@ public class ParallelIteratorsIT extends ParallelStatsEnabledIT {
@Before
public void generateTableNames() {
- tableName = "T_" + generateRandomString();
- indexName = "I_" + generateRandomString();
+ tableName = "T_" + generateUniqueName();
+ indexName = "I_" + generateUniqueName();
}
private List<KeyRange> getSplits(Connection conn, byte[] lowerRange, byte[] upperRange) throws SQLException {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/PercentileIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PercentileIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PercentileIT.java
index 31423db..af5a905 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PercentileIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PercentileIT.java
@@ -52,6 +52,7 @@ import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.util.DateUtil;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
@@ -406,13 +407,13 @@ public class PercentileIT extends ParallelStatsDisabledIT {
@Test
public void testPercentileContOnDescPKColumn() throws Exception {
- String indexDataTableName = generateRandomString();
+ String indexDataTableName = generateUniqueName();
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTableName;
String query = "SELECT PERCENTILE_CONT(1) WITHIN GROUP (ORDER BY long_pk ASC) FROM " + fullTableName;
Connection conn = DriverManager.getConnection(getUrl());
try {
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
populateINDEX_DATA_TABLETable(indexDataTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -428,12 +429,12 @@ public class PercentileIT extends ParallelStatsDisabledIT {
@Test
public void testPercentRankOnDescPKColumn() throws Exception {
- String indexDataTableName = generateRandomString();
+ String indexDataTableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
try {
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTableName;
String query = "SELECT PERCENT_RANK(2) WITHIN GROUP (ORDER BY long_pk ASC) FROM " + fullTableName;
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
populateINDEX_DATA_TABLETable(indexDataTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -449,13 +450,13 @@ public class PercentileIT extends ParallelStatsDisabledIT {
@Test
public void testPercentileDiscOnDescPKColumn() throws Exception {
- String indexDataTableName = generateRandomString();
+ String indexDataTableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
try {
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTableName;
String query = "SELECT PERCENTILE_DISC(0.4) WITHIN GROUP (ORDER BY long_pk DESC) FROM " + fullTableName;
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
populateINDEX_DATA_TABLETable(indexDataTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@ -508,7 +509,7 @@ public class PercentileIT extends ParallelStatsDisabledIT {
private static String initATableValues(String tenantId1, String tenantId2, byte[][] splits,
Date date, Long ts) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
if (ts == null) {
ensureTableCreated(getUrl(), tableName, ATABLE_NAME, splits);
} else {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/PhoenixRuntimeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PhoenixRuntimeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PhoenixRuntimeIT.java
index 1d48944..cddca04 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PhoenixRuntimeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PhoenixRuntimeIT.java
@@ -95,10 +95,10 @@ public class PhoenixRuntimeIT extends ParallelStatsDisabledIT {
private void testGetTenantIdExpression(boolean isSalted) throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
conn.setAutoCommit(true);
- String tableName = generateRandomString() ;
- String sequenceName = generateRandomString();
- String t1 = generateRandomString();
- String t2 = t1 + generateRandomString(); // ensure bigger
+ String tableName = generateUniqueName() ;
+ String sequenceName = generateUniqueName();
+ String t1 = generateUniqueName();
+ String t2 = t1 + generateUniqueName(); // ensure bigger
conn.createStatement().execute("CREATE TABLE " + tableName + " (k1 VARCHAR NOT NULL, k2 VARCHAR, CONSTRAINT PK PRIMARY KEY(K1,K2)) MULTI_TENANT=true" + (isSalted ? ",SALT_BUCKETS=3" : ""));
conn.createStatement().execute("CREATE SEQUENCE " + sequenceName);
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('" + t1 + "','x')");
@@ -112,7 +112,7 @@ public class PhoenixRuntimeIT extends ParallelStatsDisabledIT {
HTableInterface htable1 = tsconn.unwrap(PhoenixConnection.class).getQueryServices().getTable(PhoenixDatabaseMetaData.SYSTEM_SEQUENCE_NAME_BYTES);
assertTenantIds(e1, htable1, new FirstKeyOnlyFilter(), new String[] {"", t1} );
- String viewName = generateRandomString();
+ String viewName = generateUniqueName();
tsconn.createStatement().execute("CREATE VIEW " + viewName + "(V1 VARCHAR) AS SELECT * FROM " + tableName);
Expression e2 = PhoenixRuntime.getTenantIdExpression(tsconn, PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME);
HTableInterface htable2 = conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME_BYTES);
@@ -122,24 +122,24 @@ public class PhoenixRuntimeIT extends ParallelStatsDisabledIT {
HTableInterface htable3 = conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(Bytes.toBytes(tableName));
assertTenantIds(e3, htable3, new FirstKeyOnlyFilter(), new String[] {t1, t2} );
- String basTableName = generateRandomString();
+ String basTableName = generateUniqueName();
conn.createStatement().execute("CREATE TABLE " + basTableName + " (k1 VARCHAR PRIMARY KEY)");
Expression e4 = PhoenixRuntime.getTenantIdExpression(conn, basTableName);
assertNull(e4);
- String indexName1 = generateRandomString();
+ String indexName1 = generateUniqueName();
tsconn.createStatement().execute("CREATE INDEX " + indexName1 + " ON " + viewName + "(V1)");
Expression e5 = PhoenixRuntime.getTenantIdExpression(tsconn, indexName1);
HTableInterface htable5 = tsconn.unwrap(PhoenixConnection.class).getQueryServices().getTable(Bytes.toBytes(MetaDataUtil.VIEW_INDEX_TABLE_PREFIX + tableName));
assertTenantIds(e5, htable5, new FirstKeyOnlyFilter(), new String[] {t1} );
- String indexName2 = generateRandomString();
+ String indexName2 = generateUniqueName();
conn.createStatement().execute("CREATE INDEX " + indexName2 + " ON " + tableName + "(k2)");
Expression e6 = PhoenixRuntime.getTenantIdExpression(conn, indexName2);
HTableInterface htable6 = conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(Bytes.toBytes(indexName2));
assertTenantIds(e6, htable6, new FirstKeyOnlyFilter(), new String[] {t1, t2} );
- tableName = generateRandomString() + "BAR_" + (isSalted ? "SALTED" : "UNSALTED");
+ tableName = generateUniqueName() + "BAR_" + (isSalted ? "SALTED" : "UNSALTED");
conn.createStatement().execute("CREATE TABLE " + tableName + " (k1 VARCHAR NOT NULL, k2 VARCHAR, CONSTRAINT PK PRIMARY KEY(K1,K2)) " + (isSalted ? "SALT_BUCKETS=3" : ""));
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('" + t1 + "','x')");
conn.createStatement().execute("UPSERT INTO " + tableName + " VALUES('" + t2 + "','y')");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
index 3535ec0..1fb45c7 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
@@ -37,8 +37,8 @@ public class PowerFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
private static final double ZERO = 1e-9;
- private static final String TEST_SIGNED = generateRandomString();
- private static final String TEST_UNSIGNED = generateRandomString();
+ private static final String TEST_SIGNED = generateUniqueName();
+ private static final String TEST_UNSIGNED = generateUniqueName();
private static boolean twoDoubleEquals(double a, double b) {
if (Double.isNaN(a) ^ Double.isNaN(b)) return false;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/PrimitiveTypeIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PrimitiveTypeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PrimitiveTypeIT.java
index 2b66118..6fbedcf 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PrimitiveTypeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PrimitiveTypeIT.java
@@ -48,7 +48,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testCompareLongGTDecimal() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l > 1.5";
@@ -65,7 +65,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testCompareLongGTEDecimal() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l >= 1.5";
@@ -89,7 +89,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testCompareLongLTDecimal() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l < 1.5";
@@ -111,7 +111,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testCompareLongLTEDecimal() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l <= 1.5";
@@ -132,7 +132,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
}
@Test
public void testCompareLongGTDecimal2() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l > 2.5";
@@ -154,7 +154,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testCompareLongGTEDecimal2() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l >= 2.5";
@@ -176,7 +176,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testCompareLongLTDecimal2() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l < 2.5";
@@ -200,7 +200,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testCompareLongLTEDecimal2() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "SELECT l FROM " + tableName + " where l <= 2.5";
@@ -224,7 +224,7 @@ public class PrimitiveTypeIT extends ParallelStatsDisabledIT {
@Test
public void testBooleanAsObject() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl(), PROPS);
initTableValues(conn, tableName);
String query = "upsert into " + tableName + " values (2, ?)";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java
index d87b954..9399900 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java
@@ -72,10 +72,10 @@ public class QueryMoreIT extends ParallelStatsDisabledIT {
}
private void testQueryMore(boolean queryAgainstTenantSpecificView, boolean dataTableSalted) throws Exception {
- String[] tenantIds = new String[] {"T1_" + generateRandomString(), "T2_" + generateRandomString(), "T3_" + generateRandomString()};
+ String[] tenantIds = new String[] {"T1_" + generateUniqueName(), "T2_" + generateUniqueName(), "T3_" + generateUniqueName()};
int numRowsPerTenant = 10;
- String cursorTableName = generateRandomString();
- String base_history_table = generateRandomString();
+ String cursorTableName = generateUniqueName();
+ String base_history_table = generateUniqueName();
this.dataTableName = base_history_table + (dataTableSalted ? "_SALTED" : "");
String cursorTableDDL = "CREATE TABLE IF NOT EXISTS " +
cursorTableName + " (\n" +
@@ -342,7 +342,7 @@ public class QueryMoreIT extends ParallelStatsDisabledIT {
@SuppressWarnings("deprecation")
@Test
public void testNullBigDecimalWithScale() throws Exception {
- final String table = generateRandomString();
+ final String table = generateUniqueName();
final Connection conn = DriverManager.getConnection(getUrl());
conn.setAutoCommit(true);
try (Statement stmt = conn.createStatement()) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
index 6f190b6..c60b403 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
@@ -73,7 +73,7 @@ public class QueryWithOffsetIT extends ParallelStatsDisabledIT {
@Before
public void initTest() {
- tableName = "T_" + generateRandomString();
+ tableName = "T_" + generateUniqueName();
ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" + "k1 INTEGER NOT NULL,\n"
+ "k2 INTEGER NOT NULL,\n" + "C3.k3 INTEGER,\n" + "C2.v1 VARCHAR,\n"
+ "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2)) " + preSplit;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/RTrimFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RTrimFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RTrimFunctionIT.java
index b425476..4a1610a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RTrimFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RTrimFunctionIT.java
@@ -48,7 +48,7 @@ public class RTrimFunctionIT extends ParallelStatsDisabledIT {
private void testWithFixedLengthPK(SortOrder sortOrder, List<Object> expectedResults) throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement().execute(
"CREATE TABLE " + tableName + " ( k VARCHAR PRIMARY KEY " + (sortOrder == SortOrder.DESC ? "DESC" : "") + ")");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReadOnlyIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReadOnlyIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReadOnlyIT.java
index ed3c4f9..2b38b07 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReadOnlyIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReadOnlyIT.java
@@ -39,7 +39,7 @@ public class ReadOnlyIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "CREATE TABLE " + testTable + " " +
" (r varchar not null, col1 integer" +
" CONSTRAINT pk PRIMARY KEY (r))\n";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpReplaceFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpReplaceFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpReplaceFunctionIT.java
index 037d48d..c7f52ff 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpReplaceFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpReplaceFunctionIT.java
@@ -40,7 +40,7 @@ public class RegexpReplaceFunctionIT extends ParallelStatsDisabledIT {
@Before
public void doBeforeTestSetup() throws Exception {
- this.tableName = generateRandomString();
+ this.tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
createGroupByTestTable(conn, tableName);
insertRow(conn, "Report11", 10);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSplitFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSplitFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSplitFunctionIT.java
index f9a0873..289c545 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSplitFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSplitFunctionIT.java
@@ -43,7 +43,7 @@ public class RegexpSplitFunctionIT extends ParallelStatsDisabledIT {
}
private void initTable(Connection conn, String val, String separator) throws SQLException {
- tableName = generateRandomString();
+ tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (" +
"ID INTEGER NOT NULL PRIMARY KEY," +
"VAL VARCHAR," +
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSubstrFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSubstrFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSubstrFunctionIT.java
index 889451e..f2808bd 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSubstrFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RegexpSubstrFunctionIT.java
@@ -40,7 +40,7 @@ public class RegexpSubstrFunctionIT extends ParallelStatsDisabledIT {
@Before
public void doBeforeTestSetup() throws Exception {
- tableName = generateRandomString();
+ tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
createGroupByTestTable(conn, tableName);
insertRow(conn, "Report1?1", 10);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseFunctionIT.java
index d2c89dc..2fedb78 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseFunctionIT.java
@@ -33,7 +33,7 @@ import org.junit.Test;
public class ReverseFunctionIT extends ParallelStatsDisabledIT {
private String initTable(Connection conn, String sortOrder, String s) throws Exception {
- String reverseTest = generateRandomString();
+ String reverseTest = generateUniqueName();
String ddl = "CREATE TABLE " + reverseTest + " (pk VARCHAR NOT NULL PRIMARY KEY " + sortOrder + ", kv VARCHAR)";
conn.createStatement().execute(ddl);
String dml = "UPSERT INTO " + reverseTest + " VALUES(?)";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseScanIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseScanIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseScanIT.java
index 16ccc53..f172d00 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseScanIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ReverseScanIT.java
@@ -153,7 +153,7 @@ public class ReverseScanIT extends ParallelStatsDisabledIT {
ResultSet rs;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
conn = DriverManager.getConnection(getUrl(), props);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.createStatement()
.execute("CREATE TABLE " + tableName + " ( k VARCHAR, c1.a bigint,c2.b bigint CONSTRAINT pk PRIMARY KEY (k)) ");
conn.createStatement().execute("upsert into " + tableName + " values ('a',1,3)");
@@ -171,7 +171,7 @@ public class ReverseScanIT extends ParallelStatsDisabledIT {
@Test
public void testReverseScanIndex() throws Exception {
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
String tenantId = getOrganizationId();
String tableName = initATableValues(tenantId, getSplitsAtRowKeys(tenantId), getUrl());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/RoundFloorCeilFuncIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RoundFloorCeilFuncIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RoundFloorCeilFuncIT.java
index c94cf50..c247bc9 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RoundFloorCeilFuncIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RoundFloorCeilFuncIT.java
@@ -64,7 +64,7 @@ public class RoundFloorCeilFuncIT extends ParallelStatsDisabledIT {
@Before
public void initTable() throws Exception {
- tableName = generateRandomString();
+ tableName = generateUniqueName();
String testString = "abc";
Connection conn = null;
PreparedStatement stmt = null;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
index 0494342..37da39e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
@@ -38,7 +38,7 @@ import org.junit.Test;
import com.google.common.collect.Maps;
public class SerialIteratorsIT extends ParallelStatsDisabledIT {
- private String tableName = generateRandomString();
+ private String tableName = generateUniqueName();
private final String[] strings = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
private final String ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" + "k1 INTEGER NOT NULL,\n"
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ServerExceptionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ServerExceptionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ServerExceptionIT.java
index bf2e933..0bf5f18 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ServerExceptionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ServerExceptionIT.java
@@ -40,7 +40,7 @@ public class ServerExceptionIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
- String t1 = generateRandomString();
+ String t1 = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + t1 + "(pk VARCHAR NOT NULL PRIMARY KEY, " +
"col1 INTEGER, col2 INTEGER)";
createTestTable(getUrl(), ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
index 3cc8041..34ccdde 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
@@ -39,8 +39,8 @@ import org.junit.Test;
public class SignFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
- private static final String TEST_SIGNED = generateRandomString();
- private static final String TEST_UNSIGNED = generateRandomString();
+ private static final String TEST_SIGNED = generateUniqueName();
+ private static final String TEST_UNSIGNED = generateUniqueName();
@BeforeClass
public static void initTable() throws Exception {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
index d4dd088..efb662b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
@@ -106,7 +106,7 @@ public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
@Test
public void testManualSplit() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
byte[] tableNameBytes = Bytes.toBytes(tableName);
initTable(tableName);
Connection conn = DriverManager.getConnection(getUrl());
@@ -281,7 +281,7 @@ public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
@Test
public void testSkipScanInListOfRVCAfterManualSplit() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " ( "
+ "organization_id CHAR(15) NOT NULL, "
+ "parent_id CHAR(15) NOT NULL, "
@@ -350,7 +350,7 @@ public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
@Test
public void testMinMaxRangeIntersection() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
PreparedStatement stmt = conn.prepareStatement("create table " + tableName
+ "(pk1 UNSIGNED_TINYINT NOT NULL, pk2 UNSIGNED_TINYINT NOT NULL, kv VARCHAR "
+ "CONSTRAINT pk PRIMARY KEY (pk1, pk2)) SALT_BUCKETS=4 SPLIT ON (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanQueryIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanQueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanQueryIT.java
index 17df5ba..0c5e3aa 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanQueryIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanQueryIT.java
@@ -44,7 +44,7 @@ import org.junit.Test;
public class SkipScanQueryIT extends ParallelStatsDisabledIT {
private String initIntInTable(Connection conn, List<Integer> data) throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " (" +
" i INTEGER NOT NULL PRIMARY KEY)";
conn.createStatement().executeUpdate(ddl);
@@ -61,7 +61,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
}
private String initVarCharCrossProductInTable(Connection conn, List<String> c1, List<String> c2) throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " (" +
" s1 VARCHAR, s2 VARCHAR CONSTRAINT pk PRIMARY KEY (s1,s2))";
conn.createStatement().executeUpdate(ddl);
@@ -81,7 +81,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
}
private String initVarCharParallelListInTable(Connection conn, List<String> c1, List<String> c2) throws SQLException {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "CREATE TABLE IF NOT EXISTS " + tableName + " (" +
" s1 VARCHAR, s2 VARCHAR CONSTRAINT pk PRIMARY KEY (s1,s2))";
conn.createStatement().executeUpdate(ddl);
@@ -102,7 +102,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
"upsert into %s(c1, c2, c3, c4, v1, v2) values('1001', '91', 's1', '2013-09-26', 28397, 23541);\n" +
"upsert into %s(c1, c2, c3, c4, v1, v2) values('1001', '91', 's2', '2013-09-23', 3369, null);\n";
private String initSelectAfterUpsertTable(Connection conn) throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String ddl = "create table if not exists " + tableName + " ("
+ "c1 VARCHAR NOT NULL," + "c2 VARCHAR NOT NULL,"
+ "c3 VARCHAR NOT NULL," + "c4 VARCHAR NOT NULL,"
@@ -120,7 +120,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
@Test
public void testSkipScanFilterQuery() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String createTableDDL = "CREATE TABLE " + tableName + "(col1 VARCHAR," + "col2 VARCHAR," + "col3 VARCHAR,"
+ "col4 VARCHAR," + "CONSTRAINT pk " + "PRIMARY KEY (col1,col2,col3,col4))";
String upsertQuery = "upsert into " + tableName + " values(?,?,?,?)";
@@ -254,7 +254,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
@Test
public void testPreSplitCompositeFixedKey() throws Exception {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
try {
conn.createStatement().execute("create table " + tableName + "(key_1 char(3) not null, key_2 char(4) not null, v varchar(8) CONSTRAINT pk PRIMARY KEY (key_1,key_2)) split on('000','100','200')");
@@ -284,7 +284,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
@Test
public void testInWithDescKey() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
try {
conn.createStatement().execute("create table " + tableName + "(key_1 char(3) not null, key_2 char(4) not null, v varchar(8) CONSTRAINT pk PRIMARY KEY (key_1,key_2 desc))");
conn.setAutoCommit(true);
@@ -324,7 +324,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
@Test
public void testSkipScanIntersectionAtEnd() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
PreparedStatement stmt = conn.prepareStatement("create table " + tableName
+ "(pk1 UNSIGNED_TINYINT NOT NULL, pk2 UNSIGNED_TINYINT NOT NULL, pk3 UNSIGNED_TINYINT NOT NULL, kv VARCHAR "
+ "CONSTRAINT pk PRIMARY KEY (pk1, pk2, pk3)) SPLIT ON (?, ?, ?)");
@@ -350,7 +350,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try {
TestUtil.createMultiCFTestTable(conn , fullTableName, null);
@@ -432,7 +432,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
@Test
public void testOrPKWithAndNonPK() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
try {
conn.createStatement().execute("create table " + tableName + "(ID varchar primary key,company varchar)");
conn.setAutoCommit(true);
@@ -453,7 +453,7 @@ public class SkipScanQueryIT extends ParallelStatsDisabledIT {
@Test
public void testNullInfiniteLoop() throws Exception {
try (Connection conn = DriverManager.getConnection(getUrl())) {
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
conn.setAutoCommit(true);
conn.createStatement().execute(
"create table " + tableName +
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index 9570021..df18093 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -53,8 +53,8 @@ public class SortMergeJoinMoreIT extends ParallelStatsDisabledIT {
@Test
public void testJoinOverSaltedTables() throws Exception {
- String tempTableNoSalting = "TEMP_TABLE_NO_SALTING" + generateRandomString();
- String tempTableWithSalting = "TEMP_TABLE_WITH_SALTING" + generateRandomString();
+ String tempTableNoSalting = "TEMP_TABLE_NO_SALTING" + generateUniqueName();
+ String tempTableWithSalting = "TEMP_TABLE_WITH_SALTING" + generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -191,8 +191,8 @@ public class SortMergeJoinMoreIT extends ParallelStatsDisabledIT {
@Test
public void testJoinOnDynamicColumns() throws Exception {
- String tableA = generateRandomString();
- String tableB = generateRandomString();
+ String tableA = generateUniqueName();
+ String tableB = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = null;
PreparedStatement stmt = null;
@@ -221,7 +221,7 @@ public class SortMergeJoinMoreIT extends ParallelStatsDisabledIT {
}
conn.commit();
stmt.close();
- String seqBName = generateRandomString();
+ String seqBName = generateUniqueName();
// upsert select dynamic columns in tableB
conn.createStatement().execute("CREATE SEQUENCE " + seqBName);
@@ -264,9 +264,9 @@ public class SortMergeJoinMoreIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String gTableName = generateRandomString();
- String lTableName = generateRandomString();
- String slTableName = generateRandomString();
+ String gTableName = generateUniqueName();
+ String lTableName = generateUniqueName();
+ String slTableName = generateUniqueName();
try {
@@ -323,7 +323,7 @@ public class SortMergeJoinMoreIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
- String eventCountTableName = generateRandomString();
+ String eventCountTableName = generateUniqueName();
try {
conn.createStatement().execute(
"CREATE TABLE IF NOT EXISTS " + eventCountTableName + " (\n" +
@@ -384,7 +384,7 @@ public class SortMergeJoinMoreIT extends ParallelStatsDisabledIT {
// We'll test the original version of the user table as well as a slightly modified
// version, in order to verify that sort-merge join works for columns both having
// DESC sort order as well as one having ASC order and the other having DESC order.
- String[] t = new String[] {"EVENT_LATENCY" + generateRandomString(), "EVENT_LATENCY_2" + generateRandomString()};
+ String[] t = new String[] {"EVENT_LATENCY" + generateUniqueName(), "EVENT_LATENCY_2" + generateUniqueName()};
for (int i = 0; i < 2; i++) {
conn.createStatement().execute(
"CREATE TABLE IF NOT EXISTS " + t[i] + " (\n" +
[19/48] phoenix git commit: PHOENIX-3327 Use same driver for all
tests within a group
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServicesOptions.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServicesOptions.java b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServicesOptions.java
index 9b87361..ef3ac39 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServicesOptions.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServicesOptions.java
@@ -37,6 +37,7 @@ import static org.apache.phoenix.query.QueryServices.GLOBAL_METRICS_ENABLED;
import static org.apache.phoenix.query.QueryServices.GROUPBY_MAX_CACHE_SIZE_ATTRIB;
import static org.apache.phoenix.query.QueryServices.GROUPBY_SPILLABLE_ATTRIB;
import static org.apache.phoenix.query.QueryServices.GROUPBY_SPILL_FILES_ATTRIB;
+import static org.apache.phoenix.query.QueryServices.HBASE_CLIENT_SCANNER_TIMEOUT_ATTRIB;
import static org.apache.phoenix.query.QueryServices.IMMUTABLE_ROWS_ATTRIB;
import static org.apache.phoenix.query.QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB;
import static org.apache.phoenix.query.QueryServices.INDEX_POPULATION_SLEEP_TIME;
@@ -59,7 +60,6 @@ import static org.apache.phoenix.query.QueryServices.MUTATE_BATCH_SIZE_ATTRIB;
import static org.apache.phoenix.query.QueryServices.NUM_RETRIES_FOR_SCHEMA_UPDATE_CHECK;
import static org.apache.phoenix.query.QueryServices.QUEUE_SIZE_ATTRIB;
import static org.apache.phoenix.query.QueryServices.REGIONSERVER_INFO_PORT_ATTRIB;
-import static org.apache.phoenix.query.QueryServices.HBASE_CLIENT_SCANNER_TIMEOUT_ATTRIB;
import static org.apache.phoenix.query.QueryServices.RENEW_LEASE_ENABLED;
import static org.apache.phoenix.query.QueryServices.RENEW_LEASE_THREAD_POOL_SIZE;
import static org.apache.phoenix.query.QueryServices.RENEW_LEASE_THRESHOLD_MILLISECONDS;
@@ -78,6 +78,7 @@ import static org.apache.phoenix.query.QueryServices.STATS_UPDATE_FREQ_MS_ATTRIB
import static org.apache.phoenix.query.QueryServices.STATS_USE_CURRENT_TIME_ATTRIB;
import static org.apache.phoenix.query.QueryServices.THREAD_POOL_SIZE_ATTRIB;
import static org.apache.phoenix.query.QueryServices.THREAD_TIMEOUT_MS_ATTRIB;
+import static org.apache.phoenix.query.QueryServices.TRANSACTIONS_ENABLED;
import static org.apache.phoenix.query.QueryServices.USE_BYTE_BASED_REGEX_ATTRIB;
import static org.apache.phoenix.query.QueryServices.USE_INDEXES_ATTRIB;
@@ -598,6 +599,11 @@ public class QueryServicesOptions {
return this;
}
+ public QueryServicesOptions setTransactionsEnabled(boolean transactionsEnabled) {
+ config.setBoolean(TRANSACTIONS_ENABLED, transactionsEnabled);
+ return this;
+ }
+
public QueryServicesOptions setExplainRowCount(boolean showRowCount) {
config.setBoolean(EXPLAIN_ROW_COUNT_ATTRIB, showRowCount);
return this;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
index bab52a4..58fb151 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
@@ -382,7 +382,7 @@ public final class QueryUtil {
HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);
String url = getUrl(server, port, znodeParent, principal);
// Mainly for testing to tack on the test=true part to ensure driver is found on server
- String extraArgs = conf.get(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, QueryServicesOptions.DEFAULT_EXTRA_JDBC_ARGUMENTS);
+ String extraArgs = props.getProperty(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, conf.get(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, QueryServicesOptions.DEFAULT_EXTRA_JDBC_ARGUMENTS));
if (extraArgs.length() > 0) {
url += extraArgs + PhoenixRuntime.JDBC_PROTOCOL_TERMINATOR;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/test/java/org/apache/phoenix/jdbc/PhoenixDriverTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/jdbc/PhoenixDriverTest.java b/phoenix-core/src/test/java/org/apache/phoenix/jdbc/PhoenixDriverTest.java
index fde70d0..4ab75a9 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/jdbc/PhoenixDriverTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/jdbc/PhoenixDriverTest.java
@@ -34,6 +34,7 @@ import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.TestUtil;
+import org.junit.Ignore;
import org.junit.Test;
public class PhoenixDriverTest extends BaseConnectionlessQueryTest {
@@ -89,6 +90,7 @@ public class PhoenixDriverTest extends BaseConnectionlessQueryTest {
}
}
+ @Ignore
@Test
public void testDisallowIsolationLevel() throws SQLException {
Connection conn = DriverManager.getConnection(getUrl());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 7008911..3de0b77 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -536,9 +536,7 @@ public abstract class BaseTest {
}
private static void checkTxManagerInitialized(ReadOnlyProps clientProps) throws SQLException, IOException {
- if (txService == null
- && clientProps.getBoolean(QueryServices.TRANSACTIONS_ENABLED,
- QueryServicesOptions.DEFAULT_TRANSACTIONS_ENABLED)) {
+ if (txService == null) {
setupTxManager();
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java b/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java
index f2b1519..d1d50d5 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java
@@ -63,6 +63,7 @@ public final class QueryServicesTestImpl extends BaseQueryServicesImpl {
public static final int DEFAULT_HCONNECTION_POOL_MAX_SIZE = 10;
public static final int DEFAULT_HTABLE_MAX_THREADS = 10;
public static final long DEFAULT_INDEX_POPULATION_WAIT_TIME = 0;
+ public static final boolean DEFAULT_TRANSACTIONS_ENABLED = true;
/**
@@ -79,6 +80,7 @@ public final class QueryServicesTestImpl extends BaseQueryServicesImpl {
private static QueryServicesOptions getDefaultServicesOptions() {
return withDefaults()
+ .setTransactionsEnabled(DEFAULT_TRANSACTIONS_ENABLED)
.setExplainChunkCount(DEFAULT_EXPLAIN_CHUNK_COUNT)
.setExplainRowCount(DEFAULT_EXPLAIN_ROW_COUNT)
.setSequenceSaltBuckets(DEFAULT_SEQUENCE_TABLE_SALT_BUCKETS)
[08/48] phoenix git commit: PHOENIX-2930 Cannot resolve columns
aliased to its own name
Posted by ma...@apache.org.
PHOENIX-2930 Cannot resolve columns aliased to its own name
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2aa2d1f5
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2aa2d1f5
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2aa2d1f5
Branch: refs/heads/calcite
Commit: 2aa2d1f5b6cc3c2e71e73982bea58380f24d3f87
Parents: d4f7201
Author: maryannxue <ma...@gmail.com>
Authored: Wed Sep 21 17:43:07 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Wed Sep 21 17:43:07 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/GroupByCaseIT.java | 36 ++++++++++++++++++++
.../apache/phoenix/parse/ParseNodeRewriter.java | 16 +++++++--
2 files changed, 49 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2aa2d1f5/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
index 4830a75..0acfe02 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java
@@ -31,6 +31,7 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
+import org.apache.phoenix.schema.AmbiguousColumnException;
import org.apache.phoenix.schema.types.PChar;
import org.apache.phoenix.schema.types.PInteger;
import org.apache.phoenix.util.ByteUtil;
@@ -445,4 +446,39 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT {
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [K1]", QueryUtil.getExplainPlan(rs));
}
+
+ @Test
+ public void testGroupByWithAliasWithSameColumnName() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ String ddl = "create table test3 (pk integer primary key, col integer)";
+ conn.createStatement().execute(ddl);
+ ddl = "create table test4 (pk integer primary key, col integer)";
+ conn.createStatement().execute(ddl);
+ ddl = "create table test5 (notPk integer primary key, col integer)";
+ conn.createStatement().execute(ddl);
+ conn.createStatement().execute("UPSERT INTO test3 VALUES (1,2)");
+ conn.createStatement().execute("UPSERT INTO test4 VALUES (1,2)");
+ conn.createStatement().execute("UPSERT INTO test5 VALUES (1,2)");
+ conn.createStatement().executeQuery("select test3.pk as pk from test3 group by pk");
+ conn.createStatement().executeQuery("select test3.pk as pk from test3 group by test3.pk");
+ conn.createStatement().executeQuery("select test3.pk as pk from test3 as t group by t.pk");
+ conn.createStatement().executeQuery("select test3.col as pk from test3");
+ conn.createStatement()
+ .executeQuery("select test3.pk as pk from test3 join test5 on (test3.pk=test5.notPk) group by pk");
+ try {
+ conn.createStatement().executeQuery("select test3.col as pk from test3 group by pk");
+ fail();
+ } catch (AmbiguousColumnException e) {}
+ try {
+ conn.createStatement().executeQuery("select col as pk from test3 group by pk");
+ fail();
+ } catch (AmbiguousColumnException e) {}
+ try {
+ conn.createStatement()
+ .executeQuery("select test3.pk as pk from test3 join test4 on (test3.pk=test4.pk) group by pk");
+ fail();
+ } catch (AmbiguousColumnException e) {}
+ conn.close();
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2aa2d1f5/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeRewriter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeRewriter.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeRewriter.java
index 12ef2e1..7a31110 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeRewriter.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeRewriter.java
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.phoenix.compile.ColumnResolver;
import org.apache.phoenix.schema.AmbiguousColumnException;
import org.apache.phoenix.schema.ColumnNotFoundException;
+import org.apache.phoenix.schema.ColumnRef;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -400,14 +401,23 @@ public class ParseNodeRewriter extends TraverseAllParseNodeVisitor<ParseNode> {
ParseNode aliasedNode = aliasMap.get(node.getName());
// If we found something, then try to resolve it unless the two nodes are the same
if (aliasedNode != null && !node.equals(aliasedNode)) {
+ ColumnRef ref;
try {
- // If we're able to resolve it, that means we have a conflict
- resolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName());
- throw new AmbiguousColumnException(node.getName());
+ ref = resolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName());
} catch (ColumnNotFoundException e) {
// Not able to resolve alias as a column name as well, so we use the alias
return aliasedNode;
}
+ // We have resolved it to a column, so now check if the aliased node can be resolved as the same column
+ if (aliasedNode instanceof ColumnParseNode) {
+ ColumnParseNode aliasedColumnNode = (ColumnParseNode) aliasedNode;
+ ColumnRef aliasedRef = resolver.resolveColumn(aliasedColumnNode.getSchemaName(), aliasedColumnNode.getTableName(), aliasedColumnNode.getName());
+ if (aliasedRef.equals(ref)) {
+ return aliasedNode;
+ }
+ }
+ // Otherwise it means we have a conflict
+ throw new AmbiguousColumnException(node.getName());
}
}
return node;
[32/48] phoenix git commit: PHOENIX-3221 'LOCAL' keyword is not
adhered for 'phoenix.query.dateFormatTimeZone'
Posted by ma...@apache.org.
PHOENIX-3221 'LOCAL' keyword is not adhered for 'phoenix.query.dateFormatTimeZone'
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/15a2f9a6
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/15a2f9a6
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/15a2f9a6
Branch: refs/heads/calcite
Commit: 15a2f9a625dc9a76fd07cae82e81d8ec1d79d622
Parents: 6f9cca4
Author: Ankit Singhal <an...@gmail.com>
Authored: Thu Sep 29 15:30:20 2016 +0530
Committer: Ankit Singhal <an...@gmail.com>
Committed: Thu Sep 29 15:30:20 2016 +0530
----------------------------------------------------------------------
.../src/main/java/org/apache/phoenix/compile/StatementContext.java | 2 +-
phoenix-core/src/main/java/org/apache/phoenix/util/DateUtil.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/15a2f9a6/phoenix-core/src/main/java/org/apache/phoenix/compile/StatementContext.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/StatementContext.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/StatementContext.java
index 8ced589..ae07a9a 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/StatementContext.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/StatementContext.java
@@ -123,7 +123,7 @@ public class StatementContext {
this.timeFormatter = DateUtil.getTimeFormatter(timeFormat);
this.timestampFormat = props.get(QueryServices.TIMESTAMP_FORMAT_ATTRIB, DateUtil.DEFAULT_TIMESTAMP_FORMAT);
this.timestampFormatter = DateUtil.getTimestampFormatter(timestampFormat);
- this.dateFormatTimeZone = TimeZone.getTimeZone(props.get(QueryServices.DATE_FORMAT_TIMEZONE_ATTRIB,
+ this.dateFormatTimeZone = DateUtil.getTimeZone(props.get(QueryServices.DATE_FORMAT_TIMEZONE_ATTRIB,
DateUtil.DEFAULT_TIME_ZONE_ID));
this.numberFormat = props.get(QueryServices.NUMBER_FORMAT_ATTRIB, NumberUtil.DEFAULT_NUMBER_FORMAT);
this.tempPtr = new ImmutableBytesWritable();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/15a2f9a6/phoenix-core/src/main/java/org/apache/phoenix/util/DateUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/DateUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/DateUtil.java
index 7f62797..9e37eca 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/DateUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/DateUtil.java
@@ -95,7 +95,7 @@ public class DateUtil {
}
}
- private static TimeZone getTimeZone(String timeZoneId) {
+ public static TimeZone getTimeZone(String timeZoneId) {
TimeZone parserTimeZone;
if (timeZoneId == null) {
parserTimeZone = DateUtil.DEFAULT_TIME_ZONE;
[41/48] phoenix git commit: Fix merge conflicts
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java
index 0000000,f1c1808..1b3731c
mode 000000,100644..100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseJoinIT.java
@@@ -1,0 -1,456 +1,456 @@@
+ /*
+ * 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;
+
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertTrue;
+
+ import java.sql.Connection;
+ import java.sql.Date;
+ import java.sql.DriverManager;
+ import java.sql.PreparedStatement;
+ import java.sql.SQLException;
+ import java.sql.Timestamp;
+ import java.text.SimpleDateFormat;
+ import java.util.Map;
+ import java.util.regex.Pattern;
+
+ import org.apache.phoenix.util.SchemaUtil;
+ import org.apache.phoenix.util.StringUtil;
+ import org.junit.Before;
+
+ import com.google.common.collect.ImmutableMap;
+ import com.google.common.collect.Maps;
+
+ public abstract class BaseJoinIT extends ParallelStatsDisabledIT {
- protected static final String JOIN_SCHEMA = "Join";
- protected static final String JOIN_ORDER_TABLE = "OrderTable";
- protected static final String JOIN_CUSTOMER_TABLE = "CustomerTable";
- protected static final String JOIN_ITEM_TABLE = "ItemTable";
- protected static final String JOIN_SUPPLIER_TABLE = "SupplierTable";
- protected static final String JOIN_COITEM_TABLE = "CoitemTable";
- protected static final String JOIN_ORDER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_ORDER_TABLE + '"';
- protected static final String JOIN_CUSTOMER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_CUSTOMER_TABLE + '"';
- protected static final String JOIN_ITEM_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_ITEM_TABLE + '"';
- protected static final String JOIN_SUPPLIER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_SUPPLIER_TABLE + '"';
- protected static final String JOIN_COITEM_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_COITEM_TABLE + '"';
++ public static final String JOIN_SCHEMA = "Join";
++ public static final String JOIN_ORDER_TABLE = "OrderTable";
++ public static final String JOIN_CUSTOMER_TABLE = "CustomerTable";
++ public static final String JOIN_ITEM_TABLE = "ItemTable";
++ public static final String JOIN_SUPPLIER_TABLE = "SupplierTable";
++ public static final String JOIN_COITEM_TABLE = "CoitemTable";
++ public static final String JOIN_ORDER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_ORDER_TABLE + '"';
++ public static final String JOIN_CUSTOMER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_CUSTOMER_TABLE + '"';
++ public static final String JOIN_ITEM_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_ITEM_TABLE + '"';
++ public static final String JOIN_SUPPLIER_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_SUPPLIER_TABLE + '"';
++ public static final String JOIN_COITEM_TABLE_FULL_NAME = '"' + JOIN_SCHEMA + "\".\"" + JOIN_COITEM_TABLE + '"';
+
+ private static final Map<String,String> tableDDLMap;
+
+ static {
+ ImmutableMap.Builder<String,String> builder = ImmutableMap.builder();
+ builder.put(JOIN_ORDER_TABLE_FULL_NAME, "create table " + JOIN_ORDER_TABLE_FULL_NAME +
+ " (\"order_id\" varchar(15) not null primary key, " +
+ " \"customer_id\" varchar(10), " +
+ " \"item_id\" varchar(10), " +
+ " price integer, " +
+ " quantity integer, " +
- " date timestamp)");
++ " \"DATE\" timestamp)");
+ builder.put(JOIN_CUSTOMER_TABLE_FULL_NAME, "create table " + JOIN_CUSTOMER_TABLE_FULL_NAME +
+ " (\"customer_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " phone varchar(12), " +
+ " address varchar, " +
+ " loc_id varchar(5), " +
- " date date)");
++ " \"DATE\" date)");
+ builder.put(JOIN_ITEM_TABLE_FULL_NAME, "create table " + JOIN_ITEM_TABLE_FULL_NAME +
+ " (\"item_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " price integer, " +
+ " discount1 integer, " +
+ " discount2 integer, " +
+ " \"supplier_id\" varchar(10), " +
+ " description varchar)");
+ builder.put(JOIN_SUPPLIER_TABLE_FULL_NAME, "create table " + JOIN_SUPPLIER_TABLE_FULL_NAME +
+ " (\"supplier_id\" varchar(10) not null primary key, " +
+ " name varchar, " +
+ " phone varchar(12), " +
+ " address varchar, " +
+ " loc_id varchar(5))");
+ builder.put(JOIN_COITEM_TABLE_FULL_NAME, "create table " + JOIN_COITEM_TABLE_FULL_NAME +
+ " (item_id varchar(10) NOT NULL, " +
+ " item_name varchar NOT NULL, " +
+ " co_item_id varchar(10), " +
+ " co_item_name varchar " +
+ " CONSTRAINT pk PRIMARY KEY (item_id, item_name)) " +
+ " SALT_BUCKETS=4");
+ tableDDLMap = builder.build();
+ }
+
+ protected String seqName;
+ protected String schemaName;
+ protected final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ protected final String[] plans;
+ private final String[] indexDDL;
+ private final Map<String,String> virtualNameToRealNameMap = Maps.newHashMap();
+
+ public BaseJoinIT(String[] indexDDL, String[] plans) {
+ this.indexDDL = indexDDL;
+ this.plans = plans;
+ }
+
+ protected String getTableName(Connection conn, String virtualName) throws Exception {
+ String realName = virtualNameToRealNameMap.get(virtualName);
+ if (realName == null) {
+ realName = SchemaUtil.getTableName(schemaName, generateUniqueName());
+ virtualNameToRealNameMap.put(virtualName, realName);
+ createTable(conn, virtualName, realName);
+ initValues(conn, virtualName, realName);
+ createIndexes(conn, virtualName, realName);
+ }
+ return realName;
+ }
+
- protected String getDisplayTableName(Connection conn, String virtualName) throws Exception {
++ public String getDisplayTableName(Connection conn, String virtualName) throws Exception {
+ return getTableName(conn, virtualName);
+ }
+
- private void createTable(Connection conn, String virtualName, String realName) throws SQLException {
++ public static void createTable(Connection conn, String virtualName, String realName) throws SQLException {
+ String ddl = tableDDLMap.get(virtualName);
+ if (ddl == null) {
+ throw new IllegalStateException("Expected to find " + virtualName + " in " + tableDDLMap);
+ }
+ ddl = ddl.replace(virtualName, realName);
+ conn.createStatement().execute(ddl);
+ }
+
+ @Before
+ public void createSchema() throws SQLException {
+ Connection conn = DriverManager.getConnection(getUrl());
+ try {
+ schemaName = "S_" + generateUniqueName();
+ seqName = "SEQ_" + generateUniqueName();
+ conn.createStatement().execute("CREATE SEQUENCE " + seqName);
+ } finally {
+ conn.close();
+ }
+ }
+
+ private String translateToVirtualPlan(String actualPlan) {
+ int size = virtualNameToRealNameMap.size();
+ String[] virtualNames = new String[size+1];
+ String[] realNames = new String[size+1];
+ int count = 0;
+ for (Map.Entry<String, String>entry : virtualNameToRealNameMap.entrySet()) {
+ virtualNames[count] = entry.getKey();
+ realNames[count] = entry.getValue();
+ count++;
+ }
+ realNames[count] = schemaName;
+ virtualNames[count]= JOIN_SCHEMA;
+ String convertedPlan = StringUtil.replace(actualPlan, realNames, virtualNames);
+ return convertedPlan;
+ }
+
+ protected void assertPlansMatch(String virtualPlanRegEx, String actualPlan) {
+ String convertedPlan = translateToVirtualPlan(actualPlan);
+ assertTrue("\"" + convertedPlan + "\" does not match \"" + virtualPlanRegEx + "\"", Pattern.matches(virtualPlanRegEx, convertedPlan));
+ }
+
+ protected void assertPlansEqual(String virtualPlan, String actualPlan) {
+ String convertedPlan = translateToVirtualPlan(actualPlan);
+ assertEquals(virtualPlan, convertedPlan);
+ }
+
- private static void initValues(Connection conn, String virtualName, String realName) throws Exception {
++ public static void initValues(Connection conn, String virtualName, String realName) throws Exception {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ if (virtualName.equals(JOIN_CUSTOMER_TABLE_FULL_NAME)) {
+ // Insert into customer table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"customer_id\", " +
+ " NAME, " +
+ " PHONE, " +
+ " ADDRESS, " +
+ " LOC_ID, " +
- " DATE) " +
++ " \"DATE\") " +
+ "values (?, ?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "C1");
+ stmt.setString(3, "999-999-1111");
+ stmt.setString(4, "101 XXX Street");
+ stmt.setString(5, "10001");
+ stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "C2");
+ stmt.setString(3, "999-999-2222");
+ stmt.setString(4, "202 XXX Street");
+ stmt.setString(5, null);
+ stmt.setDate(6, new Date(format.parse("2013-11-25 16:45:07").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "C3");
+ stmt.setString(3, "999-999-3333");
+ stmt.setString(4, "303 XXX Street");
+ stmt.setString(5, null);
+ stmt.setDate(6, new Date(format.parse("2013-11-25 10:06:29").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "C4");
+ stmt.setString(3, "999-999-4444");
+ stmt.setString(4, "404 XXX Street");
+ stmt.setString(5, "10004");
+ stmt.setDate(6, new Date(format.parse("2013-11-22 14:22:56").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "C5");
+ stmt.setString(3, "999-999-5555");
+ stmt.setString(4, "505 XXX Street");
+ stmt.setString(5, "10005");
+ stmt.setDate(6, new Date(format.parse("2013-11-27 09:37:50").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "C6");
+ stmt.setString(3, "999-999-6666");
+ stmt.setString(4, "606 XXX Street");
+ stmt.setString(5, "10001");
+ stmt.setDate(6, new Date(format.parse("2013-11-01 10:20:36").getTime()));
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_ITEM_TABLE_FULL_NAME)) {
+
+ // Insert into item table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"item_id\", " +
+ " NAME, " +
+ " PRICE, " +
+ " DISCOUNT1, " +
+ " DISCOUNT2, " +
+ " \"supplier_id\", " +
+ " DESCRIPTION) " +
+ "values (?, ?, ?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "T1");
+ stmt.setInt(3, 100);
+ stmt.setInt(4, 5);
+ stmt.setInt(5, 10);
+ stmt.setString(6, "0000000001");
+ stmt.setString(7, "Item T1");
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "T2");
+ stmt.setInt(3, 200);
+ stmt.setInt(4, 5);
+ stmt.setInt(5, 8);
+ stmt.setString(6, "0000000001");
+ stmt.setString(7, "Item T2");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "T3");
+ stmt.setInt(3, 300);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 12);
+ stmt.setString(6, "0000000002");
+ stmt.setString(7, "Item T3");
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "T4");
+ stmt.setInt(3, 400);
+ stmt.setInt(4, 6);
+ stmt.setInt(5, 10);
+ stmt.setString(6, "0000000002");
+ stmt.setString(7, "Item T4");
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "T5");
+ stmt.setInt(3, 500);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 15);
+ stmt.setString(6, "0000000005");
+ stmt.setString(7, "Item T5");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "T6");
+ stmt.setInt(3, 600);
+ stmt.setInt(4, 8);
+ stmt.setInt(5, 15);
+ stmt.setString(6, "0000000006");
+ stmt.setString(7, "Item T6");
+ stmt.execute();
+
+ stmt.setString(1, "invalid001");
+ stmt.setString(2, "INVALID-1");
+ stmt.setInt(3, 0);
+ stmt.setInt(4, 0);
+ stmt.setInt(5, 0);
+ stmt.setString(6, "0000000000");
+ stmt.setString(7, "Invalid item for join test");
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_SUPPLIER_TABLE_FULL_NAME)) {
+
+ // Insert into supplier table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"supplier_id\", " +
+ " NAME, " +
+ " PHONE, " +
+ " ADDRESS, " +
+ " LOC_ID) " +
+ "values (?, ?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "S1");
+ stmt.setString(3, "888-888-1111");
+ stmt.setString(4, "101 YYY Street");
+ stmt.setString(5, "10001");
+ stmt.execute();
+
+ stmt.setString(1, "0000000002");
+ stmt.setString(2, "S2");
+ stmt.setString(3, "888-888-2222");
+ stmt.setString(4, "202 YYY Street");
+ stmt.setString(5, "10002");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "S3");
+ stmt.setString(3, "888-888-3333");
+ stmt.setString(4, "303 YYY Street");
+ stmt.setString(5, null);
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "S4");
+ stmt.setString(3, "888-888-4444");
+ stmt.setString(4, "404 YYY Street");
+ stmt.setString(5, null);
+ stmt.execute();
+
+ stmt.setString(1, "0000000005");
+ stmt.setString(2, "S5");
+ stmt.setString(3, "888-888-5555");
+ stmt.setString(4, "505 YYY Street");
+ stmt.setString(5, "10005");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "S6");
+ stmt.setString(3, "888-888-6666");
+ stmt.setString(4, "606 YYY Street");
+ stmt.setString(5, "10006");
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_ORDER_TABLE_FULL_NAME)) {
+
+ // Insert into order table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (\"order_id\", " +
+ " \"customer_id\", " +
+ " \"item_id\", " +
+ " PRICE, " +
+ " QUANTITY," +
- " DATE) " +
++ " \"DATE\") " +
+ "values (?, ?, ?, ?, ?, ?)");
+ stmt.setString(1, "000000000000001");
+ stmt.setString(2, "0000000004");
+ stmt.setString(3, "0000000001");
+ stmt.setInt(4, 100);
+ stmt.setInt(5, 1000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-22 14:22:56").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000002");
+ stmt.setString(2, "0000000003");
+ stmt.setString(3, "0000000006");
+ stmt.setInt(4, 552);
+ stmt.setInt(5, 2000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 10:06:29").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000003");
+ stmt.setString(2, "0000000002");
+ stmt.setString(3, "0000000002");
+ stmt.setInt(4, 190);
+ stmt.setInt(5, 3000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 16:45:07").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000004");
+ stmt.setString(2, "0000000004");
+ stmt.setString(3, "0000000006");
+ stmt.setInt(4, 510);
+ stmt.setInt(5, 4000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-26 13:26:04").getTime()));
+ stmt.execute();
+
+ stmt.setString(1, "000000000000005");
+ stmt.setString(2, "0000000005");
+ stmt.setString(3, "0000000003");
+ stmt.setInt(4, 264);
+ stmt.setInt(5, 5000);
+ stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-27 09:37:50").getTime()));
+ stmt.execute();
+ } else if (virtualName.equals(JOIN_COITEM_TABLE_FULL_NAME)) {
+ // Insert into coitem table
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + realName +
+ " (item_id, " +
+ " item_name, " +
+ " co_item_id, " +
+ " co_item_name) " +
+ "values (?, ?, ?, ?)");
+ stmt.setString(1, "0000000001");
+ stmt.setString(2, "T1");
+ stmt.setString(3, "0000000002");
+ stmt.setString(4, "T3");
+ stmt.execute();
+
+ stmt.setString(1, "0000000004");
+ stmt.setString(2, "T4");
+ stmt.setString(3, "0000000003");
+ stmt.setString(4, "T3");
+ stmt.execute();
+
+ stmt.setString(1, "0000000003");
+ stmt.setString(2, "T4");
+ stmt.setString(3, "0000000005");
+ stmt.setString(4, "T5");
+ stmt.execute();
+
+ stmt.setString(1, "0000000006");
+ stmt.setString(2, "T6");
+ stmt.setString(3, "0000000001");
+ stmt.setString(4, "T1");
+ stmt.execute();
+ }
+
+ conn.commit();
+ }
+
+ protected void createIndexes(Connection conn, String virtualName, String realName) throws Exception {
+ if (indexDDL != null && indexDDL.length > 0) {
+ for (String ddl : indexDDL) {
+ String newDDL = ddl.replace(virtualName, realName);
+ if (!newDDL.equals(ddl)) {
+ conn.createStatement().execute(newDDL);
+ }
+ }
+ }
+ }
+
+ }
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
index 222efcb,44bd3a1..d76cdfd
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOwnClusterIT.java
@@@ -27,4 -29,9 +29,9 @@@ public class BaseOwnClusterIT extends B
public static void doTeardown() throws Exception {
tearDownMiniCluster();
}
+
+ @After
+ public void cleanUpAfterTest() throws Exception {
- deletePriorMetaData(HConstants.LATEST_TIMESTAMP, getUrl());
++ deletePriorMetaData(HConstants.LATEST_TIMESTAMP, getOldUrl());
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
index 7afed13,0d42e27..baf8e9a
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java
@@@ -1605,24 -1557,27 +1557,27 @@@ public class HashJoinIT extends BaseJoi
@Test
public void testStarJoin() throws Exception {
- String[] query = new String[5];
- query[0] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[1] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o, "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c, "
- + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[2] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[3] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM (" + JOIN_ORDER_TABLE_FULL_NAME + " o, "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c), "
- + JOIN_ITEM_TABLE_FULL_NAME + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[4] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o, ("
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c, "
- + JOIN_ITEM_TABLE_FULL_NAME + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String[] query = new String[5];
- query[0] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName1 + " o JOIN "
++ query[0] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName1 + " o JOIN "
+ + tableName2 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + tableName3 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[1] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName1 + " o, "
++ query[1] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName1 + " o, "
+ + tableName2 + " c, "
+ + tableName3 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[2] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName1 + " o JOIN "
++ query[2] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName1 + " o JOIN "
+ + tableName2 + " c ON o.\"customer_id\" = c.\"customer_id\" JOIN "
+ + tableName3 + " i ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\"";
- query[3] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.date FROM (" + tableName1 + " o, "
++ query[3] = "SELECT /*+ NO_STAR_JOIN*/ \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM (" + tableName1 + " o, "
+ + tableName2 + " c), "
+ + tableName3 + " i WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
- query[4] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.date FROM " + tableName1 + " o, ("
++ query[4] = "SELECT \"order_id\", c.name, i.name iname, quantity, o.\"DATE\" FROM " + tableName1 + " o, ("
+ + tableName2 + " c, "
+ + tableName3 + " i) WHERE o.\"item_id\" = i.\"item_id\" AND o.\"customer_id\" = c.\"customer_id\" ORDER BY \"order_id\"";
try {
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
@@@ -1831,14 -1790,17 +1790,17 @@@
@Test
public void testLeftRightJoin() throws Exception {
- String query1 = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
- String query2 = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + "(" + JOIN_ITEM_TABLE_FULL_NAME + " i RIGHT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
- + " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String tableName1 = getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME);
+ String tableName2 = getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME);
+ String tableName3 = getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME);
- String query1 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + tableName1 + " o LEFT JOIN "
++ String query1 = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName1 + " o LEFT JOIN "
+ + tableName2 + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + tableName3 + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
- String query2 = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + tableName1 + " o LEFT JOIN "
++ String query2 = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + tableName1 + " o LEFT JOIN "
+ + "(" + tableName2 + " i RIGHT JOIN " + tableName3 + " s ON i.\"supplier_id\" = s.\"supplier_id\")"
+ + " ON o.\"item_id\" = i.\"item_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
@@@ -1934,15 -1896,15 +1896,15 @@@
@Test
public void testMultiLeftJoin() throws Exception {
- String[] queries = {
- "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\"",
- "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + "(" + JOIN_ITEM_TABLE_FULL_NAME + " i LEFT JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\") "
- + "ON o.\"item_id\" = i.\"item_id\""};
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String[] queries = {
- "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
++ "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\"",
- "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
++ "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + "(" + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i LEFT JOIN " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\") "
+ + "ON o.\"item_id\" = i.\"item_id\""};
try {
for (String query : queries) {
PreparedStatement statement = conn.prepareStatement(query);
@@@ -1987,12 -1949,12 +1949,12 @@@
@Test
public void testMultiRightJoin() throws Exception {
- String query = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o RIGHT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
-
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
++ String query = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
+
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@@ -2064,10 -2026,10 +2026,10 @@@
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, "1");
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT \"order_id\", i.name, s.name, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
++ String query = "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o RIGHT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" RIGHT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\" ORDER BY \"order_id\", s.\"supplier_id\" DESC";
+
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@@ -2444,10 -2406,10 +2406,10 @@@
@Test
public void testJoinWithDifferentDateJoinKeyTypes() throws Exception {
- String query = "SELECT \"order_id\", c.name, o.\"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o INNER JOIN "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.\"DATE\" = c.\"DATE\"";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String query = "SELECT \"order_id\", c.name, o.date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
- + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.date = c.date";
++ String query = "SELECT \"order_id\", c.name, o.\"DATE\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o INNER JOIN "
++ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + " c ON o.\"customer_id\" = c.\"customer_id\" AND o.\"DATE\" = c.\"DATE\"";
try {
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
@@@ -2662,14 -2624,14 +2624,14 @@@
+ " item_name varchar not null, "
+ " supplier_name varchar, "
+ " quantity integer, "
- + " date timestamp "
+ + " \"DATE\" timestamp "
+ " CONSTRAINT pk PRIMARY KEY (\"order_id\", item_name))");
conn.createStatement().execute("UPSERT INTO " + tempTable
- + "(\"order_id\", item_name, supplier_name, quantity, date) "
- + "SELECT \"order_id\", i.name, s.name, quantity, date FROM "
+ + "(\"order_id\", item_name, supplier_name, quantity, \"DATE\") "
+ + "SELECT \"order_id\", i.name, s.name, quantity, \"DATE\" FROM "
- + JOIN_ORDER_TABLE_FULL_NAME + " o LEFT JOIN "
- + JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
- + JOIN_SUPPLIER_TABLE_FULL_NAME + " s ON i.\"supplier_id\" = s.\"supplier_id\"");
+ + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + " o LEFT JOIN "
+ + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i ON o.\"item_id\" = i.\"item_id\" LEFT JOIN "
+ + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s ON i.\"supplier_id\" = s.\"supplier_id\"");
conn.createStatement().execute("UPSERT INTO " + tempTable
+ "(\"order_id\", item_name, quantity) "
+ "SELECT 'ORDER_SUM', i.name, sum(quantity) FROM "
@@@ -3150,17 -3112,17 +3112,17 @@@
@Test
public void testNestedSubqueries() throws Exception {
- String query1 = "SELECT q.iname, count(c.name), min(q.sname), max(o.quantity) FROM (SELECT \"customer_id\" cid, \"item_id\" iid, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") AS o LEFT JOIN "
- + "(SELECT i.iid iid, s.name sname, i.name iname FROM (SELECT \"supplier_id\" sid, name FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, \"supplier_id\" sid FROM " + JOIN_ITEM_TABLE_FULL_NAME + ") AS i ON i.sid = s.sid) AS q"
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ String query1 = "SELECT q.iname, count(c.name), min(q.sname), max(o.quantity) FROM (SELECT \"customer_id\" cid, \"item_id\" iid, quantity FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o LEFT JOIN "
+ + "(SELECT i.iid iid, s.name sname, i.name iname FROM (SELECT \"supplier_id\" sid, name FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, \"supplier_id\" sid FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON i.sid = s.sid) AS q"
+ " ON o.iid = q.iid LEFT JOIN (SELECT \"customer_id\" cid, name FROM "
- + JOIN_CUSTOMER_TABLE_FULL_NAME + ") AS c ON c.cid = o.cid GROUP BY q.iname ORDER BY q.iname";
- String query2 = "SELECT * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, \"DATE\" FROM " + JOIN_CUSTOMER_TABLE_FULL_NAME + ") AS c INNER JOIN "
- + "(SELECT o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.\"DATE\" odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, \"DATE\" FROM " + JOIN_ORDER_TABLE_FULL_NAME + ") AS o INNER JOIN "
- + "(SELECT i.iid iiid, i.name iname, i.price iprice, i.discount1 idiscount1, i.discount2 idiscount2, i.sid isid, i.description idescription, s.sid ssid, s.name sname, s.phone sphone, s.address saddress, s.loc_id sloc_id FROM (SELECT \"supplier_id\" sid, name, phone, address, loc_id FROM " + JOIN_SUPPLIER_TABLE_FULL_NAME + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, price, discount1, discount2, \"supplier_id\" sid, description FROM " + JOIN_ITEM_TABLE_FULL_NAME + ") AS i ON i.sid = s.sid) as qi"
+ + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + ") AS c ON c.cid = o.cid GROUP BY q.iname ORDER BY q.iname";
- String query2 = "SELECT * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, date FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + ") AS c INNER JOIN "
- + "(SELECT o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.date odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, date FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o INNER JOIN "
++ String query2 = "SELECT * FROM (SELECT \"customer_id\" cid, name, phone, address, loc_id, \"DATE\" FROM " + getTableName(conn, JOIN_CUSTOMER_TABLE_FULL_NAME) + ") AS c INNER JOIN "
++ + "(SELECT o.oid ooid, o.cid ocid, o.iid oiid, o.price * o.quantity, o.\"DATE\" odate, qi.iiid iiid, qi.iname iname, qi.iprice iprice, qi.idiscount1 idiscount1, qi.idiscount2 idiscount2, qi.isid isid, qi.idescription idescription, qi.ssid ssid, qi.sname sname, qi.sphone sphone, qi.saddress saddress, qi.sloc_id sloc_id FROM (SELECT \"item_id\" iid, \"customer_id\" cid, \"order_id\" oid, price, quantity, \"DATE\" FROM " + getTableName(conn, JOIN_ORDER_TABLE_FULL_NAME) + ") AS o INNER JOIN "
+ + "(SELECT i.iid iiid, i.name iname, i.price iprice, i.discount1 idiscount1, i.discount2 idiscount2, i.sid isid, i.description idescription, s.sid ssid, s.name sname, s.phone sphone, s.address saddress, s.loc_id sloc_id FROM (SELECT \"supplier_id\" sid, name, phone, address, loc_id FROM " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + ") AS s RIGHT JOIN (SELECT \"item_id\" iid, name, price, discount1, discount2, \"supplier_id\" sid, description FROM " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + ") AS i ON i.sid = s.sid) as qi"
+ " ON o.iid = qi.iiid) as qo ON c.cid = qo.ocid"
+ " WHERE c.cid <= '0000000005' AND qo.ooid != '000000000000003' AND qo.iname != 'T3' ORDER BY c.cid, qo.iname";
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
try {
PreparedStatement statement = conn.prepareStatement(query1);
ResultSet rs = statement.executeQuery();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java
index b5461ce,0000000..d00161b
mode 100644,000000..100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java
@@@ -1,497 -1,0 +1,497 @@@
+package org.apache.phoenix.calcite;
+
+import java.lang.reflect.Type;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.calcite.adapter.enumerable.EnumerableRules;
+import org.apache.calcite.jdbc.CalcitePrepare;
+import org.apache.calcite.jdbc.CalciteSchema;
+import org.apache.calcite.linq4j.Queryable;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCostFactory;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.prepare.CalcitePrepareImpl;
+import org.apache.calcite.prepare.Prepare.Materialization;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.logical.LogicalSort;
+import org.apache.calcite.rel.rules.JoinCommuteRule;
+import org.apache.calcite.rel.rules.SortProjectTransposeRule;
+import org.apache.calcite.rel.rules.SortUnionTransposeRule;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.runtime.Hook;
+import org.apache.calcite.runtime.Hook.Closeable;
+import org.apache.calcite.schema.SchemaPlus;
+import org.apache.calcite.sql.SqlColumnDefInPkConstraintNode;
+import org.apache.calcite.sql.SqlColumnDefNode;
+import org.apache.calcite.sql.SqlIdentifier;
+import org.apache.calcite.sql.SqlIndexExpressionNode;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.SqlLiteral;
+import org.apache.calcite.sql.SqlNode;
+import org.apache.calcite.sql.SqlNodeList;
+import org.apache.calcite.sql.SqlOptionNode;
+import org.apache.calcite.sql.parser.SqlParser;
+import org.apache.calcite.sql.parser.SqlParserPos;
+import org.apache.calcite.sql.parser.SqlParserUtil;
+import org.apache.calcite.tools.Program;
+import org.apache.calcite.tools.Programs;
+import org.apache.calcite.util.Holder;
+import org.apache.calcite.util.NlsString;
+import org.apache.hadoop.hbase.util.Pair;
+import org.apache.phoenix.calcite.parse.SqlCreateIndex;
+import org.apache.phoenix.calcite.parse.SqlCreateSequence;
+import org.apache.phoenix.calcite.parse.SqlCreateTable;
+import org.apache.phoenix.calcite.parse.SqlDropIndex;
+import org.apache.phoenix.calcite.parse.SqlDropSequence;
+import org.apache.phoenix.calcite.parse.SqlDropTable;
+import org.apache.phoenix.calcite.parse.SqlUpdateStatistics;
+import org.apache.phoenix.calcite.parser.PhoenixParserImpl;
+import org.apache.phoenix.calcite.rel.PhoenixRel;
+import org.apache.phoenix.calcite.rel.PhoenixServerProject;
+import org.apache.phoenix.calcite.rel.PhoenixTemporarySort;
+import org.apache.phoenix.calcite.rules.PhoenixFilterScanMergeRule;
+import org.apache.phoenix.calcite.rules.PhoenixForwardTableScanRule;
+import org.apache.phoenix.calcite.rules.PhoenixJoinSingleValueAggregateMergeRule;
+import org.apache.phoenix.calcite.rules.PhoenixMergeSortUnionRule;
+import org.apache.phoenix.calcite.rules.PhoenixOrderedAggregateRule;
+import org.apache.phoenix.calcite.rules.PhoenixReverseTableScanRule;
+import org.apache.phoenix.calcite.rules.PhoenixSortServerJoinTransposeRule;
+import org.apache.phoenix.calcite.rules.PhoenixTableScanColumnRefRule;
+import org.apache.phoenix.compile.CreateIndexCompiler;
+import org.apache.phoenix.compile.CreateSequenceCompiler;
+import org.apache.phoenix.compile.CreateTableCompiler;
+import org.apache.phoenix.compile.MutationPlan;
+import org.apache.phoenix.jdbc.PhoenixConnection;
+import org.apache.phoenix.jdbc.PhoenixStatement;
+import org.apache.phoenix.jdbc.PhoenixStatement.Operation;
+import org.apache.phoenix.parse.ColumnDef;
+import org.apache.phoenix.parse.ColumnDefInPkConstraint;
+import org.apache.phoenix.parse.ColumnName;
+import org.apache.phoenix.parse.CreateIndexStatement;
+import org.apache.phoenix.parse.CreateSequenceStatement;
+import org.apache.phoenix.parse.CreateTableStatement;
+import org.apache.phoenix.parse.DropIndexStatement;
+import org.apache.phoenix.parse.DropSequenceStatement;
+import org.apache.phoenix.parse.DropTableStatement;
+import org.apache.phoenix.parse.IndexKeyConstraint;
+import org.apache.phoenix.parse.NamedNode;
+import org.apache.phoenix.parse.NamedTableNode;
+import org.apache.phoenix.parse.ParseNode;
+import org.apache.phoenix.parse.ParseNodeFactory;
+import org.apache.phoenix.parse.PrimaryKeyConstraint;
+import org.apache.phoenix.parse.SQLParser;
+import org.apache.phoenix.parse.TableName;
+import org.apache.phoenix.parse.UDFParseNode;
+import org.apache.phoenix.parse.UpdateStatisticsStatement;
+import org.apache.phoenix.schema.MetaDataClient;
+import org.apache.phoenix.schema.PTable.IndexType;
+import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.SortOrder;
+
+import com.google.common.base.Function;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Lists;
+
+public class PhoenixPrepareImpl extends CalcitePrepareImpl {
+ public static final ThreadLocal<String> THREAD_SQL_STRING =
+ new ThreadLocal<>();
+
+ protected final RelOptRule[] defaultConverterRules;
+
+ public PhoenixPrepareImpl(RelOptRule[] defaultConverterRules) {
+ super();
+ this.defaultConverterRules = defaultConverterRules;
+ }
+
+ @Override
+ protected SqlParser.ConfigBuilder createParserConfig() {
+ return super.createParserConfig()
+ .setParserFactory(PhoenixParserImpl.FACTORY);
+ }
+
+ protected SqlParser createParser(String sql,
+ SqlParser.ConfigBuilder parserConfig) {
+ THREAD_SQL_STRING.set(sql);
+ return SqlParser.create(sql, parserConfig.build());
+ }
+
+ @Override
+ protected RelOptCluster createCluster(RelOptPlanner planner,
+ RexBuilder rexBuilder) {
+ RelOptCluster cluster = super.createCluster(planner, rexBuilder);
+ cluster.setMetadataProvider(PhoenixRel.METADATA_PROVIDER);
+ return cluster;
+ }
+
+ @Override
+ protected RelOptPlanner createPlanner(
+ final CalcitePrepare.Context prepareContext,
+ org.apache.calcite.plan.Context externalContext,
+ RelOptCostFactory costFactory) {
+ RelOptPlanner planner = super.createPlanner(prepareContext, externalContext, costFactory);
+
+ planner.removeRule(EnumerableRules.ENUMERABLE_SEMI_JOIN_RULE);
+ planner.removeRule(JoinCommuteRule.INSTANCE);
+ planner.addRule(JoinCommuteRule.SWAP_OUTER);
+ planner.removeRule(SortUnionTransposeRule.INSTANCE);
+ planner.addRule(SortUnionTransposeRule.MATCH_NULL_FETCH);
+ planner.addRule(new SortProjectTransposeRule(
+ PhoenixTemporarySort.class,
+ PhoenixServerProject.class,
+ "PhoenixSortProjectTransposeRule"));
+
+ for (RelOptRule rule : this.defaultConverterRules) {
+ planner.addRule(rule);
+ }
+ planner.addRule(PhoenixFilterScanMergeRule.INSTANCE);
+ planner.addRule(PhoenixTableScanColumnRefRule.INSTANCE);
+ planner.addRule(PhoenixJoinSingleValueAggregateMergeRule.INSTANCE);
+ planner.addRule(PhoenixMergeSortUnionRule.INSTANCE);
+ planner.addRule(PhoenixOrderedAggregateRule.INSTANCE);
+ planner.addRule(PhoenixSortServerJoinTransposeRule.INSTANCE);
+ planner.addRule(new PhoenixForwardTableScanRule(LogicalSort.class));
+ planner.addRule(new PhoenixForwardTableScanRule(PhoenixTemporarySort.class));
+ planner.addRule(new PhoenixReverseTableScanRule(LogicalSort.class));
+ planner.addRule(new PhoenixReverseTableScanRule(PhoenixTemporarySort.class));
+
+ return planner;
+ }
+
+ public <T> CalciteSignature<T> prepareQueryable(
+ Context context,
+ Queryable<T> queryable) {
+ List<Closeable> hooks = addHooks(
+ context.getRootSchema(),
+ context.config().materializationsEnabled());
+ try {
+ return super.prepareQueryable(context, queryable);
+ } finally {
+ for (Closeable hook : hooks) {
+ hook.close();
+ }
+ }
+ }
+
+ public <T> CalciteSignature<T> prepareSql(
+ Context context,
+ Query<T> query,
+ Type elementType,
+ long maxRowCount) {
+ List<Closeable> hooks = addHooks(
+ context.getRootSchema(),
+ context.config().materializationsEnabled());
+ try {
+ return super.prepareSql(context, query, elementType, maxRowCount);
+ } finally {
+ for (Closeable hook : hooks) {
+ hook.close();
+ }
+ }
+ }
+
+ private List<Closeable> addHooks(final CalciteSchema rootSchema, boolean materializationEnabled) {
+ final List<Closeable> hooks = Lists.newArrayList();
+
+ hooks.add(Hook.PARSE_TREE.add(new Function<Object[], Object>() {
+ @Override
+ public Object apply(Object[] input) {
+ for (CalciteSchema schema : rootSchema.getSubSchemaMap().values()) {
+ if (schema.schema instanceof PhoenixSchema) {
+ ((PhoenixSchema) schema.schema).clear();
+ for (CalciteSchema subSchema : schema.getSubSchemaMap().values()) {
+ ((PhoenixSchema) subSchema.schema).clear();
+ }
+ }
+ }
+ return null;
+ }
+ }));
+
+ hooks.add(Hook.TRIMMED.add(new Function<RelNode, Object>() {
+ @Override
+ public Object apply(RelNode root) {
+ for (CalciteSchema schema : rootSchema.getSubSchemaMap().values()) {
+ if (schema.schema instanceof PhoenixSchema) {
+ ((PhoenixSchema) schema.schema).defineIndexesAsMaterializations();
+ for (CalciteSchema subSchema : schema.getSubSchemaMap().values()) {
+ ((PhoenixSchema) subSchema.schema).defineIndexesAsMaterializations();
+ }
+ }
+ }
+ return null;
+ }
+ }));
+
+ hooks.add(Hook.PROGRAM.add(new Function<org.apache.calcite.util.Pair<List<Materialization>, Holder<Program>>, Object>() {
+ @Override
+ public Object apply(
+ org.apache.calcite.util.Pair<List<Materialization>, Holder<Program>> input) {
+ input.getValue().set(Programs.standard(PhoenixRel.METADATA_PROVIDER));
+ return null;
+ }
+ }));
+
+ return hooks;
+ }
+
+ @Override
+ public void executeDdl(Context context, SqlNode node) {
+ try {
+ final ParseNodeFactory nodeFactory = new ParseNodeFactory();
+ final PhoenixConnection connection = getPhoenixConnection(context.getRootSchema().plus());
+ switch (node.getKind()) {
+ case CREATE_TABLE:
+ case CREATE_VIEW: {
+ final SqlCreateTable table = (SqlCreateTable) node;
+ final PTableType tableType = table.getKind() == SqlKind.CREATE_TABLE ? PTableType.TABLE : PTableType.VIEW;
+ final TableName name;
+ if (table.tableName.isSimple()) {
+ name = TableName.create(null, table.tableName.getSimple());
+ } else {
+ name = TableName.create(table.tableName.names.get(0), table.tableName.names.get(1));
+ }
+ final ListMultimap<String, Pair<String, Object>> props = convertOptions(table.tableOptions);
+ final List<ColumnDef> columnDefs = Lists.newArrayList();
+ for (SqlNode columnDef : table.columnDefs) {
+ columnDefs.add(((SqlColumnDefNode) columnDef).columnDef);
+ }
+ final PrimaryKeyConstraint pkConstraint;
+ if (table.pkConstraint == null) {
+ pkConstraint = null;
+ } else {
+ final List<ColumnDefInPkConstraint> pkColumns = Lists.newArrayList();
+ for (SqlNode pkColumn : table.pkConstraintColumnDefs) {
+ pkColumns.add(((SqlColumnDefInPkConstraintNode) pkColumn).pkConstraint);
+ }
+ pkConstraint = nodeFactory.primaryKey(table.pkConstraint.getSimple(), pkColumns);
+ }
+ final TableName baseTableName;
+ final ParseNode where;
+ if (table.baseTableName == null) {
+ baseTableName = tableType == PTableType.TABLE ? null : name;
+ where = null;
+ } else {
+ if (table.baseTableName.isSimple()) {
+ baseTableName = TableName.create(null, table.baseTableName.getSimple());
+ } else {
+ baseTableName = TableName.create(table.baseTableName.names.get(0), table.baseTableName.names.get(1));
+ }
+ where = convertSqlNodeToParseNode(table.whereNode);
+ }
+ final List<ParseNode> splitNodes = convertSplits(table.splitKeyList, nodeFactory);
+ final CreateTableStatement create = nodeFactory.createTable(
+ name, props, columnDefs, pkConstraint,
+ splitNodes, tableType, table.ifNotExists.booleanValue(),
+ baseTableName, where, 0);
+ try (final PhoenixStatement stmt = new PhoenixStatement(connection)) {
+ final CreateTableCompiler compiler = new CreateTableCompiler(stmt, Operation.UPSERT);
+ final MutationPlan plan = compiler.compile(create);
+ plan.execute();
+ }
+ break;
+ }
+ case CREATE_INDEX: {
+ final SqlCreateIndex index = (SqlCreateIndex) node;
+ final NamedNode name = NamedNode.caseSensitiveNamedNode(index.indexName.getSimple());
+ final IndexType indexType = index.isLocal.booleanValue() ? IndexType.LOCAL : IndexType.GLOBAL;
+ final TableName dataTableName;
+ if (index.dataTableName.isSimple()) {
+ dataTableName = TableName.create(null, index.dataTableName.getSimple());
+ } else {
+ dataTableName = TableName.create(index.dataTableName.names.get(0), index.dataTableName.names.get(1));
+ }
+ final NamedTableNode dataTable = NamedTableNode.create(dataTableName);
+ final List<Pair<ParseNode, SortOrder>> indexKeys = Lists.newArrayList();
+ for (SqlNode e : index.expressions) {
+ SqlIndexExpressionNode indexExpression = (SqlIndexExpressionNode) e;
+ ParseNode exprNode = convertSqlNodeToParseNode(indexExpression.expression);
+ indexKeys.add(new Pair<ParseNode, SortOrder>(exprNode, indexExpression.sortOrder));
+ }
+ final IndexKeyConstraint indexKeyConstraint = nodeFactory.indexKey(indexKeys);
+ final List<ColumnName> includeColumns;
+ if (SqlNodeList.isEmptyList(index.includeColumns)) {
+ includeColumns = null;
+ } else {
+ includeColumns = Lists.newArrayList();
+ for (SqlNode e : index.includeColumns) {
+ SqlIdentifier n = (SqlIdentifier) e;
+ ColumnName columnName;
+ if (n.isSimple()) {
+ columnName = ColumnName.caseSensitiveColumnName(n.getSimple());
+ } else {
+ columnName = ColumnName.caseSensitiveColumnName(n.names.get(0), n.names.get(1));
+ }
+ includeColumns.add(columnName);
+ }
+ }
+ final ListMultimap<String, Pair<String, Object>> props = convertOptions(index.indexOptions);
+ final List<ParseNode> splitNodes = convertSplits(index.splitKeyList, nodeFactory);
+ // TODO
+ final Map<String, UDFParseNode> udfParseNodes = new HashMap<String, UDFParseNode>();
+ final CreateIndexStatement create = nodeFactory.createIndex(
+ name, dataTable, indexKeyConstraint, includeColumns,
+ splitNodes, props, index.ifNotExists.booleanValue(),
+ indexType, index.async.booleanValue(), 0, udfParseNodes);
+ try (final PhoenixStatement stmt = new PhoenixStatement(connection)) {
+ final CreateIndexCompiler compiler = new CreateIndexCompiler(stmt, Operation.UPSERT);
+ final MutationPlan plan = compiler.compile(create);
+ plan.execute();
+ }
+ break;
+ }
+ case CREATE_SEQUENCE: {
+ final SqlCreateSequence sequence = (SqlCreateSequence) node;
+ final TableName name;
+ if (sequence.sequenceName.isSimple()) {
+ name = TableName.create(null, sequence.sequenceName.getSimple());
+ } else {
+ name = TableName.create(sequence.sequenceName.names.get(0), sequence.sequenceName.names.get(1));
+ }
- final ParseNode startWith = nodeFactory.literal(sequence.startWith.intValue(true));
- final ParseNode incrementBy = nodeFactory.literal(sequence.incrementBy.intValue(true));
- final ParseNode minValue = nodeFactory.literal(sequence.minValue.intValue(true));
- final ParseNode maxValue = nodeFactory.literal(sequence.maxValue.intValue(true));
- final ParseNode cache = nodeFactory.literal(sequence.cache.intValue(true));
++ final ParseNode startWith = sequence.startWith == null ? null : nodeFactory.literal(sequence.startWith.intValue(true));
++ final ParseNode incrementBy = sequence.incrementBy == null ? null : nodeFactory.literal(sequence.incrementBy.intValue(true));
++ final ParseNode minValue = sequence.minValue == null ? null : nodeFactory.literal(sequence.minValue.intValue(true));
++ final ParseNode maxValue = sequence.maxValue == null ? null : nodeFactory.literal(sequence.maxValue.intValue(true));
++ final ParseNode cache = sequence.cache == null ? null : nodeFactory.literal(sequence.cache.intValue(true));
+ final CreateSequenceStatement create = nodeFactory.createSequence(name, startWith, incrementBy, cache, minValue, maxValue, sequence.cycle.booleanValue(), sequence.ifNotExists.booleanValue(), 0);
+ try (final PhoenixStatement stmt = new PhoenixStatement(connection)) {
+ final CreateSequenceCompiler compiler = new CreateSequenceCompiler(stmt, Operation.UPSERT);
+ final MutationPlan plan = compiler.compile(create);
+ plan.execute();
+ }
+ break;
+ }
+ case DROP_TABLE:
+ case DROP_VIEW: {
+ final SqlDropTable table = (SqlDropTable) node;
+ final PTableType tableType = table.getKind() == SqlKind.DROP_TABLE ? PTableType.TABLE : PTableType.VIEW;
+ final TableName name;
+ if (table.tableName.isSimple()) {
+ name = TableName.create(null, table.tableName.getSimple());
+ } else {
+ name = TableName.create(table.tableName.names.get(0), table.tableName.names.get(1));
+ }
+ final DropTableStatement drop = nodeFactory.dropTable(
+ name, tableType, table.ifExists.booleanValue(), table.cascade.booleanValue());
+ MetaDataClient client = new MetaDataClient(connection);
+ client.dropTable(drop);
+ break;
+ }
+ case DROP_INDEX: {
+ final SqlDropIndex index = (SqlDropIndex) node;
+ final NamedNode name = NamedNode.caseSensitiveNamedNode(index.indexName.getSimple());
+ final TableName dataTableName;
+ if (index.dataTableName.isSimple()) {
+ dataTableName = TableName.create(null, index.dataTableName.getSimple());
+ } else {
+ dataTableName = TableName.create(index.dataTableName.names.get(0), index.dataTableName.names.get(1));
+ }
+ final DropIndexStatement drop = nodeFactory.dropIndex(name, dataTableName, index.ifExists.booleanValue());
+ MetaDataClient client = new MetaDataClient(connection);
+ client.dropIndex(drop);
+ break;
+ }
+ case DROP_SEQUENCE: {
+ final SqlDropSequence sequence = (SqlDropSequence) node;
+ final TableName name;
+ if (sequence.sequenceName.isSimple()) {
+ name = TableName.create(null, sequence.sequenceName.getSimple());
+ } else {
+ name = TableName.create(sequence.sequenceName.names.get(0), sequence.sequenceName.names.get(1));
+ }
+ final DropSequenceStatement drop = nodeFactory.dropSequence(name, sequence.ifExists.booleanValue(), 0);
+ MetaDataClient client = new MetaDataClient(connection);
+ client.dropSequence(drop);
+ break;
+ }
+ case OTHER_DDL: {
+ if (node instanceof SqlUpdateStatistics) {
+ SqlUpdateStatistics updateStatsNode = (SqlUpdateStatistics) node;
+ final TableName name;
+ if (updateStatsNode.tableName.isSimple()) {
+ name = TableName.create(null, updateStatsNode.tableName.getSimple());
+ } else {
+ name = TableName.create(updateStatsNode.tableName.names.get(0), updateStatsNode.tableName.names.get(1));
+ }
+ final NamedTableNode table = NamedTableNode.create(name);
+ final Map<String, Object> props = new HashMap<String, Object>();
+ for (SqlNode optionNode : updateStatsNode.options) {
+ SqlOptionNode option = (SqlOptionNode) optionNode;
+ props.put(option.propertyName, option.value);
+ }
+ final UpdateStatisticsStatement updateStatsStmt = nodeFactory.updateStatistics(table, updateStatsNode.scope, props);
+ MetaDataClient client = new MetaDataClient(connection);
+ client.updateStatistics(updateStatsStmt);
+ } else {
+ throw new AssertionError("unknown DDL node " + node.getClass());
+ }
+ break;
+ }
+ default:
+ throw new AssertionError("unknown DDL type " + node.getKind() + " " + node.getClass());
+ }
+ } catch (SQLException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static ParseNode convertSqlNodeToParseNode(SqlNode sqlNode) throws SQLException {
+ if (sqlNode == null) {
+ return null;
+ }
+
+ String sql = THREAD_SQL_STRING.get();
+ SqlParserPos pos = sqlNode.getParserPosition();
+ int start = SqlParserUtil.lineColToIndex(sql, pos.getLineNum(), pos.getColumnNum());
+ int end = SqlParserUtil.lineColToIndex(sql, pos.getEndLineNum(), pos.getEndColumnNum());
+ String sqlString = sql.substring(start, end + 1);
+ return new SQLParser(sqlString).parseExpression();
+ }
+
+ private static ListMultimap<String, Pair<String, Object>> convertOptions(SqlNodeList options) {
+ final ListMultimap<String, Pair<String, Object>> props;
+ if (SqlNodeList.isEmptyList(options)) {
+ props = null;
+ } else {
+ props = ArrayListMultimap.<String, Pair<String, Object>>create();
+ for (SqlNode optionNode : options) {
+ SqlOptionNode option = (SqlOptionNode) optionNode;
+ props.put(option.familyName, new Pair<String, Object>(option.propertyName, option.value));
+ }
+ }
+
+ return props;
+ }
+
+ private static List<ParseNode> convertSplits(SqlNodeList splitKeyList, ParseNodeFactory nodeFactory) {
+ final List<ParseNode> splits;
+ if (SqlNodeList.isEmptyList(splitKeyList)) {
+ splits = null;
+ } else {
+ splits = Lists.newArrayList();
+ for (SqlNode splitKey : splitKeyList) {
+ final SqlLiteral key = (SqlLiteral) splitKey;
+ splits.add(nodeFactory.literal(((NlsString) key.getValue()).toString()));
+ }
+ }
+
+ return splits;
+ }
+
+ private static PhoenixConnection getPhoenixConnection(SchemaPlus rootSchema) {
+ for (String subSchemaName : rootSchema.getSubSchemaNames()) {
+ try {
+ PhoenixSchema phoenixSchema = rootSchema
+ .getSubSchema(subSchemaName).unwrap(PhoenixSchema.class);
+ return phoenixSchema.pc;
+ } catch (ClassCastException e) {
+ }
+ }
+
+ throw new RuntimeException("Phoenix schema not found.");
+ }
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
index 4d343b4,58fb151..1afff27
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java
@@@ -386,9 -380,9 +386,9 @@@ public final class QueryUtil
server = Joiner.on(',').join(servers);
String znodeParent = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,
HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);
- String url = getUrl(server, port, znodeParent, principal);
+ String url = getUrl(server, port, znodeParent, principal, isCalciteEnabled);
// Mainly for testing to tack on the test=true part to ensure driver is found on server
- String extraArgs = conf.get(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, QueryServicesOptions.DEFAULT_EXTRA_JDBC_ARGUMENTS);
+ String extraArgs = props.getProperty(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, conf.get(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, QueryServicesOptions.DEFAULT_EXTRA_JDBC_ARGUMENTS));
if (extraArgs.length() > 0) {
url += extraArgs + PhoenixRuntime.JDBC_PROTOCOL_TERMINATOR;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
index dccf4a9,b74cefb..4af7ede
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseConnectionlessQueryTest.java
@@@ -113,20 -102,17 +108,17 @@@ public class BaseConnectionlessQueryTes
@BeforeClass
public static void doSetup() throws Exception {
- String url = getUrl();
- startServer(getUrl());
+ startServer(getOldUrl());
- ensureTableCreated(url, ATABLE_NAME);
- ensureTableCreated(url, ENTITY_HISTORY_TABLE_NAME);
- ensureTableCreated(url, FUNKY_NAME);
- ensureTableCreated(url, PTSDB_NAME);
- ensureTableCreated(url, PTSDB2_NAME);
- ensureTableCreated(url, PTSDB3_NAME);
- ensureTableCreated(url, MULTI_CF_NAME);
- ensureTableCreated(url, JOIN_ORDER_TABLE_FULL_NAME);
- ensureTableCreated(url, JOIN_CUSTOMER_TABLE_FULL_NAME);
- ensureTableCreated(url, JOIN_ITEM_TABLE_FULL_NAME);
- ensureTableCreated(url, JOIN_SUPPLIER_TABLE_FULL_NAME);
- ensureTableCreated(url, TABLE_WITH_ARRAY);
+ ensureTableCreated(getUrl(), ATABLE_NAME);
+ ensureTableCreated(getUrl(), ENTITY_HISTORY_TABLE_NAME);
+ ensureTableCreated(getUrl(), FUNKY_NAME);
+ ensureTableCreated(getUrl(), PTSDB_NAME);
+ ensureTableCreated(getUrl(), PTSDB2_NAME);
+ ensureTableCreated(getUrl(), PTSDB3_NAME);
+ ensureTableCreated(getUrl(), MULTI_CF_NAME);
+ ensureTableCreated(getUrl(), TABLE_WITH_ARRAY);
+
+
Properties props = new Properties();
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(HConstants.LATEST_TIMESTAMP));
PhoenixConnection conn = DriverManager.getConnection(PHOENIX_CONNECTIONLESS_JDBC_URL, props).unwrap(PhoenixConnection.class);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 7dfa9cc,bdcd520..d53134f
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@@ -95,10 -89,7 +89,8 @@@ import java.sql.DriverManager
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Statement;
- import java.sql.Timestamp;
import java.sql.Types;
- import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
@@@ -533,7 -458,7 +467,7 @@@ public abstract class BaseTest
config.set(TxConstants.Manager.CFG_TX_SNAPSHOT_DIR, tmpFolder.newFolder().getAbsolutePath());
config.setInt(TxConstants.Manager.CFG_TX_TIMEOUT, DEFAULT_TXN_TIMEOUT_SECONDS);
-- ConnectionInfo connInfo = ConnectionInfo.create(getUrl());
++ ConnectionInfo connInfo = ConnectionInfo.create(getOldUrl());
zkClient = ZKClientServices.delegate(
ZKClients.reWatchOnExpire(
ZKClients.retryOnFailure(
@@@ -553,11 -478,17 +487,18 @@@
txService.startAndWait();
}
- protected static String checkClusterInitialized(ReadOnlyProps overrideProps) throws Exception {
+ private static String checkClusterInitialized(ReadOnlyProps serverProps) throws Exception {
if (!clusterInitialized) {
- url = setUpTestCluster(config, overrideProps);
+ url = setUpTestCluster(config, serverProps);
+ calciteUrl = url.replaceFirst(PhoenixRuntime.JDBC_PROTOCOL, PhoenixRuntime.JDBC_PROTOCOL_CALCITE);
clusterInitialized = true;
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ @Override
+ public void run() {
+ logger.info("SHUTDOWN: halting JVM now");
+ Runtime.getRuntime().halt(0);
+ }
+ });
}
return url;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ca8e4b3/pom.xml
----------------------------------------------------------------------
[14/48] phoenix git commit: PHOENIX-3253 Make changes to tests to
support method level parallelization
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/UseSchemaIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UseSchemaIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UseSchemaIT.java
index ec84282..c43fb0e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UseSchemaIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UseSchemaIT.java
@@ -45,13 +45,13 @@ public class UseSchemaIT extends ParallelStatsDisabledIT {
@Test
public void testUseSchemaCaseInsensitive() throws Exception {
- String schemaName = generateRandomString();
+ String schemaName = generateUniqueName();
testUseSchema(schemaName);
}
@Test
public void testUseSchemaCaseSensitive() throws Exception {
- String schemaName = generateRandomString();
+ String schemaName = generateUniqueName();
testUseSchema("\"" + schemaName + "\"");
}
@@ -61,7 +61,7 @@ public class UseSchemaIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
String ddl = "CREATE SCHEMA IF NOT EXISTS "+schema;
conn.createStatement().execute(ddl);
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
ddl = "create table "+schema+"." + testTable + "(id varchar primary key)";
conn.createStatement().execute(ddl);
conn.createStatement().execute("use "+schema);
@@ -89,14 +89,14 @@ public class UseSchemaIT extends ParallelStatsDisabledIT {
@Test
public void testSchemaInJdbcUrl() throws Exception {
Properties props = new Properties();
- String schema = generateRandomString();
+ String schema = generateUniqueName();
props.setProperty(QueryServices.SCHEMA_ATTRIB, schema);
props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(true));
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
String ddl = "CREATE SCHEMA IF NOT EXISTS " + schema;
conn.createStatement().execute(ddl);
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
ddl = "create table IF NOT EXISTS " + schema + "." + testTable + " (schema_name varchar primary key)";
conn.createStatement().execute(ddl);
conn.createStatement().executeUpdate("upsert into " + schema + "." + testTable + " values('" + schema + "')");
@@ -105,7 +105,7 @@ public class UseSchemaIT extends ParallelStatsDisabledIT {
assertTrue(rs.next());
assertEquals(schema, rs.getString(1));
- schema = generateRandomString();
+ schema = generateUniqueName();
ddl = "CREATE SCHEMA " + schema;
conn.createStatement().execute(ddl);
conn.createStatement().execute("use " + schema);
@@ -121,8 +121,8 @@ public class UseSchemaIT extends ParallelStatsDisabledIT {
@Test
public void testMappedView() throws Exception {
Properties props = new Properties();
- String schema = generateRandomString();
- String tableName = generateRandomString();
+ String schema = generateUniqueName();
+ String tableName = generateUniqueName();
String fullTablename = schema + QueryConstants.NAME_SEPARATOR + tableName;
props.setProperty(QueryServices.SCHEMA_ATTRIB, schema);
Connection conn = DriverManager.getConnection(getUrl(), props);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
index 425e84c..512841a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java
@@ -64,7 +64,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE) "+ tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullParentViewName = "V_" + generateRandomString();
+ String fullParentViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullParentViewName + " (v2 VARCHAR) AS SELECT * FROM " + tableName + " WHERE k > 5";
conn.createStatement().execute(ddl);
try {
@@ -104,7 +104,7 @@ public class ViewIT extends BaseViewIT {
assertEquals(count + 5, rs.getInt(1));
}
assertEquals(4, count);
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullParentViewName + " WHERE k < 9";
conn.createStatement().execute(ddl);
try {
@@ -140,7 +140,7 @@ public class ViewIT extends BaseViewIT {
public void testUpdatableOnUpdatableView() throws Exception {
String viewName = testUpdatableView(null);
Connection conn = DriverManager.getConnection(getUrl());
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
String ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + viewName + " WHERE k3 = 2";
conn.createStatement().execute(ddl);
ResultSet rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM " + fullViewName);
@@ -178,7 +178,7 @@ public class ViewIT extends BaseViewIT {
public void testReadOnlyOnUpdatableView() throws Exception {
String viewName = testUpdatableView(null);
Connection conn = DriverManager.getConnection(getUrl());
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
String ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + viewName + " WHERE k3 > 1 and k3 < 50";
conn.createStatement().execute(ddl);
ResultSet rs = conn.createStatement().executeQuery("SELECT k1, k2, k3 FROM " + fullViewName);
@@ -210,7 +210,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullViewName1 = "V_" + generateRandomString();
+ String fullViewName1 = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName1 + "(v2 VARCHAR, v3 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
@@ -221,7 +221,7 @@ public class ViewIT extends BaseViewIT {
assertEquals(SQLExceptionCode.CANNOT_MUTATE_TABLE.getErrorCode(), e.getErrorCode());
}
- String fullViewName2 = "V_" + generateRandomString();
+ String fullViewName2 = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName2 + " AS SELECT * FROM " + fullViewName1 + " WHERE v2 != 'foo'";
conn.createStatement().execute(ddl);
@@ -245,10 +245,10 @@ public class ViewIT extends BaseViewIT {
public void testReadOnlyViewWithCaseSensitiveTableNames() throws Exception {
Connection earlierCon = DriverManager.getConnection(getUrl());
Connection conn = DriverManager.getConnection(getUrl());
- String caseSensitiveTableName = "\"t_" + generateRandomString() + "\"" ;
+ String caseSensitiveTableName = "\"t_" + generateUniqueName() + "\"" ;
String ddl = "CREATE TABLE " + caseSensitiveTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String caseSensitiveViewName = "\"v_" + generateRandomString() + "\"" ;
+ String caseSensitiveViewName = "\"v_" + generateUniqueName() + "\"" ;
ddl = "CREATE VIEW " + caseSensitiveViewName + " (v2 VARCHAR) AS SELECT * FROM " + caseSensitiveTableName + " WHERE k > 5";
conn.createStatement().execute(ddl);
try {
@@ -283,7 +283,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (\"k\" INTEGER NOT NULL PRIMARY KEY, \"v1\" INTEGER, \"a\".v2 VARCHAR)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String viewName = "V_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + viewName + " (v VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE \"k\" > 5 and \"v1\" > 1";
conn.createStatement().execute(ddl);
try {
@@ -311,7 +311,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 INTEGER, v2 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String viewName = "V_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + viewName + " (v VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v2 > CURRENT_DATE()-5 AND v2 > DATE '2010-01-01'";
conn.createStatement().execute(ddl);
try {
@@ -350,7 +350,7 @@ public class ViewIT extends BaseViewIT {
Properties props = new Properties();
props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
Connection conn = DriverManager.getConnection(getUrl(),props);
- String schemaName1 = "S_" + generateRandomString();
+ String schemaName1 = "S_" + generateUniqueName();
String fullTableName1 = SchemaUtil.getTableName(schemaName1, tableName);
if (isNamespaceMapped) {
conn.createStatement().execute("CREATE SCHEMA IF NOT EXISTS " + schemaName1);
@@ -360,12 +360,12 @@ public class ViewIT extends BaseViewIT {
conn.createStatement().execute(ddl);
assertTrue(admin.tableExists(SchemaUtil.getPhysicalTableName(SchemaUtil.normalizeIdentifier(fullTableName1),
conn.unwrap(PhoenixConnection.class).getQueryServices().getProps())));
- String viewName = "V_" + generateRandomString();
- String viewSchemaName = "S_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
+ String viewSchemaName = "S_" + generateUniqueName();
String fullViewName1 = SchemaUtil.getTableName(viewSchemaName, viewName);
ddl = "CREATE VIEW " + fullViewName1 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName1 + " WHERE k > 5";
conn.createStatement().execute(ddl);
- String fullViewName2 = "V_" + generateRandomString();
+ String fullViewName2 = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName2 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName1 + " WHERE k > 5";
conn.createStatement().execute(ddl);
conn.createStatement().executeQuery("SELECT * FROM " + fullViewName1);
@@ -378,7 +378,7 @@ public class ViewIT extends BaseViewIT {
}
ddl = "DROP VIEW " + fullViewName1;
conn.createStatement().execute(ddl);
- ddl = "DROP VIEW " + SchemaUtil.getTableName(viewSchemaName, generateRandomString());
+ ddl = "DROP VIEW " + SchemaUtil.getTableName(viewSchemaName, generateUniqueName());
try {
conn.createStatement().execute(ddl);
fail();
@@ -398,7 +398,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String viewName = "V_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + viewName + "(v2 VARCHAR, v3 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
@@ -416,14 +416,14 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String viewName = "V_" + generateRandomString();
- String viewSchemaName = "S_" + generateRandomString();
+ String viewName = "V_" + generateUniqueName();
+ String viewSchemaName = "S_" + generateUniqueName();
String fullViewName1 = SchemaUtil.getTableName(viewSchemaName, viewName);
ddl = "CREATE VIEW " + fullViewName1 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
conn.createStatement().execute(ddl);
ddl = "CREATE LOCAL INDEX idx on " + fullViewName1 + "(v2)";
conn.createStatement().execute(ddl);
- String fullViewName2 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateRandomString());
+ String fullViewName2 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateUniqueName());
ddl = "CREATE VIEW " + fullViewName2 + "(v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 10";
conn.createStatement().execute(ddl);
@@ -446,12 +446,12 @@ public class ViewIT extends BaseViewIT {
tableDDLOptions+="IMMUTABLE_ROWS=true";
String ddl = "CREATE TABLE " + fullTableName + " (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String viewSchemaName = "S_" + generateRandomString();
- String fullViewName1 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateRandomString());
- String fullViewName2 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateRandomString());
- String indexName1 = "I_" + generateRandomString();
- String indexName2 = "I_" + generateRandomString();
- String indexName3 = "I_" + generateRandomString();
+ String viewSchemaName = "S_" + generateUniqueName();
+ String fullViewName1 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateUniqueName());
+ String fullViewName2 = SchemaUtil.getTableName(viewSchemaName, "V_" + generateUniqueName());
+ String indexName1 = "I_" + generateUniqueName();
+ String indexName2 = "I_" + generateUniqueName();
+ String indexName3 = "I_" + generateUniqueName();
ddl = "CREATE INDEX " + indexName1 + " ON " + fullTableName + " (v1)";
conn.createStatement().execute(ddl);
ddl = "CREATE VIEW " + fullViewName1 + " (v2 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE k > 5";
@@ -515,13 +515,13 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, k3 DECIMAL, s1 VARCHAR, s2 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2, k3))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String indexName1 = "I_" + generateRandomString();
+ String indexName1 = "I_" + generateUniqueName();
String fullIndexName1 = SchemaUtil.getTableName(schemaName, indexName1);
conn.createStatement().execute("CREATE " + (localIndex ? "LOCAL " : "") + " INDEX " + indexName1 + " ON " + fullTableName + "(k3, k2) INCLUDE(s1, s2)");
- String indexName2 = "I_" + generateRandomString();
+ String indexName2 = "I_" + generateUniqueName();
conn.createStatement().execute("CREATE INDEX " + indexName2 + " ON " + fullTableName + "(k3, k2, s2)");
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE s1 = 'foo'";
conn.createStatement().execute(ddl);
String[] s1Values = {"foo","bar"};
@@ -535,7 +535,7 @@ public class ViewIT extends BaseViewIT {
assertEquals(5, rs.getLong(1));
assertFalse(rs.next());
- String viewIndexName = "I_" + generateRandomString();
+ String viewIndexName = "I_" + generateUniqueName();
conn.createStatement().execute("CREATE INDEX " + viewIndexName + " on " + fullViewName + "(k2)");
String query = "SELECT k2 FROM " + fullViewName + " WHERE k2 IN (100,109) AND k3 IN (1,2) AND s2='bas'";
@@ -562,7 +562,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName + "(v2 VARCHAR, k3 VARCHAR PRIMARY KEY) AS SELECT * FROM " + fullTableName + " WHERE K1 = 1";
conn.createStatement().execute(ddl);
@@ -591,7 +591,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName + "(v2 VARCHAR, k3 VARCHAR, k4 INTEGER NOT NULL, CONSTRAINT PKVEW PRIMARY KEY (k3, k4)) AS SELECT * FROM " + fullTableName + " WHERE K1 = 1";
conn.createStatement().execute(ddl);
@@ -606,7 +606,7 @@ public class ViewIT extends BaseViewIT {
String fullTableName2 = fullTableName;
String ddl = "CREATE TABLE " + fullTableName2 + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
ddl = "ALTER VIEW " + fullViewName + " ADD k3 VARCHAR PRIMARY KEY, k4 VARCHAR PRIMARY KEY, v2 INTEGER";
@@ -622,7 +622,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 VARCHAR NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullViewName1 = "V_" + generateRandomString();
+ String fullViewName1 = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName1 + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
ddl = "ALTER VIEW " + fullViewName1 + " ADD k3 VARCHAR PRIMARY KEY, k4 VARCHAR PRIMARY KEY, v2 INTEGER";
@@ -632,7 +632,7 @@ public class ViewIT extends BaseViewIT {
} catch (SQLException e) {
assertEquals(CANNOT_MODIFY_VIEW_PK.getErrorCode(), e.getErrorCode());
}
- String fullViewName2 = "V_" + generateRandomString();
+ String fullViewName2 = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName2 + " (k3 VARCHAR PRIMARY KEY) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
try {
conn.createStatement().execute(ddl);
@@ -646,7 +646,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
ddl = "ALTER VIEW " + fullViewName + " ADD k3 VARCHAR PRIMARY KEY, k2 VARCHAR PRIMARY KEY, v2 INTEGER";
@@ -658,7 +658,7 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(ddl);
- String fullViewName = "V_" + generateRandomString();
+ String fullViewName = "V_" + generateUniqueName();
ddl = "CREATE VIEW " + fullViewName + " AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0";
conn.createStatement().execute(ddl);
try {
@@ -675,10 +675,10 @@ public class ViewIT extends BaseViewIT {
Connection conn = DriverManager.getConnection(getUrl());
String sql = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions;
conn.createStatement().execute(sql);
- String fullViewName1 = "V_" + generateRandomString();
+ String fullViewName1 = "V_" + generateUniqueName();
sql = "CREATE VIEW " + fullViewName1 + " AS SELECT * FROM " + fullTableName;
conn.createStatement().execute(sql);
- String fullViewName2 = "V_" + generateRandomString();
+ String fullViewName2 = "V_" + generateUniqueName();
sql = "CREATE VIEW " + fullViewName2 + " AS SELECT * FROM " + fullTableName + " WHERE k1 = 1.0";
conn.createStatement().execute(sql);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
index a6228e7..5f02790 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/AsyncIndexDisabledIT.java
@@ -52,8 +52,8 @@ public class AsyncIndexDisabledIT extends ParallelStatsDisabledIT {
try (Connection conn = DriverManager.getConnection(getUrl())) {
conn.setAutoCommit(true);
Statement stmt = conn.createStatement();
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " (pk INTEGER NOT NULL PRIMARY KEY, val VARCHAR)";
stmt.execute(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java
index a0efd52..29ff183 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java
@@ -20,11 +20,11 @@ public class ChildViewsUseParentViewIndexIT extends ParallelStatsDisabledIT {
@Test
public void testIndexOnParentViewWithTenantSpecificConnection() throws Exception {
- final String baseTableName = generateRandomString();
- final String globalViewName = generateRandomString();
- final String globalViewIdxName = generateRandomString();
- final String tenantViewName1 = generateRandomString();
- final String tenantViewName2 = generateRandomString();
+ final String baseTableName = generateUniqueName();
+ final String globalViewName = generateUniqueName();
+ final String globalViewIdxName = generateUniqueName();
+ final String tenantViewName1 = generateUniqueName();
+ final String tenantViewName2 = generateUniqueName();
// Set up props with TenantId
Properties props = new Properties();
@@ -68,11 +68,11 @@ public class ChildViewsUseParentViewIndexIT extends ParallelStatsDisabledIT {
@Test
public void testParentViewIndexWithSpecializedChildViews() throws Exception {
- final String baseTableName = generateRandomString();
- final String parentViewName = generateRandomString();
- final String parentViewIdxName = generateRandomString();
- final String childViewName1 = generateRandomString();
- final String childViewName2 = generateRandomString();
+ final String baseTableName = generateUniqueName();
+ final String parentViewName = generateUniqueName();
+ final String parentViewIdxName = generateUniqueName();
+ final String childViewName1 = generateUniqueName();
+ final String childViewName2 = generateUniqueName();
try (Connection conn = DriverManager.getConnection(getUrl())) {
// create base table
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
index 9ee00d2..8b3c111 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java
@@ -77,7 +77,7 @@ public class DropMetadataIT extends ParallelStatsDisabledIT {
@Test
public void testDropViewKeepsHTable() throws Exception {
HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TEST_PROPERTIES).getAdmin();
- String hbaseNativeViewName = generateRandomString();
+ String hbaseNativeViewName = generateUniqueName();
byte[] hbaseNativeBytes = SchemaUtil.getTableNameAsBytes(HBASE_NATIVE_SCHEMA_NAME, hbaseNativeViewName);
try {
@@ -108,8 +108,8 @@ public class DropMetadataIT extends ParallelStatsDisabledIT {
@Test
public void testDroppingIndexedColDropsIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String indexTableName = generateRandomString();
- String dataTableFullName = SchemaUtil.getTableName(SCHEMA_NAME, generateRandomString());
+ String indexTableName = generateUniqueName();
+ String dataTableFullName = SchemaUtil.getTableName(SCHEMA_NAME, generateUniqueName());
String localIndexTableName1 = "LOCAL_" + indexTableName + "_1";
String localIndexTableName2 = "LOCAL_" + indexTableName + "_2";
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -202,10 +202,10 @@ public class DropMetadataIT extends ParallelStatsDisabledIT {
public void helpTestDroppingIndexedColDropsViewIndex(boolean isMultiTenant) throws Exception {
try (Connection conn = DriverManager.getConnection(getUrl());
Connection viewConn = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL) : conn ) {
- String tableWithView = generateRandomString();
- String viewOfTable = generateRandomString();
- String viewIndex1 = generateRandomString();
- String viewIndex2 = generateRandomString();
+ String tableWithView = generateUniqueName();
+ String viewOfTable = generateUniqueName();
+ String viewIndex1 = generateUniqueName();
+ String viewIndex2 = generateUniqueName();
conn.setAutoCommit(false);
viewConn.setAutoCommit(false);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
index af2ddaa..d3c3085 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java
@@ -73,16 +73,16 @@ public class GlobalIndexOptimizationIT extends ParallelStatsDisabledIT {
@Test
public void testGlobalIndexOptimization() throws Exception {
- String dataTableName = generateRandomString();
- String indexTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexTableName = generateUniqueName();
String dataTableFullName = SchemaUtil.getTableName("", dataTableName);
testOptimization(dataTableName, dataTableFullName, indexTableName, 4);
}
@Test
public void testGlobalIndexOptimizationWithSalting() throws Exception {
- String dataTableName = generateRandomString();
- String indexTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexTableName = generateUniqueName();
String dataTableFullName = SchemaUtil.getTableName("", dataTableName);
testOptimization(dataTableName, dataTableFullName, indexTableName, 4);
@@ -90,15 +90,15 @@ public class GlobalIndexOptimizationIT extends ParallelStatsDisabledIT {
@Test
public void testGlobalIndexOptimizationTenantSpecific() throws Exception {
- String dataTableName = generateRandomString();
- String indexTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexTableName = generateUniqueName();
testOptimizationTenantSpecific(dataTableName, indexTableName, null);
}
@Test
public void testGlobalIndexOptimizationWithSaltingTenantSpecific() throws Exception {
- String dataTableName = generateRandomString();
- String indexTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexTableName = generateUniqueName();
testOptimizationTenantSpecific(dataTableName, indexTableName, 4);
}
@@ -330,11 +330,11 @@ public class GlobalIndexOptimizationIT extends ParallelStatsDisabledIT {
@Test
public void testGlobalIndexOptimizationOnSharedIndex() throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
createBaseTable(dataTableName, null, "('e','i','o')", false);
Connection conn1 = DriverManager.getConnection(getUrl());
- String viewName = generateRandomString();
- String indexOnDataTable = generateRandomString();
+ String viewName = generateUniqueName();
+ String indexOnDataTable = generateUniqueName();
try{
conn1.createStatement().execute("CREATE INDEX " + indexOnDataTable + " ON " + dataTableName + "(k2,k1) INCLUDE (v1)");
conn1.createStatement().execute("CREATE VIEW " + viewName + " AS SELECT * FROM " + dataTableName + " WHERE v1 = 'a'");
@@ -347,7 +347,7 @@ public class GlobalIndexOptimizationIT extends ParallelStatsDisabledIT {
assertTrue(rs.next());
assertEquals(2, rs.getInt(1));
assertFalse(rs.next());
- String viewIndex = generateRandomString();
+ String viewIndex = generateUniqueName();
conn1.createStatement().execute("CREATE INDEX " + viewIndex + " ON " + viewName + " (k1)");
String query = "SELECT /*+ INDEX(" + viewName + " " + viewIndex + ")*/ t_id,k1,k2,k3,v1 FROM " + viewName + " where k1 IN (1,2) and k2 IN (3,4)";
@@ -378,8 +378,8 @@ public class GlobalIndexOptimizationIT extends ParallelStatsDisabledIT {
@Test
public void testNoGlobalIndexOptimization() throws Exception {
- String dataTableName = generateRandomString();
- String indexTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexTableName = generateUniqueName();
String dataTableFullName = SchemaUtil.getTableName("", dataTableName);
createBaseTable(dataTableName, null, "('e','i','o')", false);
Connection conn1 = DriverManager.getConnection(getUrl());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
index ba342eb..e677878 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
@@ -108,14 +108,14 @@ public class ImmutableIndexIT extends BaseOwnClusterIT {
@Test
public void testDropIfImmutableKeyValueColumn() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String ddl =
- "CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ "CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
Statement stmt = conn.createStatement();
stmt.execute(ddl);
populateTestTable(fullTableName);
@@ -155,11 +155,11 @@ public class ImmutableIndexIT extends BaseOwnClusterIT {
}
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(QueryServices.MUTATE_BATCH_SIZE_ATTRIB, Integer.toString(100));
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
TABLE_NAME = fullTableName;
- String ddl ="CREATE TABLE " + TABLE_NAME + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + TABLE_NAME + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
INDEX_DDL = "CREATE " + (localIndex ? "LOCAL" : "") + " INDEX IF NOT EXISTS " + indexName + " ON " + TABLE_NAME
+ " (long_pk, varchar_pk)"
+ " INCLUDE (long_col1, long_col2)";
@@ -242,11 +242,11 @@ public class ImmutableIndexIT extends BaseOwnClusterIT {
@Test
public void testCreateIndexWhileUpsertingData() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
String indexDDL = "CREATE " + (localIndex ? "LOCAL" : "") + " INDEX " + indexName + " ON " + fullTableName
+ " (long_pk, varchar_pk)"
+ " INCLUDE (long_col1, long_col2)";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
index d03b6fa..2ff823a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexWithStatsIT.java
@@ -40,7 +40,7 @@ public class ImmutableIndexWithStatsIT extends ParallelStatsEnabledIT {
String query;
ResultSet rs;
- String tableName = generateRandomString();
+ String tableName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
@@ -62,7 +62,7 @@ public class ImmutableIndexWithStatsIT extends ParallelStatsEnabledIT {
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
assertTrue(QueryUtil.getExplainPlan(rs).startsWith("CLIENT PARALLEL 1-WAY FULL SCAN"));
- String indexName = "I_" + generateRandomString();
+ String indexName = "I_" + generateUniqueName();
conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + tableName + " (v)");
query = "SELECT * FROM " + indexName;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
index 3235c52..50548bd 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
@@ -36,6 +36,7 @@ import org.apache.phoenix.util.DateUtil;
import org.apache.phoenix.util.IndexUtil;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
public class IndexExpressionIT extends ParallelStatsDisabledIT {
@@ -110,14 +111,14 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
private void createDataTable(Connection conn, String dataTableName, String tableProps) throws SQLException {
- String tableDDL = "create table " + dataTableName + TEST_TABLE_SCHEMA + tableProps;
+ String tableDDL = "create table " + dataTableName + TestUtil.TEST_TABLE_SCHEMA + tableProps;
conn.createStatement().execute(tableDDL);
}
protected void helpTestCreateAndUpdate(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -208,17 +209,17 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testMutableIndexUpdate() throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
helpTestUpdate(fullDataTableName, indexName, false);
}
@Test
public void testMutableLocalIndexUpdate() throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
helpTestUpdate(fullDataTableName, indexName, true);
}
@@ -316,9 +317,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestDeleteIndexedExpression(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
String fullIndexTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexName;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -390,9 +391,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestDeleteCoveredCol(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
String fullIndexTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexName;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -472,9 +473,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestGroupByCount(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -528,9 +529,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestSelectDistinct(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -582,9 +583,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestInClauseWithIndex(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -633,9 +634,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestSelectAliasAndOrderByWithIndex(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -688,8 +689,8 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestIndexWithCaseSensitiveCols(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
- String indexName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -798,9 +799,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
}
protected void helpTestSelectColOnlyInDataTable(boolean mutable, boolean localIndex) throws Exception {
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -861,9 +862,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
try {
conn.setAutoCommit(false);
@@ -946,9 +947,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
public void helpTestDropCoveredColumn(boolean mutable, boolean local) throws Exception {
ResultSet rs;
PreparedStatement stmt;
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -1058,9 +1059,9 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
ResultSet rs;
PreparedStatement stmt;
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -1181,11 +1182,11 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
private void helpTestUpdatableViewIndex(boolean local) throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String dataTableName = generateRandomString();
+ String dataTableName = generateUniqueName();
String fullDataTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + dataTableName;
- String indexName1 = generateRandomString();
- String viewName = generateRandomString();
- String indexName2 = generateRandomString();
+ String indexName1 = generateUniqueName();
+ String viewName = generateUniqueName();
+ String indexName2 = generateUniqueName();
try {
String ddl = "CREATE TABLE " + dataTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, k3 DECIMAL, s1 VARCHAR, s2 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2, k3))";
conn.createStatement().execute(ddl);
@@ -1247,10 +1248,10 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl());
try
{
- String dataTableName = generateRandomString();
- String indexName1 = generateRandomString();
- String viewName = generateRandomString();
- String indexName2 = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexName1 = generateUniqueName();
+ String viewName = generateUniqueName();
+ String indexName2 = generateUniqueName();
ResultSet rs;
String ddl = "CREATE TABLE " + dataTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, s1 VARCHAR, s2 VARCHAR, s3 VARCHAR, s4 VARCHAR CONSTRAINT pk PRIMARY KEY (k1, k2))";
conn.createStatement().execute(ddl);
@@ -1300,8 +1301,8 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
@Test
public void testExpressionThrowsException() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String dataTableName = generateRandomString();
- String indexName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexName = generateUniqueName();
try {
String ddl = "CREATE TABLE " + dataTableName + " (k1 INTEGER PRIMARY KEY, k2 INTEGER)";
conn.createStatement().execute(ddl);
@@ -1344,8 +1345,8 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
boolean localIndex) throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String dataTableName = generateRandomString();
- String indexName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexName = generateUniqueName();
try {
conn.createStatement().execute(
"CREATE TABLE " + dataTableName + " (k VARCHAR NOT NULL PRIMARY KEY, v VARCHAR) "
@@ -1417,8 +1418,8 @@ public class IndexExpressionIT extends ParallelStatsDisabledIT {
boolean localIndex) throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String dataTableName = generateRandomString();
- String indexName = generateRandomString();
+ String dataTableName = generateUniqueName();
+ String indexName = generateUniqueName();
try {
conn.createStatement().execute(
"CREATE TABLE " + dataTableName + " ("
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
index 2e07aef..e2bc873 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
@@ -124,13 +124,13 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testIndexWithNullableFixedWithCols() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
Statement stmt = conn.createStatement();
stmt.execute(ddl);
BaseTest.populateTestTable(fullTableName);
@@ -184,13 +184,13 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testDeleteFromAllPKColumnIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
Statement stmt = conn.createStatement();
stmt.execute(ddl);
BaseTest.populateTestTable(fullTableName);
@@ -242,8 +242,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testCreateIndexAfterUpsertStarted() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
testCreateIndexAfterUpsertStarted(false, fullTableName + "1", fullIndexName + "1");
@@ -256,7 +256,7 @@ public class IndexIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn1 = DriverManager.getConnection(getUrl(), props)) {
conn1.setAutoCommit(true);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
Statement stmt1 = conn1.createStatement();
stmt1.execute(ddl);
BaseTest.populateTestTable(fullTableName);
@@ -343,12 +343,12 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testDeleteFromNonPKColumnIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
@@ -398,12 +398,12 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testGroupByCount() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
Statement stmt = conn.createStatement();
stmt.execute(ddl);
BaseTest.populateTestTable(fullTableName);
@@ -419,12 +419,12 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testSelectDistinctOnTableWithSecondaryImmutableIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
Statement stmt = conn.createStatement();
stmt.execute(ddl);
BaseTest.populateTestTable(fullTableName);
@@ -445,12 +445,12 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testInClauseWithIndexOnColumnOfUsignedIntType() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
Statement stmt = conn.createStatement();
stmt.execute(ddl);
BaseTest.populateTestTable(fullTableName);
@@ -470,8 +470,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void createIndexOnTableWithSpecifiedDefaultCF() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -512,8 +512,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testIndexWithNullableDateCol() throws Exception {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
@@ -572,8 +572,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testSelectAllAndAliasWithIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -651,8 +651,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testSelectCF() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -712,8 +712,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testUpsertAfterIndexDrop() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -776,8 +776,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testMultipleUpdatesAcrossRegions() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
@@ -869,8 +869,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testIndexWithCaseSensitiveCols() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -984,8 +984,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testInFilterOnIndexedTable() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
@@ -1005,8 +1005,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
@Test
public void testIndexWithDecimalCol() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
@@ -1052,8 +1052,8 @@ public class IndexIT extends ParallelStatsDisabledIT {
*/
@Test
public void testTableDescriptorPriority() throws SQLException, IOException {
- String tableName = "TBL_" + generateRandomString();
- String indexName = "IND_" + generateRandomString();
+ String tableName = "TBL_" + generateUniqueName();
+ String indexName = "IND_" + generateUniqueName();
String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
// Check system tables priorities.
try (HBaseAdmin admin = driver.getConnectionQueryServices(null, null).getAdmin()) {
@@ -1067,7 +1067,7 @@ public class IndexIT extends ParallelStatsDisabledIT {
}
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
+ String ddl ="CREATE TABLE " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + tableDDLOptions;
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
index 3372b6a..f0c670b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
@@ -50,6 +50,7 @@ import org.apache.phoenix.schema.types.PDate;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.StringUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
@@ -119,11 +120,11 @@ public class IndexMetadataIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String indexDataTable = generateRandomString();
+ String indexDataTable = generateUniqueName();
String fullIndexDataTable = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
- String indexName = generateRandomString();
+ String indexName = generateUniqueName();
try {
- String tableDDL = "create table " + fullIndexDataTable + TEST_TABLE_SCHEMA;
+ String tableDDL = "create table " + fullIndexDataTable + TestUtil.TEST_TABLE_SCHEMA;
conn.createStatement().execute(tableDDL);
String ddl = "CREATE INDEX " + indexName + " ON " + fullIndexDataTable
+ " (varchar_col1 ASC, varchar_col2 ASC, int_pk DESC)"
@@ -296,12 +297,12 @@ public class IndexMetadataIT extends ParallelStatsDisabledIT {
// column. The definition is defined in IndexUtil.getIndexColumnDataType.
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
- String indexDataTable = generateRandomString();
- String indexName = generateRandomString();
+ String indexDataTable = generateUniqueName();
+ String indexName = generateUniqueName();
conn.setAutoCommit(false);
try {
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
String ddl = "CREATE INDEX " + indexName + " ON " + fullTableName
+ " (char_col1 ASC, int_col2 ASC, long_col2 DESC)"
+ " INCLUDE (int_col1)";
@@ -359,10 +360,10 @@ public class IndexMetadataIT extends ParallelStatsDisabledIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
String indexName = "\"lowerCaseIndex\"";
- String indexDataTable = generateRandomString();
+ String indexDataTable = generateUniqueName();
try {
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
String ddl = "CREATE INDEX " + indexName + " ON " + fullTableName
+ " (char_col1 ASC, int_col2 ASC, long_col2 DESC)"
+ " INCLUDE (int_col1)";
@@ -394,11 +395,11 @@ public class IndexMetadataIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String indexDataTable = generateRandomString();
- String indexName = generateRandomString();
+ String indexDataTable = generateUniqueName();
+ String indexName = generateUniqueName();
try {
String fullTableName = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
- conn.createStatement().execute("create table " + fullTableName + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
+ conn.createStatement().execute("create table " + fullTableName + TestUtil.TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
String ddl = "CREATE INDEX " + indexName + " ON " + fullTableName
+ " (a.int_col1, a.long_col1, b.int_col2, b.long_col2)"
+ " INCLUDE(int_col1, int_col2)";
@@ -456,8 +457,8 @@ public class IndexMetadataIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String testTable = generateRandomString();
- String indexName = generateRandomString();
+ String testTable = generateUniqueName();
+ String indexName = generateUniqueName();
String ddl = "create table " + testTable + " (char_pk varchar not null,"
+ " a.int_col integer, a.long_col integer,"
+ " b.int_col integer, b.long_col integer"
@@ -483,8 +484,8 @@ public class IndexMetadataIT extends ParallelStatsDisabledIT {
@Test
public void testBinaryNonnullableIndex() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
- String testTable = generateRandomString();
- String indexName = generateRandomString();
+ String testTable = generateUniqueName();
+ String indexName = generateUniqueName();
try {
String ddl =
"CREATE TABLE " + testTable + " ( "
@@ -533,13 +534,13 @@ public class IndexMetadataIT extends ParallelStatsDisabledIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String testTable = generateRandomString();
+ String testTable = generateUniqueName();
String ddl = "create table " + testTable + " (k varchar primary key, v1 varchar, v2 varchar, v3 varchar)";
PreparedStatement stmt = conn.prepareStatement(ddl);
stmt.execute();
- String indexName = "ASYNCIND_" + generateRandomString();
+ String indexName = "ASYNCIND_" + generateUniqueName();
ddl = "CREATE INDEX " + indexName + "1 ON " + testTable + " (v1) ASYNC";
stmt = conn.prepareStatement(ddl);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/bebb5ced/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
index 9a279bb..214b7ba 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
@@ -80,7 +80,7 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Before
public void setup() {
- schemaName = BaseTest.generateRandomString();
+ schemaName = BaseTest.generateUniqueName();
}
private void createBaseTable(String tableName, Integer saltBuckets, String splits) throws SQLException {
@@ -107,8 +107,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexRoundTrip() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
createBaseTable(tableName, null, null);
@@ -131,8 +131,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexCreationWithSplitsShouldFail() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
createBaseTable(tableName, null, null);
Connection conn1 = getConnection();
@@ -150,8 +150,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexCreationWithSaltingShouldFail() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
createBaseTable(tableName, null, null);
Connection conn1 = getConnection();
@@ -169,8 +169,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexTableRegionSplitPolicyAndSplitKeys() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
String indexPhysicalTableName = physicalTableName.getNameAsString();
@@ -200,8 +200,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testDropLocalIndexTable() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
createBaseTable(tableName, null, null);
String sequenceName = getViewIndexSequenceName(PNameFactory.newName(tableName), null, isNamespaceMapped);
@@ -219,8 +219,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testPutsToLocalIndexTable() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
String indexPhysicalTableName = physicalTableName.getNameAsString();
@@ -259,8 +259,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testBuildIndexWhenUserTableAlreadyHasData() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
String indexPhysicalTableName = physicalTableName.getNameAsString();
@@ -299,8 +299,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexScan() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
String indexPhysicalTableName = physicalTableName.getNameAsString();
@@ -437,8 +437,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
String indexPhysicalTableName = physicalTableName.getNameAsString();
@@ -577,8 +577,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testIndexPlanSelectionIfBothGlobalAndLocalIndexesHasSameColumnsAndOrder() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
createBaseTable(tableName, null, "('e','i','o')");
@@ -601,8 +601,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testDropLocalIndexShouldDeleteDataFromLocalIndexTable() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
@@ -646,8 +646,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexRowsShouldBeDeletedWhenUserTableRowsDeleted() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
createBaseTable(tableName, null, "('e','i','o')");
@@ -672,8 +672,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testScanWhenATableHasMultipleLocalIndexes() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
@@ -697,8 +697,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexesOnTableWithImmutableRows() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = getConnection();
@@ -743,8 +743,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexScanWithInList() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
String indexTableName = schemaName + "." + indexName;
createBaseTable(tableName, null, "('e','i','o')");
@@ -777,8 +777,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
Connection conn1 = DriverManager.getConnection(getUrl());
try{
Statement statement = conn1.createStatement();
- String tableName = generateRandomString();
- String indexName = generateRandomString();
+ String tableName = generateUniqueName();
+ String indexName = generateUniqueName();
statement.execute("create table " + tableName + " (id integer not null,fn varchar,"
+ "ln varchar constraint pk primary key(id)) DEFAULT_COLUMN_FAMILY='F'");
statement.execute("upsert into " + tableName + " values(1,'fn','ln')");
@@ -794,8 +794,8 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
@Test
public void testLocalIndexScanWithSmallChunks() throws Exception {
- String tableName = schemaName + "." + generateRandomString();
- String indexName = "IDX_" + generateRandomString();
+ String tableName = schemaName + "." + generateUniqueName();
+ String indexName = "IDX_" + generateUniqueName();
createBaseTable(tableName, 3, null);
Properties props = new Properties();
[31/48] phoenix git commit: PHOENIX-3331 Bug in calculating
minDisabledTimestamp for a batch
Posted by ma...@apache.org.
PHOENIX-3331 Bug in calculating minDisabledTimestamp for a batch
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/6f9cca43
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/6f9cca43
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/6f9cca43
Branch: refs/heads/calcite
Commit: 6f9cca433d8acad980d98f3c0e31dea1d7e4e743
Parents: 3032a6f
Author: Ankit Singhal <an...@gmail.com>
Authored: Thu Sep 29 15:18:41 2016 +0530
Committer: Ankit Singhal <an...@gmail.com>
Committed: Thu Sep 29 15:18:41 2016 +0530
----------------------------------------------------------------------
.../java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/6f9cca43/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java
index c29d7b4..eb73d6b 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java
@@ -129,7 +129,7 @@ public class PhoenixIndexFailurePolicy extends DelegateIndexFailurePolicy {
for (Mutation m : mutations) {
for (List<Cell> kvs : m.getFamilyCellMap().values()) {
for (Cell kv : kvs) {
- if (minTimeStamp == 0 || (kv.getTimestamp() >= 0 && minTimeStamp < kv.getTimestamp())) {
+ if (minTimeStamp == 0 || (kv.getTimestamp() >= 0 && minTimeStamp > kv.getTimestamp())) {
minTimeStamp = kv.getTimestamp();
}
}
[34/48] phoenix git commit: PHOENIX-3338 Move flapping test into test
class marked as NotThreadSafe
Posted by ma...@apache.org.
PHOENIX-3338 Move flapping test into test class marked as NotThreadSafe
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2895835a
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2895835a
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2895835a
Branch: refs/heads/calcite
Commit: 2895835a8e082e4de3dd5c601ae0003d77431b33
Parents: 655fe2b
Author: James Taylor <ja...@apache.org>
Authored: Thu Sep 29 17:30:37 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Thu Sep 29 17:30:37 2016 -0700
----------------------------------------------------------------------
.../phoenix/tx/NotThreadSafeTransactionIT.java | 138 +++++++++++++++++++
.../org/apache/phoenix/tx/TransactionIT.java | 126 -----------------
2 files changed, 138 insertions(+), 126 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2895835a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
index b50f424..e0005e4 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/NotThreadSafeTransactionIT.java
@@ -18,21 +18,38 @@
package org.apache.phoenix.tx;
import static org.apache.phoenix.util.TestUtil.INDEX_DATA_SCHEMA;
+import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.apache.phoenix.util.TestUtil.createTransactionalTable;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
import javax.annotation.concurrent.NotThreadSafe;
+import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.exception.SQLExceptionCode;
+import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.TestUtil;
+import org.apache.tephra.TransactionContext;
+import org.apache.tephra.TransactionSystemClient;
+import org.apache.tephra.TxConstants;
+import org.apache.tephra.hbase.TransactionAwareHTable;
import org.junit.Test;
/**
@@ -190,4 +207,125 @@ public class NotThreadSafeTransactionIT extends ParallelStatsDisabledIT {
}
}
+ @Test
+ public void testExternalTxContext() throws Exception {
+ ResultSet rs;
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ conn.setAutoCommit(false);
+ String fullTableName = generateUniqueName();
+ PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
+
+ TransactionSystemClient txServiceClient = pconn.getQueryServices().getTransactionSystemClient();
+
+ Statement stmt = conn.createStatement();
+ stmt.execute("CREATE TABLE " + fullTableName + "(K VARCHAR PRIMARY KEY, V1 VARCHAR, V2 VARCHAR) TRANSACTIONAL=true");
+ HTableInterface htable = pconn.getQueryServices().getTable(Bytes.toBytes(fullTableName));
+ stmt.executeUpdate("upsert into " + fullTableName + " values('x', 'a', 'a')");
+ conn.commit();
+
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1,rs.getInt(1));
+ }
+
+ // Use HBase level Tephra APIs to start a new transaction
+ TransactionAwareHTable txAware = new TransactionAwareHTable(htable, TxConstants.ConflictDetection.ROW);
+ TransactionContext txContext = new TransactionContext(txServiceClient, txAware);
+ txContext.start();
+
+ // Use HBase APIs to add a new row
+ Put put = new Put(Bytes.toBytes("z"));
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("b"));
+ txAware.put(put);
+
+ // Use Phoenix APIs to add new row (sharing the transaction context)
+ pconn.setTransactionContext(txContext);
+ conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('y', 'c', 'c')");
+
+ // New connection should not see data as it hasn't been committed yet
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(1,rs.getInt(1));
+ }
+
+ // Use new connection to create a row with a conflict
+ Connection connWithConflict = DriverManager.getConnection(getUrl(), props);
+ connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('z', 'd', 'd')");
+
+ // Existing connection should see data even though it hasn't been committed yet
+ rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(3,rs.getInt(1));
+
+ // Use Tephra APIs directly to finish (i.e. commit) the transaction
+ txContext.finish();
+
+ // Confirm that attempt to commit row with conflict fails
+ try {
+ connWithConflict.commit();
+ fail();
+ } catch (SQLException e) {
+ assertEquals(SQLExceptionCode.TRANSACTION_CONFLICT_EXCEPTION.getErrorCode(), e.getErrorCode());
+ } finally {
+ connWithConflict.close();
+ }
+
+ // New connection should now see data as it has been committed
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(3,rs.getInt(1));
+ }
+
+ // Repeat the same as above, but this time abort the transaction
+ txContext = new TransactionContext(txServiceClient, txAware);
+ txContext.start();
+
+ // Use HBase APIs to add a new row
+ put = new Put(Bytes.toBytes("j"));
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("e"));
+ txAware.put(put);
+
+ // Use Phoenix APIs to add new row (sharing the transaction context)
+ pconn.setTransactionContext(txContext);
+ conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('k', 'f', 'f')");
+
+ // Existing connection should see data even though it hasn't been committed yet
+ rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(5,rs.getInt(1));
+
+ connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('k', 'g', 'g')");
+ rs = connWithConflict.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(4,rs.getInt(1));
+
+ // Use Tephra APIs directly to abort (i.e. rollback) the transaction
+ txContext.abort();
+
+ rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(3,rs.getInt(1));
+
+ // Should succeed since conflicting row was aborted
+ connWithConflict.commit();
+
+ // New connection should now see data as it has been committed
+ try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
+ rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
+ assertTrue(rs.next());
+ assertEquals(4,rs.getInt(1));
+ }
+
+ // Even using HBase APIs directly, we shouldn't find 'j' since a delete marker would have been
+ // written to hide it.
+ Result result = htable.get(new Get(Bytes.toBytes("j")));
+ assertTrue(result.isEmpty());
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2895835a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
index 809225a..2e45d5a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
@@ -38,11 +38,9 @@ import java.util.Properties;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.coprocessor.PhoenixTransactionalProcessor;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
@@ -59,10 +57,7 @@ import org.apache.phoenix.util.ByteUtil;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.StringUtil;
import org.apache.phoenix.util.TestUtil;
-import org.apache.tephra.TransactionContext;
-import org.apache.tephra.TransactionSystemClient;
import org.apache.tephra.TxConstants;
-import org.apache.tephra.hbase.TransactionAwareHTable;
import org.junit.Ignore;
import org.junit.Test;
@@ -562,127 +557,6 @@ public class TransactionIT extends ParallelStatsDisabledIT {
}
@Test
- public void testExternalTxContext() throws Exception {
- ResultSet rs;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- conn.setAutoCommit(false);
- String fullTableName = generateUniqueName();
- PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
-
- TransactionSystemClient txServiceClient = pconn.getQueryServices().getTransactionSystemClient();
-
- Statement stmt = conn.createStatement();
- stmt.execute("CREATE TABLE " + fullTableName + "(K VARCHAR PRIMARY KEY, V1 VARCHAR, V2 VARCHAR) TRANSACTIONAL=true");
- HTableInterface htable = pconn.getQueryServices().getTable(Bytes.toBytes(fullTableName));
- stmt.executeUpdate("upsert into " + fullTableName + " values('x', 'a', 'a')");
- conn.commit();
-
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1,rs.getInt(1));
- }
-
- // Use HBase level Tephra APIs to start a new transaction
- TransactionAwareHTable txAware = new TransactionAwareHTable(htable, TxConstants.ConflictDetection.ROW);
- TransactionContext txContext = new TransactionContext(txServiceClient, txAware);
- txContext.start();
-
- // Use HBase APIs to add a new row
- Put put = new Put(Bytes.toBytes("z"));
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("b"));
- txAware.put(put);
-
- // Use Phoenix APIs to add new row (sharing the transaction context)
- pconn.setTransactionContext(txContext);
- conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('y', 'c', 'c')");
-
- // New connection should not see data as it hasn't been committed yet
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(1,rs.getInt(1));
- }
-
- // Use new connection to create a row with a conflict
- Connection connWithConflict = DriverManager.getConnection(getUrl(), props);
- connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('z', 'd', 'd')");
-
- // Existing connection should see data even though it hasn't been committed yet
- rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(3,rs.getInt(1));
-
- // Use Tephra APIs directly to finish (i.e. commit) the transaction
- txContext.finish();
-
- // Confirm that attempt to commit row with conflict fails
- try {
- connWithConflict.commit();
- fail();
- } catch (SQLException e) {
- assertEquals(SQLExceptionCode.TRANSACTION_CONFLICT_EXCEPTION.getErrorCode(), e.getErrorCode());
- } finally {
- connWithConflict.close();
- }
-
- // New connection should now see data as it has been committed
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(3,rs.getInt(1));
- }
-
- // Repeat the same as above, but this time abort the transaction
- txContext = new TransactionContext(txServiceClient, txAware);
- txContext.start();
-
- // Use HBase APIs to add a new row
- put = new Put(Bytes.toBytes("j"));
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, QueryConstants.EMPTY_COLUMN_BYTES, QueryConstants.EMPTY_COLUMN_VALUE_BYTES);
- put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, Bytes.toBytes("V1"), Bytes.toBytes("e"));
- txAware.put(put);
-
- // Use Phoenix APIs to add new row (sharing the transaction context)
- pconn.setTransactionContext(txContext);
- conn.createStatement().executeUpdate("upsert into " + fullTableName + " values('k', 'f', 'f')");
-
- // Existing connection should see data even though it hasn't been committed yet
- rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(5,rs.getInt(1));
-
- connWithConflict.createStatement().execute("upsert into " + fullTableName + " values('k', 'g', 'g')");
- rs = connWithConflict.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(4,rs.getInt(1));
-
- // Use Tephra APIs directly to abort (i.e. rollback) the transaction
- txContext.abort();
-
- rs = conn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(3,rs.getInt(1));
-
- // Should succeed since conflicting row was aborted
- connWithConflict.commit();
-
- // New connection should now see data as it has been committed
- try (Connection newConn = DriverManager.getConnection(getUrl(), props)) {
- rs = newConn.createStatement().executeQuery("select count(*) from " + fullTableName);
- assertTrue(rs.next());
- assertEquals(4,rs.getInt(1));
- }
-
- // Even using HBase APIs directly, we shouldn't find 'j' since a delete marker would have been
- // written to hide it.
- Result result = htable.get(new Get(Bytes.toBytes("j")));
- assertTrue(result.isEmpty());
- }
-
- @Test
public void testCheckpointAndRollback() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
[10/48] phoenix git commit: PHOENIX-3314 Ignore
ImmutableIndexIT.testDropIfImmutableKeyValueColumn
Posted by ma...@apache.org.
PHOENIX-3314 Ignore ImmutableIndexIT.testDropIfImmutableKeyValueColumn
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f50b5eca
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f50b5eca
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f50b5eca
Branch: refs/heads/calcite
Commit: f50b5eca6da7fe0e790825985d57393eb93a681e
Parents: ad07077
Author: James Taylor <ja...@apache.org>
Authored: Thu Sep 22 00:36:11 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Thu Sep 22 00:36:11 2016 -0700
----------------------------------------------------------------------
.../it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f50b5eca/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
index 40faaf4..7d4b91d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
@@ -57,6 +57,7 @@ import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -106,6 +107,7 @@ public class ImmutableIndexIT extends BaseOwnClusterIT {
}
@Test
+ @Ignore
public void testDropIfImmutableKeyValueColumn() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String tableName = "TBL_" + generateRandomString();
[33/48] phoenix git commit: PHOENIX-3254 IndexId Sequence is
incremented even if index exists already.
Posted by ma...@apache.org.
PHOENIX-3254 IndexId Sequence is incremented even if index exists already.
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/655fe2be
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/655fe2be
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/655fe2be
Branch: refs/heads/calcite
Commit: 655fe2be3d30f2b8277563920c15a357eb74bcde
Parents: 15a2f9a
Author: Ankit Singhal <an...@gmail.com>
Authored: Thu Sep 29 23:04:28 2016 +0530
Committer: Ankit Singhal <an...@gmail.com>
Committed: Thu Sep 29 23:04:28 2016 +0530
----------------------------------------------------------------------
.../phoenix/end2end/AppendOnlySchemaIT.java | 2 +-
.../end2end/TenantSpecificViewIndexIT.java | 12 +-
.../phoenix/end2end/index/LocalIndexIT.java | 5 +-
.../phoenix/end2end/index/ViewIndexIT.java | 9 +-
.../coprocessor/MetaDataEndpointImpl.java | 53 +++
.../phoenix/coprocessor/MetaDataProtocol.java | 17 +
.../coprocessor/generated/MetaDataProtos.java | 353 ++++++++++++++-----
.../phoenix/query/ConnectionQueryServices.java | 2 +-
.../query/ConnectionQueryServicesImpl.java | 7 +-
.../query/ConnectionlessQueryServicesImpl.java | 8 +-
.../query/DelegateConnectionQueryServices.java | 4 +-
.../apache/phoenix/schema/MetaDataClient.java | 88 ++---
.../TenantSpecificViewIndexCompileTest.java | 4 +-
.../java/org/apache/phoenix/query/BaseTest.java | 15 +-
phoenix-protocol/src/main/MetaDataService.proto | 3 +
15 files changed, 413 insertions(+), 169 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
index ed9fa74..93341b7 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AppendOnlySchemaIT.java
@@ -114,7 +114,7 @@ public class AppendOnlySchemaIT extends ParallelStatsDisabledIT {
// verify no create table rpcs
verify(connectionQueryServices, never()).createTable(anyListOf(Mutation.class),
any(byte[].class), any(PTableType.class), anyMap(), anyList(), any(byte[][].class),
- eq(false));
+ eq(false), eq(false));
reset(connectionQueryServices);
// execute alter table ddl that adds the same column
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
index f47e078..b7b8902 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java
@@ -28,12 +28,9 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.Properties;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.ColumnNotFoundException;
import org.apache.phoenix.schema.PNameFactory;
@@ -42,7 +39,6 @@ import org.apache.phoenix.util.MetaDataUtil;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.SchemaUtil;
-import org.junit.Ignore;
import org.junit.Test;
@@ -126,8 +122,8 @@ public class TenantSpecificViewIndexIT extends BaseTenantSpecificViewIndexIT {
String sequenceNameA = getViewIndexSequenceName(PNameFactory.newName(tableName), PNameFactory.newName("a"), isNamespaceEnabled);
String sequenceNameB = getViewIndexSequenceName(PNameFactory.newName(tableName), PNameFactory.newName("b"), isNamespaceEnabled);
String sequenceSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(tableName), isNamespaceEnabled);
- verifySequence(isNamespaceEnabled? "a" : null, sequenceNameA, sequenceSchemaName, true);
- verifySequence(isNamespaceEnabled? "b" : null, sequenceNameB, sequenceSchemaName, true);
+ verifySequenceValue(isNamespaceEnabled? "a" : null, sequenceNameA, sequenceSchemaName, -32767);
+ verifySequenceValue(isNamespaceEnabled? "b" : null, sequenceNameB, sequenceSchemaName, -32767);
Properties props = new Properties();
props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, "a");
@@ -140,8 +136,8 @@ public class TenantSpecificViewIndexIT extends BaseTenantSpecificViewIndexIT {
}
DriverManager.getConnection(getUrl()).createStatement().execute("DROP TABLE " + tableName + " CASCADE");
- verifySequence(isNamespaceEnabled? "a" : null, sequenceNameA, sequenceSchemaName, false);
- verifySequence(isNamespaceEnabled? "b" : null, sequenceNameB, sequenceSchemaName, false);
+ verifySequenceNotExists(isNamespaceEnabled? "a" : null, sequenceNameA, sequenceSchemaName);
+ verifySequenceNotExists(isNamespaceEnabled? "b" : null, sequenceNameB, sequenceSchemaName);
}
private void createViewAndIndexesWithTenantId(String tableName,String baseViewName, boolean localIndex, String tenantId,
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
index 9d3da8e..234a466 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
@@ -210,11 +210,10 @@ public class LocalIndexIT extends ParallelStatsDisabledIT {
Connection conn1 = getConnection();
Connection conn2 = getConnection();
conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
- verifySequence(null, sequenceName, sequenceSchemaName, true);
+ verifySequenceValue(null, sequenceName, sequenceSchemaName,-32767);
conn2.createStatement().executeQuery("SELECT * FROM " + tableName).next();
conn1.createStatement().execute("DROP TABLE "+ tableName);
-
- verifySequence(null, sequenceName, sequenceSchemaName, false);
+ verifySequenceNotExists(null, sequenceName, sequenceSchemaName);
}
@Test
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
index 1abbc87..ca50aab 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java
@@ -108,14 +108,17 @@ public class ViewIndexIT extends ParallelStatsDisabledIT {
String sequenceSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(tableName), isNamespaceMapped);
String seqName = getViewIndexSequenceName(PNameFactory.newName(tableName), null, !isNamespaceMapped);
String seqSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(tableName), !isNamespaceMapped);
- verifySequence(null, sequenceName, sequenceSchemaName, true);
+ verifySequenceValue(null, sequenceName, sequenceSchemaName, -32767);
+ verifySequenceValue(null, sequenceName, sequenceSchemaName, -32767);
+ conn1.createStatement().execute("CREATE INDEX " + indexName + "_2 ON " + viewName + " (v1)");
+ verifySequenceValue(null, sequenceName, sequenceSchemaName, -32766);
// Check other format of sequence is not there as Sequences format is different for views/indexes created on
// table which are namespace mapped and which are not.
- verifySequence(null, seqName, seqSchemaName, false);
+ verifySequenceNotExists(null, seqName, seqSchemaName);
conn1.createStatement().execute("DROP VIEW " + viewName);
conn1.createStatement().execute("DROP TABLE "+ tableName);
- verifySequence(null, sequenceName, sequenceSchemaName, false);
+ verifySequenceNotExists(null, sequenceName, sequenceSchemaName);
}
@Test
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
index 142f700..65da298 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
@@ -195,6 +195,9 @@ import org.apache.phoenix.schema.PTable.LinkType;
import org.apache.phoenix.schema.PTable.ViewType;
import org.apache.phoenix.schema.PTableImpl;
import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.SequenceAllocation;
+import org.apache.phoenix.schema.SequenceAlreadyExistsException;
+import org.apache.phoenix.schema.SequenceKey;
import org.apache.phoenix.schema.SequenceNotFoundException;
import org.apache.phoenix.schema.SortOrder;
import org.apache.phoenix.schema.TableNotFoundException;
@@ -1499,6 +1502,53 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso
cell.getTimestamp(), Type.codeToType(cell.getTypeByte()), bytes);
cells.add(viewConstantCell);
}
+ Short indexId = null;
+ if (request.hasAllocateIndexId() && request.getAllocateIndexId()) {
+ String tenantIdStr = tenantIdBytes.length == 0 ? null : Bytes.toString(tenantIdBytes);
+ final Properties props = new Properties();
+ UpgradeUtil.doNotUpgradeOnFirstConnection(props);
+ try (PhoenixConnection connection = DriverManager.getConnection(MetaDataUtil.getJdbcUrl(env), props).unwrap(PhoenixConnection.class)){
+ PName physicalName = parentTable.getPhysicalName();
+ int nSequenceSaltBuckets = connection.getQueryServices().getSequenceSaltBuckets();
+ SequenceKey key = MetaDataUtil.getViewIndexSequenceKey(tenantIdStr, physicalName,
+ nSequenceSaltBuckets, parentTable.isNamespaceMapped() );
+ // TODO Review Earlier sequence was created at (SCN-1/LATEST_TIMESTAMP) and incremented at the client max(SCN,dataTable.getTimestamp), but it seems we should
+ // use always LATEST_TIMESTAMP to avoid seeing wrong sequence values by different connection having SCN
+ // or not.
+ long sequenceTimestamp = HConstants.LATEST_TIMESTAMP;
+ try {
+ connection.getQueryServices().createSequence(key.getTenantId(), key.getSchemaName(), key.getSequenceName(),
+ Short.MIN_VALUE, 1, 1, Long.MIN_VALUE, Long.MAX_VALUE, false, sequenceTimestamp);
+ } catch (SequenceAlreadyExistsException e) {
+ }
+ long[] seqValues = new long[1];
+ SQLException[] sqlExceptions = new SQLException[1];
+ connection.getQueryServices().incrementSequences(Collections.singletonList(new SequenceAllocation(key, 1)),
+ HConstants.LATEST_TIMESTAMP, seqValues, sqlExceptions);
+ if (sqlExceptions[0] != null) {
+ throw sqlExceptions[0];
+ }
+ long seqValue = seqValues[0];
+ if (seqValue > Short.MAX_VALUE) {
+ builder.setReturnCode(MetaDataProtos.MutationCode.TOO_MANY_INDEXES);
+ builder.setMutationTime(EnvironmentEdgeManager.currentTimeMillis());
+ done.run(builder.build());
+ return;
+ }
+ Put tableHeaderPut = MetaDataUtil.getPutOnlyTableHeaderRow(tableMetadata);
+ NavigableMap<byte[], List<Cell>> familyCellMap = tableHeaderPut.getFamilyCellMap();
+ List<Cell> cells = familyCellMap.get(TABLE_FAMILY_BYTES);
+ Cell cell = cells.get(0);
+ PDataType dataType = MetaDataUtil.getViewIndexIdDataType();
+ Object val = dataType.toObject(seqValue, PLong.INSTANCE);
+ byte[] bytes = new byte [dataType.getByteSize() + 1];
+ dataType.toBytes(val, bytes, 0);
+ Cell indexIdCell = new KeyValue(cell.getRow(), cell.getFamily(), VIEW_INDEX_ID_BYTES,
+ cell.getTimestamp(), Type.codeToType(cell.getTypeByte()), bytes);
+ cells.add(indexIdCell);
+ indexId = (short) seqValue;
+ }
+ }
// TODO: Switch this to HRegion#batchMutate when we want to support indexes on the
// system table. Basically, we get all the locks that we don't already hold for all the
@@ -1518,6 +1568,9 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso
// Get timeStamp from mutations - the above method sets it if it's unset
long currentTimeStamp = MetaDataUtil.getClientTimeStamp(tableMetadata);
builder.setReturnCode(MetaDataProtos.MutationCode.TABLE_NOT_FOUND);
+ if (indexId != null) {
+ builder.setViewIndexId(indexId);
+ }
builder.setMutationTime(currentTimeStamp);
done.run(builder.build());
return;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
index 3b57981..bb720ee 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
@@ -130,6 +130,7 @@ public abstract class MetaDataProtocol extends MetaDataService {
UNALLOWED_SCHEMA_MUTATION,
AUTO_PARTITION_SEQUENCE_NOT_FOUND,
CANNOT_COERCE_AUTO_PARTITION_ID,
+ TOO_MANY_INDEXES,
NO_OP
};
@@ -208,6 +209,7 @@ public abstract class MetaDataProtocol extends MetaDataService {
private byte[] familyName;
private boolean wasUpdated;
private PSchema schema;
+ private Short viewIndexId;
private List<PFunction> functions = new ArrayList<PFunction>(1);
private long autoPartitionNum;
@@ -253,6 +255,11 @@ public abstract class MetaDataProtocol extends MetaDataService {
this.tableNamesToDelete = tableNamesToDelete;
}
+ public MetaDataMutationResult(MutationCode returnCode, int currentTime, PTable table, int viewIndexId) {
+ this(returnCode, currentTime, table, Collections.<byte[]> emptyList());
+ this.viewIndexId = (short)viewIndexId;
+ }
+
public MetaDataMutationResult(MutationCode returnCode, long currentTime, PTable table, List<byte[]> tableNamesToDelete, List<SharedTableState> sharedTablesToDelete) {
this(returnCode, currentTime, table, tableNamesToDelete);
this.sharedTablesToDelete = sharedTablesToDelete;
@@ -305,6 +312,10 @@ public abstract class MetaDataProtocol extends MetaDataService {
public long getAutoPartitionNum() {
return autoPartitionNum;
}
+
+ public Short getViewIndexId() {
+ return viewIndexId;
+ }
public static MetaDataMutationResult constructFromProto(MetaDataResponse proto) {
MetaDataMutationResult result = new MetaDataMutationResult();
@@ -347,6 +358,9 @@ public abstract class MetaDataProtocol extends MetaDataService {
if (proto.hasAutoPartitionNum()) {
result.autoPartitionNum = proto.getAutoPartitionNum();
}
+ if (proto.hasViewIndexId()) {
+ result.viewIndexId = (short)proto.getViewIndexId();
+ }
return result;
}
@@ -394,6 +408,9 @@ public abstract class MetaDataProtocol extends MetaDataService {
builder.setSchema(PSchema.toProto(result.schema));
}
builder.setAutoPartitionNum(result.getAutoPartitionNum());
+ if (result.getViewIndexId() != null) {
+ builder.setViewIndexId(result.getViewIndexId());
+ }
}
return builder.build();
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java
index 44dd9e0..e041abd 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java
@@ -101,6 +101,10 @@ public final class MetaDataProtos {
* <code>CANNOT_COERCE_AUTO_PARTITION_ID = 21;</code>
*/
CANNOT_COERCE_AUTO_PARTITION_ID(21, 21),
+ /**
+ * <code>TOO_MANY_INDEXES = 22;</code>
+ */
+ TOO_MANY_INDEXES(22, 22),
;
/**
@@ -191,6 +195,10 @@ public final class MetaDataProtos {
* <code>CANNOT_COERCE_AUTO_PARTITION_ID = 21;</code>
*/
public static final int CANNOT_COERCE_AUTO_PARTITION_ID_VALUE = 21;
+ /**
+ * <code>TOO_MANY_INDEXES = 22;</code>
+ */
+ public static final int TOO_MANY_INDEXES_VALUE = 22;
public final int getNumber() { return value; }
@@ -219,6 +227,7 @@ public final class MetaDataProtos {
case 19: return UNALLOWED_SCHEMA_MUTATION;
case 20: return AUTO_PARTITION_SEQUENCE_NOT_FOUND;
case 21: return CANNOT_COERCE_AUTO_PARTITION_ID;
+ case 22: return TOO_MANY_INDEXES;
default: return null;
}
}
@@ -1697,6 +1706,16 @@ public final class MetaDataProtos {
* <code>optional int64 autoPartitionNum = 11;</code>
*/
long getAutoPartitionNum();
+
+ // optional int32 viewIndexId = 12;
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ boolean hasViewIndexId();
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ int getViewIndexId();
}
/**
* Protobuf type {@code MetaDataResponse}
@@ -1835,6 +1854,11 @@ public final class MetaDataProtos {
autoPartitionNum_ = input.readInt64();
break;
}
+ case 96: {
+ bitField0_ |= 0x00000100;
+ viewIndexId_ = input.readInt32();
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -2119,6 +2143,22 @@ public final class MetaDataProtos {
return autoPartitionNum_;
}
+ // optional int32 viewIndexId = 12;
+ public static final int VIEWINDEXID_FIELD_NUMBER = 12;
+ private int viewIndexId_;
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ public boolean hasViewIndexId() {
+ return ((bitField0_ & 0x00000100) == 0x00000100);
+ }
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ public int getViewIndexId() {
+ return viewIndexId_;
+ }
+
private void initFields() {
returnCode_ = org.apache.phoenix.coprocessor.generated.MetaDataProtos.MutationCode.TABLE_ALREADY_EXISTS;
mutationTime_ = 0L;
@@ -2131,6 +2171,7 @@ public final class MetaDataProtos {
sharedTablesToDelete_ = java.util.Collections.emptyList();
schema_ = org.apache.phoenix.coprocessor.generated.PSchemaProtos.PSchema.getDefaultInstance();
autoPartitionNum_ = 0L;
+ viewIndexId_ = 0;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -2201,6 +2242,9 @@ public final class MetaDataProtos {
if (((bitField0_ & 0x00000080) == 0x00000080)) {
output.writeInt64(11, autoPartitionNum_);
}
+ if (((bitField0_ & 0x00000100) == 0x00000100)) {
+ output.writeInt32(12, viewIndexId_);
+ }
getUnknownFields().writeTo(output);
}
@@ -2259,6 +2303,10 @@ public final class MetaDataProtos {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(11, autoPartitionNum_);
}
+ if (((bitField0_ & 0x00000100) == 0x00000100)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(12, viewIndexId_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -2328,6 +2376,11 @@ public final class MetaDataProtos {
result = result && (getAutoPartitionNum()
== other.getAutoPartitionNum());
}
+ result = result && (hasViewIndexId() == other.hasViewIndexId());
+ if (hasViewIndexId()) {
+ result = result && (getViewIndexId()
+ == other.getViewIndexId());
+ }
result = result &&
getUnknownFields().equals(other.getUnknownFields());
return result;
@@ -2385,6 +2438,10 @@ public final class MetaDataProtos {
hash = (37 * hash) + AUTOPARTITIONNUM_FIELD_NUMBER;
hash = (53 * hash) + hashLong(getAutoPartitionNum());
}
+ if (hasViewIndexId()) {
+ hash = (37 * hash) + VIEWINDEXID_FIELD_NUMBER;
+ hash = (53 * hash) + getViewIndexId();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -2536,6 +2593,8 @@ public final class MetaDataProtos {
bitField0_ = (bitField0_ & ~0x00000200);
autoPartitionNum_ = 0L;
bitField0_ = (bitField0_ & ~0x00000400);
+ viewIndexId_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000800);
return this;
}
@@ -2627,6 +2686,10 @@ public final class MetaDataProtos {
to_bitField0_ |= 0x00000080;
}
result.autoPartitionNum_ = autoPartitionNum_;
+ if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+ to_bitField0_ |= 0x00000100;
+ }
+ result.viewIndexId_ = viewIndexId_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -2729,6 +2792,9 @@ public final class MetaDataProtos {
if (other.hasAutoPartitionNum()) {
setAutoPartitionNum(other.getAutoPartitionNum());
}
+ if (other.hasViewIndexId()) {
+ setViewIndexId(other.getViewIndexId());
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -3776,6 +3842,39 @@ public final class MetaDataProtos {
return this;
}
+ // optional int32 viewIndexId = 12;
+ private int viewIndexId_ ;
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ public boolean hasViewIndexId() {
+ return ((bitField0_ & 0x00000800) == 0x00000800);
+ }
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ public int getViewIndexId() {
+ return viewIndexId_;
+ }
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ public Builder setViewIndexId(int value) {
+ bitField0_ |= 0x00000800;
+ viewIndexId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional int32 viewIndexId = 12;</code>
+ */
+ public Builder clearViewIndexId() {
+ bitField0_ = (bitField0_ & ~0x00000800);
+ viewIndexId_ = 0;
+ onChanged();
+ return this;
+ }
+
// @@protoc_insertion_point(builder_scope:MetaDataResponse)
}
@@ -6411,6 +6510,16 @@ public final class MetaDataProtos {
* <code>optional int32 clientVersion = 2;</code>
*/
int getClientVersion();
+
+ // optional bool allocateIndexId = 3;
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ boolean hasAllocateIndexId();
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ boolean getAllocateIndexId();
}
/**
* Protobuf type {@code CreateTableRequest}
@@ -6480,6 +6589,11 @@ public final class MetaDataProtos {
clientVersion_ = input.readInt32();
break;
}
+ case 24: {
+ bitField0_ |= 0x00000002;
+ allocateIndexId_ = input.readBool();
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -6562,9 +6676,26 @@ public final class MetaDataProtos {
return clientVersion_;
}
+ // optional bool allocateIndexId = 3;
+ public static final int ALLOCATEINDEXID_FIELD_NUMBER = 3;
+ private boolean allocateIndexId_;
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ public boolean hasAllocateIndexId() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ public boolean getAllocateIndexId() {
+ return allocateIndexId_;
+ }
+
private void initFields() {
tableMetadataMutations_ = java.util.Collections.emptyList();
clientVersion_ = 0;
+ allocateIndexId_ = false;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -6584,6 +6715,9 @@ public final class MetaDataProtos {
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeInt32(2, clientVersion_);
}
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ output.writeBool(3, allocateIndexId_);
+ }
getUnknownFields().writeTo(output);
}
@@ -6606,6 +6740,10 @@ public final class MetaDataProtos {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(2, clientVersion_);
}
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBoolSize(3, allocateIndexId_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -6636,6 +6774,11 @@ public final class MetaDataProtos {
result = result && (getClientVersion()
== other.getClientVersion());
}
+ result = result && (hasAllocateIndexId() == other.hasAllocateIndexId());
+ if (hasAllocateIndexId()) {
+ result = result && (getAllocateIndexId()
+ == other.getAllocateIndexId());
+ }
result = result &&
getUnknownFields().equals(other.getUnknownFields());
return result;
@@ -6657,6 +6800,10 @@ public final class MetaDataProtos {
hash = (37 * hash) + CLIENTVERSION_FIELD_NUMBER;
hash = (53 * hash) + getClientVersion();
}
+ if (hasAllocateIndexId()) {
+ hash = (37 * hash) + ALLOCATEINDEXID_FIELD_NUMBER;
+ hash = (53 * hash) + hashBoolean(getAllocateIndexId());
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -6774,6 +6921,8 @@ public final class MetaDataProtos {
bitField0_ = (bitField0_ & ~0x00000001);
clientVersion_ = 0;
bitField0_ = (bitField0_ & ~0x00000002);
+ allocateIndexId_ = false;
+ bitField0_ = (bitField0_ & ~0x00000004);
return this;
}
@@ -6811,6 +6960,10 @@ public final class MetaDataProtos {
to_bitField0_ |= 0x00000001;
}
result.clientVersion_ = clientVersion_;
+ if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.allocateIndexId_ = allocateIndexId_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -6840,6 +6993,9 @@ public final class MetaDataProtos {
if (other.hasClientVersion()) {
setClientVersion(other.getClientVersion());
}
+ if (other.hasAllocateIndexId()) {
+ setAllocateIndexId(other.getAllocateIndexId());
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -6972,6 +7128,39 @@ public final class MetaDataProtos {
return this;
}
+ // optional bool allocateIndexId = 3;
+ private boolean allocateIndexId_ ;
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ public boolean hasAllocateIndexId() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ public boolean getAllocateIndexId() {
+ return allocateIndexId_;
+ }
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ public Builder setAllocateIndexId(boolean value) {
+ bitField0_ |= 0x00000004;
+ allocateIndexId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional bool allocateIndexId = 3;</code>
+ */
+ public Builder clearAllocateIndexId() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ allocateIndexId_ = false;
+ onChanged();
+ return this;
+ }
+
// @@protoc_insertion_point(builder_scope:CreateTableRequest)
}
@@ -16871,7 +17060,7 @@ public final class MetaDataProtos {
"TableState\022\020\n\010tenantId\030\001 \001(\014\022\022\n\nschemaNa" +
"me\030\002 \002(\014\022\021\n\ttableName\030\003 \002(\014\022\031\n\007columns\030\004" +
" \003(\0132\010.PColumn\022\025\n\rphysicalNames\030\005 \003(\014\022\023\n" +
- "\013viewIndexId\030\006 \002(\005\"\274\002\n\020MetaDataResponse\022" +
+ "\013viewIndexId\030\006 \002(\005\"\321\002\n\020MetaDataResponse\022" +
"!\n\nreturnCode\030\001 \001(\0162\r.MutationCode\022\024\n\014mu" +
"tationTime\030\002 \001(\003\022\026\n\005table\030\003 \001(\0132\007.PTable" +
"\022\026\n\016tablesToDelete\030\004 \003(\014\022\022\n\ncolumnName\030\005" +
@@ -16879,84 +17068,86 @@ public final class MetaDataProtos {
"\030\007 \001(\014\022\034\n\010function\030\010 \003(\0132\n.PFunction\022/\n\024" +
"sharedTablesToDelete\030\t \003(\0132\021.SharedTable" +
"State\022\030\n\006schema\030\n \001(\0132\010.PSchema\022\030\n\020autoP" +
- "artitionNum\030\013 \001(\003\"\222\001\n\017GetTableRequest\022\020\n" +
- "\010tenantId\030\001 \002(\014\022\022\n\nschemaName\030\002 \002(\014\022\021\n\tt" +
- "ableName\030\003 \002(\014\022\026\n\016tableTimestamp\030\004 \002(\003\022\027" +
- "\n\017clientTimestamp\030\005 \002(\003\022\025\n\rclientVersion" +
- "\030\006 \001(\005\"\212\001\n\023GetFunctionsRequest\022\020\n\010tenant" +
- "Id\030\001 \002(\014\022\025\n\rfunctionNames\030\002 \003(\014\022\032\n\022funct" +
- "ionTimestamps\030\003 \003(\003\022\027\n\017clientTimestamp\030\004",
- " \002(\003\022\025\n\rclientVersion\030\005 \001(\005\"V\n\020GetSchema" +
- "Request\022\022\n\nschemaName\030\001 \002(\t\022\027\n\017clientTim" +
- "estamp\030\002 \002(\003\022\025\n\rclientVersion\030\003 \002(\005\"K\n\022C" +
- "reateTableRequest\022\036\n\026tableMetadataMutati" +
- "ons\030\001 \003(\014\022\025\n\rclientVersion\030\002 \001(\005\"r\n\025Crea" +
- "teFunctionRequest\022\036\n\026tableMetadataMutati" +
- "ons\030\001 \003(\014\022\021\n\ttemporary\030\002 \002(\010\022\017\n\007replace\030" +
- "\003 \001(\010\022\025\n\rclientVersion\030\004 \001(\005\"`\n\023CreateSc" +
- "hemaRequest\022\036\n\026tableMetadataMutations\030\001 " +
- "\003(\014\022\022\n\nschemaName\030\002 \002(\t\022\025\n\rclientVersion",
- "\030\003 \002(\005\"m\n\020DropTableRequest\022\036\n\026tableMetad" +
- "ataMutations\030\001 \003(\014\022\021\n\ttableType\030\002 \002(\t\022\017\n" +
- "\007cascade\030\003 \001(\010\022\025\n\rclientVersion\030\004 \001(\005\"_\n" +
- "\021DropSchemaRequest\022\037\n\027schemaMetadataMuta" +
- "tions\030\001 \003(\014\022\022\n\nschemaName\030\002 \002(\t\022\025\n\rclien" +
- "tVersion\030\003 \002(\005\"I\n\020AddColumnRequest\022\036\n\026ta" +
- "bleMetadataMutations\030\001 \003(\014\022\025\n\rclientVers" +
- "ion\030\002 \001(\005\"J\n\021DropColumnRequest\022\036\n\026tableM" +
- "etadataMutations\030\001 \003(\014\022\025\n\rclientVersion\030" +
- "\002 \001(\005\"^\n\023DropFunctionRequest\022\036\n\026tableMet",
- "adataMutations\030\001 \003(\014\022\020\n\010ifExists\030\002 \001(\010\022\025" +
- "\n\rclientVersion\030\003 \001(\005\"P\n\027UpdateIndexStat" +
- "eRequest\022\036\n\026tableMetadataMutations\030\001 \003(\014" +
- "\022\025\n\rclientVersion\030\002 \001(\005\"*\n\021ClearCacheReq" +
- "uest\022\025\n\rclientVersion\030\001 \001(\005\"*\n\022ClearCach" +
- "eResponse\022\024\n\014unfreedBytes\030\001 \001(\003\"*\n\021GetVe" +
- "rsionRequest\022\025\n\rclientVersion\030\001 \001(\005\"%\n\022G" +
- "etVersionResponse\022\017\n\007version\030\001 \002(\003\"\205\001\n\032C" +
- "learTableFromCacheRequest\022\020\n\010tenantId\030\001 " +
- "\002(\014\022\022\n\nschemaName\030\002 \002(\014\022\021\n\ttableName\030\003 \002",
- "(\014\022\027\n\017clientTimestamp\030\004 \002(\003\022\025\n\rclientVer" +
- "sion\030\005 \001(\005\"\035\n\033ClearTableFromCacheRespons" +
- "e*\337\004\n\014MutationCode\022\030\n\024TABLE_ALREADY_EXIS" +
- "TS\020\000\022\023\n\017TABLE_NOT_FOUND\020\001\022\024\n\020COLUMN_NOT_" +
- "FOUND\020\002\022\031\n\025COLUMN_ALREADY_EXISTS\020\003\022\035\n\031CO" +
- "NCURRENT_TABLE_MUTATION\020\004\022\027\n\023TABLE_NOT_I" +
- "N_REGION\020\005\022\025\n\021NEWER_TABLE_FOUND\020\006\022\034\n\030UNA" +
- "LLOWED_TABLE_MUTATION\020\007\022\021\n\rNO_PK_COLUMNS" +
- "\020\010\022\032\n\026PARENT_TABLE_NOT_FOUND\020\t\022\033\n\027FUNCTI" +
- "ON_ALREADY_EXISTS\020\n\022\026\n\022FUNCTION_NOT_FOUN",
- "D\020\013\022\030\n\024NEWER_FUNCTION_FOUND\020\014\022\032\n\026FUNCTIO" +
- "N_NOT_IN_REGION\020\r\022\031\n\025SCHEMA_ALREADY_EXIS" +
- "TS\020\016\022\026\n\022NEWER_SCHEMA_FOUND\020\017\022\024\n\020SCHEMA_N" +
- "OT_FOUND\020\020\022\030\n\024SCHEMA_NOT_IN_REGION\020\021\022\032\n\026" +
- "TABLES_EXIST_ON_SCHEMA\020\022\022\035\n\031UNALLOWED_SC" +
- "HEMA_MUTATION\020\023\022%\n!AUTO_PARTITION_SEQUEN" +
- "CE_NOT_FOUND\020\024\022#\n\037CANNOT_COERCE_AUTO_PAR" +
- "TITION_ID\020\0252\345\006\n\017MetaDataService\022/\n\010getTa" +
- "ble\022\020.GetTableRequest\032\021.MetaDataResponse" +
- "\0227\n\014getFunctions\022\024.GetFunctionsRequest\032\021",
- ".MetaDataResponse\0221\n\tgetSchema\022\021.GetSche" +
- "maRequest\032\021.MetaDataResponse\0225\n\013createTa" +
- "ble\022\023.CreateTableRequest\032\021.MetaDataRespo" +
- "nse\022;\n\016createFunction\022\026.CreateFunctionRe" +
- "quest\032\021.MetaDataResponse\0227\n\014createSchema" +
- "\022\024.CreateSchemaRequest\032\021.MetaDataRespons" +
- "e\0221\n\tdropTable\022\021.DropTableRequest\032\021.Meta" +
- "DataResponse\0223\n\ndropSchema\022\022.DropSchemaR" +
- "equest\032\021.MetaDataResponse\0227\n\014dropFunctio" +
- "n\022\024.DropFunctionRequest\032\021.MetaDataRespon",
- "se\0221\n\taddColumn\022\021.AddColumnRequest\032\021.Met" +
- "aDataResponse\0223\n\ndropColumn\022\022.DropColumn" +
- "Request\032\021.MetaDataResponse\022?\n\020updateInde" +
- "xState\022\030.UpdateIndexStateRequest\032\021.MetaD" +
- "ataResponse\0225\n\nclearCache\022\022.ClearCacheRe" +
- "quest\032\023.ClearCacheResponse\0225\n\ngetVersion" +
- "\022\022.GetVersionRequest\032\023.GetVersionRespons" +
- "e\022P\n\023clearTableFromCache\022\033.ClearTableFro" +
- "mCacheRequest\032\034.ClearTableFromCacheRespo" +
- "nseBB\n(org.apache.phoenix.coprocessor.ge",
- "neratedB\016MetaDataProtosH\001\210\001\001\240\001\001"
+ "artitionNum\030\013 \001(\003\022\023\n\013viewIndexId\030\014 \001(\005\"\222" +
+ "\001\n\017GetTableRequest\022\020\n\010tenantId\030\001 \002(\014\022\022\n\n" +
+ "schemaName\030\002 \002(\014\022\021\n\ttableName\030\003 \002(\014\022\026\n\016t" +
+ "ableTimestamp\030\004 \002(\003\022\027\n\017clientTimestamp\030\005" +
+ " \002(\003\022\025\n\rclientVersion\030\006 \001(\005\"\212\001\n\023GetFunct" +
+ "ionsRequest\022\020\n\010tenantId\030\001 \002(\014\022\025\n\rfunctio" +
+ "nNames\030\002 \003(\014\022\032\n\022functionTimestamps\030\003 \003(\003",
+ "\022\027\n\017clientTimestamp\030\004 \002(\003\022\025\n\rclientVersi" +
+ "on\030\005 \001(\005\"V\n\020GetSchemaRequest\022\022\n\nschemaNa" +
+ "me\030\001 \002(\t\022\027\n\017clientTimestamp\030\002 \002(\003\022\025\n\rcli" +
+ "entVersion\030\003 \002(\005\"d\n\022CreateTableRequest\022\036" +
+ "\n\026tableMetadataMutations\030\001 \003(\014\022\025\n\rclient" +
+ "Version\030\002 \001(\005\022\027\n\017allocateIndexId\030\003 \001(\010\"r" +
+ "\n\025CreateFunctionRequest\022\036\n\026tableMetadata" +
+ "Mutations\030\001 \003(\014\022\021\n\ttemporary\030\002 \002(\010\022\017\n\007re" +
+ "place\030\003 \001(\010\022\025\n\rclientVersion\030\004 \001(\005\"`\n\023Cr" +
+ "eateSchemaRequest\022\036\n\026tableMetadataMutati",
+ "ons\030\001 \003(\014\022\022\n\nschemaName\030\002 \002(\t\022\025\n\rclientV" +
+ "ersion\030\003 \002(\005\"m\n\020DropTableRequest\022\036\n\026tabl" +
+ "eMetadataMutations\030\001 \003(\014\022\021\n\ttableType\030\002 " +
+ "\002(\t\022\017\n\007cascade\030\003 \001(\010\022\025\n\rclientVersion\030\004 " +
+ "\001(\005\"_\n\021DropSchemaRequest\022\037\n\027schemaMetada" +
+ "taMutations\030\001 \003(\014\022\022\n\nschemaName\030\002 \002(\t\022\025\n" +
+ "\rclientVersion\030\003 \002(\005\"I\n\020AddColumnRequest" +
+ "\022\036\n\026tableMetadataMutations\030\001 \003(\014\022\025\n\rclie" +
+ "ntVersion\030\002 \001(\005\"J\n\021DropColumnRequest\022\036\n\026" +
+ "tableMetadataMutations\030\001 \003(\014\022\025\n\rclientVe",
+ "rsion\030\002 \001(\005\"^\n\023DropFunctionRequest\022\036\n\026ta" +
+ "bleMetadataMutations\030\001 \003(\014\022\020\n\010ifExists\030\002" +
+ " \001(\010\022\025\n\rclientVersion\030\003 \001(\005\"P\n\027UpdateInd" +
+ "exStateRequest\022\036\n\026tableMetadataMutations" +
+ "\030\001 \003(\014\022\025\n\rclientVersion\030\002 \001(\005\"*\n\021ClearCa" +
+ "cheRequest\022\025\n\rclientVersion\030\001 \001(\005\"*\n\022Cle" +
+ "arCacheResponse\022\024\n\014unfreedBytes\030\001 \001(\003\"*\n" +
+ "\021GetVersionRequest\022\025\n\rclientVersion\030\001 \001(" +
+ "\005\"%\n\022GetVersionResponse\022\017\n\007version\030\001 \002(\003" +
+ "\"\205\001\n\032ClearTableFromCacheRequest\022\020\n\010tenan",
+ "tId\030\001 \002(\014\022\022\n\nschemaName\030\002 \002(\014\022\021\n\ttableNa" +
+ "me\030\003 \002(\014\022\027\n\017clientTimestamp\030\004 \002(\003\022\025\n\rcli" +
+ "entVersion\030\005 \001(\005\"\035\n\033ClearTableFromCacheR" +
+ "esponse*\365\004\n\014MutationCode\022\030\n\024TABLE_ALREAD" +
+ "Y_EXISTS\020\000\022\023\n\017TABLE_NOT_FOUND\020\001\022\024\n\020COLUM" +
+ "N_NOT_FOUND\020\002\022\031\n\025COLUMN_ALREADY_EXISTS\020\003" +
+ "\022\035\n\031CONCURRENT_TABLE_MUTATION\020\004\022\027\n\023TABLE" +
+ "_NOT_IN_REGION\020\005\022\025\n\021NEWER_TABLE_FOUND\020\006\022" +
+ "\034\n\030UNALLOWED_TABLE_MUTATION\020\007\022\021\n\rNO_PK_C" +
+ "OLUMNS\020\010\022\032\n\026PARENT_TABLE_NOT_FOUND\020\t\022\033\n\027",
+ "FUNCTION_ALREADY_EXISTS\020\n\022\026\n\022FUNCTION_NO" +
+ "T_FOUND\020\013\022\030\n\024NEWER_FUNCTION_FOUND\020\014\022\032\n\026F" +
+ "UNCTION_NOT_IN_REGION\020\r\022\031\n\025SCHEMA_ALREAD" +
+ "Y_EXISTS\020\016\022\026\n\022NEWER_SCHEMA_FOUND\020\017\022\024\n\020SC" +
+ "HEMA_NOT_FOUND\020\020\022\030\n\024SCHEMA_NOT_IN_REGION" +
+ "\020\021\022\032\n\026TABLES_EXIST_ON_SCHEMA\020\022\022\035\n\031UNALLO" +
+ "WED_SCHEMA_MUTATION\020\023\022%\n!AUTO_PARTITION_" +
+ "SEQUENCE_NOT_FOUND\020\024\022#\n\037CANNOT_COERCE_AU" +
+ "TO_PARTITION_ID\020\025\022\024\n\020TOO_MANY_INDEXES\020\0262" +
+ "\345\006\n\017MetaDataService\022/\n\010getTable\022\020.GetTab",
+ "leRequest\032\021.MetaDataResponse\0227\n\014getFunct" +
+ "ions\022\024.GetFunctionsRequest\032\021.MetaDataRes" +
+ "ponse\0221\n\tgetSchema\022\021.GetSchemaRequest\032\021." +
+ "MetaDataResponse\0225\n\013createTable\022\023.Create" +
+ "TableRequest\032\021.MetaDataResponse\022;\n\016creat" +
+ "eFunction\022\026.CreateFunctionRequest\032\021.Meta" +
+ "DataResponse\0227\n\014createSchema\022\024.CreateSch" +
+ "emaRequest\032\021.MetaDataResponse\0221\n\tdropTab" +
+ "le\022\021.DropTableRequest\032\021.MetaDataResponse" +
+ "\0223\n\ndropSchema\022\022.DropSchemaRequest\032\021.Met",
+ "aDataResponse\0227\n\014dropFunction\022\024.DropFunc" +
+ "tionRequest\032\021.MetaDataResponse\0221\n\taddCol" +
+ "umn\022\021.AddColumnRequest\032\021.MetaDataRespons" +
+ "e\0223\n\ndropColumn\022\022.DropColumnRequest\032\021.Me" +
+ "taDataResponse\022?\n\020updateIndexState\022\030.Upd" +
+ "ateIndexStateRequest\032\021.MetaDataResponse\022" +
+ "5\n\nclearCache\022\022.ClearCacheRequest\032\023.Clea" +
+ "rCacheResponse\0225\n\ngetVersion\022\022.GetVersio" +
+ "nRequest\032\023.GetVersionResponse\022P\n\023clearTa" +
+ "bleFromCache\022\033.ClearTableFromCacheReques",
+ "t\032\034.ClearTableFromCacheResponseBB\n(org.a" +
+ "pache.phoenix.coprocessor.generatedB\016Met" +
+ "aDataProtosH\001\210\001\001\240\001\001"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -16974,7 +17165,7 @@ public final class MetaDataProtos {
internal_static_MetaDataResponse_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_MetaDataResponse_descriptor,
- new java.lang.String[] { "ReturnCode", "MutationTime", "Table", "TablesToDelete", "ColumnName", "FamilyName", "FunctionName", "Function", "SharedTablesToDelete", "Schema", "AutoPartitionNum", });
+ new java.lang.String[] { "ReturnCode", "MutationTime", "Table", "TablesToDelete", "ColumnName", "FamilyName", "FunctionName", "Function", "SharedTablesToDelete", "Schema", "AutoPartitionNum", "ViewIndexId", });
internal_static_GetTableRequest_descriptor =
getDescriptor().getMessageTypes().get(2);
internal_static_GetTableRequest_fieldAccessorTable = new
@@ -16998,7 +17189,7 @@ public final class MetaDataProtos {
internal_static_CreateTableRequest_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_CreateTableRequest_descriptor,
- new java.lang.String[] { "TableMetadataMutations", "ClientVersion", });
+ new java.lang.String[] { "TableMetadataMutations", "ClientVersion", "AllocateIndexId", });
internal_static_CreateFunctionRequest_descriptor =
getDescriptor().getMessageTypes().get(6);
internal_static_CreateFunctionRequest_fieldAccessorTable = new
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServices.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServices.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServices.java
index 6f8b528..bc2c93b 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServices.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServices.java
@@ -79,7 +79,7 @@ public interface ConnectionQueryServices extends QueryServices, MetaDataMutated
public MetaDataMutationResult createTable(List<Mutation> tableMetaData, byte[] tableName, PTableType tableType,
Map<String, Object> tableProps, List<Pair<byte[], Map<String, Object>>> families, byte[][] splits,
- boolean isNamespaceMapped) throws SQLException;
+ boolean isNamespaceMapped, boolean allocateIndexId) throws SQLException;
public MetaDataMutationResult dropTable(List<Mutation> tableMetadata, PTableType tableType, boolean cascade) throws SQLException;
public MetaDataMutationResult dropFunction(List<Mutation> tableMetadata, boolean ifExists) throws SQLException;
public MetaDataMutationResult addColumn(List<Mutation> tableMetaData, PTable table, Map<String, List<Pair<String,Object>>> properties, Set<String> colFamiliesForPColumnsToBeAdded) throws SQLException;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index f5f85e4..354a932 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -1373,9 +1373,9 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
}
@Override
- public MetaDataMutationResult createTable(final List<Mutation> tableMetaData, byte[] physicalTableName,
+ public MetaDataMutationResult createTable(final List<Mutation> tableMetaData, final byte[] physicalTableName,
PTableType tableType, Map<String, Object> tableProps,
- final List<Pair<byte[], Map<String, Object>>> families, byte[][] splits, boolean isNamespaceMapped)
+ final List<Pair<byte[], Map<String, Object>>> families, byte[][] splits, boolean isNamespaceMapped, final boolean allocateIndexId)
throws SQLException {
byte[][] rowKeyMetadata = new byte[3][];
Mutation m = MetaDataUtil.getPutOnlyTableHeaderRow(tableMetaData);
@@ -1446,6 +1446,9 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
builder.addTableMetadataMutations(mp.toByteString());
}
builder.setClientVersion(VersionUtil.encodeVersion(PHOENIX_MAJOR_VERSION, PHOENIX_MINOR_VERSION, PHOENIX_PATCH_NUMBER));
+ if (allocateIndexId) {
+ builder.setAllocateIndexId(allocateIndexId);
+ }
CreateTableRequest build = builder.build();
instance.createTable(controller, build, rpcCallback);
if(controller.getFailedOn() != null) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
index 337e43c..8c9f3ff 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
@@ -250,12 +250,16 @@ public class ConnectionlessQueryServicesImpl extends DelegateQueryServices imple
@Override
public MetaDataMutationResult createTable(List<Mutation> tableMetaData, byte[] physicalName, PTableType tableType,
Map<String, Object> tableProps, List<Pair<byte[], Map<String, Object>>> families, byte[][] splits,
- boolean isNamespaceMapped) throws SQLException {
+ boolean isNamespaceMapped, boolean allocateIndexId) throws SQLException {
if (splits != null) {
byte[] tableName = getTableName(tableMetaData, physicalName);
tableSplits.put(Bytes.toString(tableName), generateRegionLocations(tableName, splits));
}
- return new MetaDataMutationResult(MutationCode.TABLE_NOT_FOUND, 0, null);
+ if (!allocateIndexId) {
+ return new MetaDataMutationResult(MutationCode.TABLE_NOT_FOUND, 0, null);
+ } else {
+ return new MetaDataMutationResult(MutationCode.TABLE_NOT_FOUND, 0, null, Short.MIN_VALUE);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/query/DelegateConnectionQueryServices.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/DelegateConnectionQueryServices.java b/phoenix-core/src/main/java/org/apache/phoenix/query/DelegateConnectionQueryServices.java
index 81517e3..b00e92b 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/DelegateConnectionQueryServices.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/DelegateConnectionQueryServices.java
@@ -120,9 +120,9 @@ public class DelegateConnectionQueryServices extends DelegateQueryServices imple
@Override
public MetaDataMutationResult createTable(List<Mutation> tableMetaData, byte[] physicalName, PTableType tableType,
Map<String, Object> tableProps, List<Pair<byte[], Map<String, Object>>> families, byte[][] splits,
- boolean isNamespaceMapped) throws SQLException {
+ boolean isNamespaceMapped, boolean allocateIndexId) throws SQLException {
return getDelegate().createTable(tableMetaData, physicalName, tableType, tableProps, families, splits,
- isNamespaceMapped);
+ isNamespaceMapped, allocateIndexId);
}
@Override
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
index 73f1501..1e635d8 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
@@ -80,7 +80,6 @@ import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.TRANSACTIONAL;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.TYPE;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.UPDATE_CACHE_FREQUENCY;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_CONSTANT;
-import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_INDEX_ID;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_STATEMENT;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_TYPE;
import static org.apache.phoenix.query.QueryConstants.BASE_TABLE_BASE_COLUMN_COUNT;
@@ -96,7 +95,6 @@ import static org.apache.phoenix.schema.types.PDataType.TRUE_BYTES;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Date;
-import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
@@ -251,7 +249,6 @@ public class MetaDataClient {
DISABLE_WAL + "," +
MULTI_TENANT + "," +
VIEW_TYPE + "," +
- VIEW_INDEX_ID + "," +
INDEX_TYPE + "," +
STORE_NULLS + "," +
BASE_COLUMN_COUNT + "," +
@@ -260,7 +257,7 @@ public class MetaDataClient {
IS_NAMESPACE_MAPPED + "," +
AUTO_PARTITION_SEQ + "," +
APPEND_ONLY_SCHEMA +
- ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
private static final String CREATE_SCHEMA = "UPSERT INTO " + SYSTEM_CATALOG_SCHEMA + ".\"" + SYSTEM_CATALOG_TABLE
+ "\"( " + TABLE_SCHEM + "," + TABLE_NAME + ") VALUES (?,?)";
@@ -937,7 +934,7 @@ public class MetaDataClient {
true, NamedTableNode.create(statement.getTableName()), statement.getTableType());
}
}
- table = createTableInternal(statement, splits, parent, viewStatement, viewType, viewColumnConstants, isViewColumnReferenced, null, null, null, tableProps, commonFamilyProps);
+ table = createTableInternal(statement, splits, parent, viewStatement, viewType, viewColumnConstants, isViewColumnReferenced, false, null, null, tableProps, commonFamilyProps);
if (table == null || table.getType() == PTableType.VIEW || table.isTransactional()) {
return new MutationState(0,connection);
@@ -1255,7 +1252,6 @@ public class MetaDataClient {
TableRef tableRef = null;
PTable table = null;
int numRetries = 0;
- Short indexId = null;
boolean allocateIndexId = false;
boolean isLocalIndex = statement.getIndexType() == IndexType.LOCAL;
int hbaseVersion = connection.getQueryServices().getLowestClusterHBaseVersion();
@@ -1412,44 +1408,14 @@ public class MetaDataClient {
}
}
- // Don't re-allocate indexId on ConcurrentTableMutationException,
- // as there's no need to burn another sequence value.
- if (allocateIndexId && indexId == null) {
- Long scn = connection.getSCN();
- PName tenantId = connection.getTenantId();
- String tenantIdStr = tenantId == null ? null : connection.getTenantId().getString();
- PName physicalName = dataTable.getPhysicalName();
- int nSequenceSaltBuckets = connection.getQueryServices().getSequenceSaltBuckets();
- SequenceKey key = MetaDataUtil.getViewIndexSequenceKey(tenantIdStr, physicalName,
- nSequenceSaltBuckets, dataTable.isNamespaceMapped());
- // if scn is set create at scn-1, so we can see the sequence or else use latest timestamp (so that latest server time is used)
- long sequenceTimestamp = scn!=null ? scn-1 : HConstants.LATEST_TIMESTAMP;
- createSequence(key.getTenantId(), key.getSchemaName(), key.getSequenceName(),
- true, Short.MIN_VALUE, 1, 1, false, Long.MIN_VALUE, Long.MAX_VALUE,
- sequenceTimestamp);
- long[] seqValues = new long[1];
- SQLException[] sqlExceptions = new SQLException[1];
- long timestamp = scn == null ? HConstants.LATEST_TIMESTAMP : scn;
- connection.getQueryServices().incrementSequences(Collections.singletonList(new SequenceAllocation(key, 1)),
- Math.max(timestamp, dataTable.getTimeStamp()), seqValues, sqlExceptions);
- if (sqlExceptions[0] != null) {
- throw sqlExceptions[0];
- }
- long seqValue = seqValues[0];
- if (seqValue > Short.MAX_VALUE) {
- throw new SQLExceptionInfo.Builder(SQLExceptionCode.TOO_MANY_INDEXES)
- .setSchemaName(SchemaUtil.getSchemaNameFromFullName(physicalName.getString())).setTableName(SchemaUtil.getTableNameFromFullName(physicalName.getString())).build().buildException();
- }
- indexId = (short) seqValue;
- }
// Set DEFAULT_COLUMN_FAMILY_NAME of index to match data table
// We need this in the props so that the correct column family is created
- if (dataTable.getDefaultFamilyName() != null && dataTable.getType() != PTableType.VIEW && indexId == null) {
+ if (dataTable.getDefaultFamilyName() != null && dataTable.getType() != PTableType.VIEW && !allocateIndexId) {
statement.getProps().put("", new Pair<String,Object>(DEFAULT_COLUMN_FAMILY_NAME,dataTable.getDefaultFamilyName().getString()));
}
PrimaryKeyConstraint pk = FACTORY.primaryKey(null, allPkColumns);
CreateTableStatement tableStatement = FACTORY.createTable(indexTableName, statement.getProps(), columnDefs, pk, statement.getSplitNodes(), PTableType.INDEX, statement.ifNotExists(), null, null, statement.getBindCount());
- table = createTableInternal(tableStatement, splits, dataTable, null, null, null, null, indexId, statement.getIndexType(), asyncCreatedDate, tableProps, commonFamilyProps);
+ table = createTableInternal(tableStatement, splits, dataTable, null, null, null, null, allocateIndexId, statement.getIndexType(), asyncCreatedDate, tableProps, commonFamilyProps);
break;
} catch (ConcurrentTableMutationException e) { // Can happen if parent data table changes while above is in progress
if (numRetries<5) {
@@ -1645,7 +1611,7 @@ public class MetaDataClient {
private PTable createTableInternal(CreateTableStatement statement, byte[][] splits,
final PTable parent, String viewStatement, ViewType viewType,
- final byte[][] viewColumnConstants, final BitSet isViewColumnReferenced, Short indexId,
+ final byte[][] viewColumnConstants, final BitSet isViewColumnReferenced, boolean allocateIndexId,
IndexType indexType, Date asyncCreatedDate,
Map<String,Object> tableProps,
Map<String,Object> commonFamilyProps) throws SQLException {
@@ -1762,7 +1728,7 @@ public class MetaDataClient {
}
// Can't set any of these on views or shared indexes on views
- if (tableType != PTableType.VIEW && indexId == null) {
+ if (tableType != PTableType.VIEW && !allocateIndexId) {
saltBucketNum = (Integer) TableProperty.SALT_BUCKETS.getValue(tableProps);
if (saltBucketNum != null) {
if (saltBucketNum < 0 || saltBucketNum > SaltingUtil.MAX_BUCKET_NUM) {
@@ -1852,7 +1818,7 @@ public class MetaDataClient {
}
}
- boolean sharedTable = statement.getTableType() == PTableType.VIEW || indexId != null;
+ boolean sharedTable = statement.getTableType() == PTableType.VIEW || allocateIndexId;
if (transactional) {
// Tephra uses an empty value cell as its delete marker, so we need to turn on
// storeNulls for transactional tables.
@@ -2151,7 +2117,7 @@ public class MetaDataClient {
Collections.<PTable>emptyList(), isImmutableRows,
Collections.<PName>emptyList(), defaultFamilyName == null ? null :
PNameFactory.newName(defaultFamilyName), null,
- Boolean.TRUE.equals(disableWAL), false, false, null, indexId, indexType, true, false, 0, 0L, isNamespaceMapped, autoPartitionSeq, isAppendOnlySchema);
+ Boolean.TRUE.equals(disableWAL), false, false, null, null, indexType, true, false, 0, 0L, isNamespaceMapped, autoPartitionSeq, isAppendOnlySchema);
connection.addTable(table, MetaDataProtocol.MIN_TABLE_TIMESTAMP);
}
@@ -2244,31 +2210,26 @@ public class MetaDataClient {
} else {
tableUpsert.setByte(16, viewType.getSerializedValue());
}
- if (indexId == null) {
- tableUpsert.setNull(17, Types.SMALLINT);
- } else {
- tableUpsert.setShort(17, indexId);
- }
if (indexType == null) {
- tableUpsert.setNull(18, Types.TINYINT);
+ tableUpsert.setNull(17, Types.TINYINT);
} else {
- tableUpsert.setByte(18, indexType.getSerializedValue());
+ tableUpsert.setByte(17, indexType.getSerializedValue());
}
- tableUpsert.setBoolean(19, storeNulls);
+ tableUpsert.setBoolean(18, storeNulls);
if (parent != null && tableType == PTableType.VIEW) {
- tableUpsert.setInt(20, parent.getColumns().size());
+ tableUpsert.setInt(19, parent.getColumns().size());
} else {
- tableUpsert.setInt(20, BASE_TABLE_BASE_COLUMN_COUNT);
+ tableUpsert.setInt(19, BASE_TABLE_BASE_COLUMN_COUNT);
}
- tableUpsert.setBoolean(21, transactional);
- tableUpsert.setLong(22, updateCacheFrequency);
- tableUpsert.setBoolean(23, isNamespaceMapped);
+ tableUpsert.setBoolean(20, transactional);
+ tableUpsert.setLong(21, updateCacheFrequency);
+ tableUpsert.setBoolean(22, isNamespaceMapped);
if (autoPartitionSeq == null) {
- tableUpsert.setNull(24, Types.VARCHAR);
+ tableUpsert.setNull(23, Types.VARCHAR);
} else {
- tableUpsert.setString(24, autoPartitionSeq);
+ tableUpsert.setString(23, autoPartitionSeq);
}
- tableUpsert.setBoolean(25, isAppendOnlySchema);
+ tableUpsert.setBoolean(24, isAppendOnlySchema);
tableUpsert.execute();
if (asyncCreatedDate != null) {
@@ -2296,8 +2257,8 @@ public class MetaDataClient {
}
MetaDataMutationResult result = connection.getQueryServices().createTable(
tableMetaData,
- viewType == ViewType.MAPPED || indexId != null ? physicalNames.get(0).getBytes() : null,
- tableType, tableProps, familyPropList, splits, isNamespaceMapped);
+ viewType == ViewType.MAPPED || allocateIndexId ? physicalNames.get(0).getBytes() : null,
+ tableType, tableProps, familyPropList, splits, isNamespaceMapped, allocateIndexId);
MutationCode code = result.getMutationCode();
switch(code) {
case TABLE_ALREADY_EXISTS:
@@ -2328,6 +2289,11 @@ public class MetaDataClient {
case CANNOT_COERCE_AUTO_PARTITION_ID:
throw new SQLExceptionInfo.Builder(SQLExceptionCode.CANNOT_COERCE_AUTO_PARTITION_ID)
.setSchemaName(schemaName).setTableName(tableName).build().buildException();
+ case TOO_MANY_INDEXES:
+ throw new SQLExceptionInfo.Builder(SQLExceptionCode.TOO_MANY_INDEXES)
+ .setSchemaName(SchemaUtil.getSchemaNameFromFullName(parent.getPhysicalName().getString()))
+ .setTableName(SchemaUtil.getTableNameFromFullName(parent.getPhysicalName().getString())).build()
+ .buildException();
default:
// If the parent table of the view has the auto partition sequence name attribute,
// set the view statement and relevant partition column attributes correctly
@@ -2362,7 +2328,7 @@ public class MetaDataClient {
PTable.INITIAL_SEQ_NUM, pkName == null ? null : PNameFactory.newName(pkName), saltBucketNum, columns.values(),
parent == null ? null : parent.getSchemaName(), parent == null ? null : parent.getTableName(), Collections.<PTable>emptyList(), isImmutableRows,
physicalNames, defaultFamilyName == null ? null : PNameFactory.newName(defaultFamilyName), viewStatement, Boolean.TRUE.equals(disableWAL), multiTenant, storeNulls, viewType,
- indexId, indexType, rowKeyOrderOptimizable, transactional, updateCacheFrequency, 0L, isNamespaceMapped, autoPartitionSeq, isAppendOnlySchema);
+ result.getViewIndexId(), indexType, rowKeyOrderOptimizable, transactional, updateCacheFrequency, 0L, isNamespaceMapped, autoPartitionSeq, isAppendOnlySchema);
result = new MetaDataMutationResult(code, result.getMutationTime(), table, true);
addTableToCache(result);
return table;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/test/java/org/apache/phoenix/compile/TenantSpecificViewIndexCompileTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/compile/TenantSpecificViewIndexCompileTest.java b/phoenix-core/src/test/java/org/apache/phoenix/compile/TenantSpecificViewIndexCompileTest.java
index 27c30fc..d249a66 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/compile/TenantSpecificViewIndexCompileTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/compile/TenantSpecificViewIndexCompileTest.java
@@ -194,7 +194,7 @@ public class TenantSpecificViewIndexCompileTest extends BaseConnectionlessQueryT
conn.createStatement().execute("CREATE INDEX i1 ON v(v2)");
ResultSet rs = conn.createStatement().executeQuery("EXPLAIN SELECT v2 FROM v WHERE v2 > 'a' and k2 = 'a' ORDER BY v2,k2");
- assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_T [-32766,'me','a'] - [-32766,'me',*]\n" +
+ assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_T [-32768,'me','a'] - [-32768,'me',*]\n" +
" SERVER FILTER BY FIRST KEY ONLY",
QueryUtil.getExplainPlan(rs));
@@ -227,7 +227,7 @@ public class TenantSpecificViewIndexCompileTest extends BaseConnectionlessQueryT
// Confirm that a read-only view on an updatable view still optimizes out the read-only parts of the updatable view
ResultSet rs = conn.createStatement().executeQuery("EXPLAIN SELECT v2 FROM v2 WHERE v3 > 'a' and k2 = 'a' ORDER BY v3,k2");
- assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_T [-32767,'me','a'] - [-32767,'me',*]",
+ assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_T [-32768,'me','a'] - [-32768,'me',*]",
QueryUtil.getExplainPlan(rs));
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 075828e..bdcd520 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -1715,14 +1715,22 @@ public abstract class BaseTest {
conn.close();
}
}
-
- protected static void verifySequence(String tenantID, String sequenceName, String sequenceSchemaName, boolean exists) throws SQLException {
+ protected static void verifySequenceNotExists(String tenantID, String sequenceName, String sequenceSchemaName) throws SQLException {
+ verifySequence(tenantID, sequenceName, sequenceSchemaName, false, 0);
+ }
+
+ protected static void verifySequenceValue(String tenantID, String sequenceName, String sequenceSchemaName, long value) throws SQLException {
+ verifySequence(tenantID, sequenceName, sequenceSchemaName, true, value);
+ }
+
+ private static void verifySequence(String tenantID, String sequenceName, String sequenceSchemaName, boolean exists, long value) throws SQLException {
PhoenixConnection phxConn = DriverManager.getConnection(getUrl()).unwrap(PhoenixConnection.class);
String ddl = "SELECT "
+ PhoenixDatabaseMetaData.TENANT_ID + ","
+ PhoenixDatabaseMetaData.SEQUENCE_SCHEMA + ","
- + PhoenixDatabaseMetaData.SEQUENCE_NAME
+ + PhoenixDatabaseMetaData.SEQUENCE_NAME + ","
+ + PhoenixDatabaseMetaData.CURRENT_VALUE
+ " FROM " + PhoenixDatabaseMetaData.SYSTEM_SEQUENCE
+ " WHERE ";
@@ -1734,6 +1742,7 @@ public abstract class BaseTest {
if(exists) {
assertTrue(rs.next());
+ assertEquals(value, rs.getLong(4));
} else {
assertFalse(rs.next());
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/655fe2be/phoenix-protocol/src/main/MetaDataService.proto
----------------------------------------------------------------------
diff --git a/phoenix-protocol/src/main/MetaDataService.proto b/phoenix-protocol/src/main/MetaDataService.proto
index 70eee3b..2ba2b4c 100644
--- a/phoenix-protocol/src/main/MetaDataService.proto
+++ b/phoenix-protocol/src/main/MetaDataService.proto
@@ -49,6 +49,7 @@ enum MutationCode {
UNALLOWED_SCHEMA_MUTATION = 19;
AUTO_PARTITION_SEQUENCE_NOT_FOUND = 20;
CANNOT_COERCE_AUTO_PARTITION_ID = 21;
+ TOO_MANY_INDEXES = 22;
};
message SharedTableState {
@@ -72,6 +73,7 @@ message MetaDataResponse {
repeated SharedTableState sharedTablesToDelete = 9;
optional PSchema schema = 10;
optional int64 autoPartitionNum = 11;
+ optional int32 viewIndexId = 12;
}
message GetTableRequest {
@@ -101,6 +103,7 @@ message GetSchemaRequest {
message CreateTableRequest {
repeated bytes tableMetadataMutations = 1;
optional int32 clientVersion = 2;
+ optional bool allocateIndexId = 3;
}
// each byte array represents a MutationProto instance
[03/48] phoenix git commit: PHOENIX-3290 Move and/or combine as many
NeedsOwnCluster tests to bring down test run time
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
index 5e36784..6f190b6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
@@ -38,6 +38,7 @@ import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -47,23 +48,17 @@ import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class QueryWithOffsetIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class QueryWithOffsetIT extends ParallelStatsDisabledIT {
- private String tableName = "T";
- private final String[] strings = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p",
- "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
- private final String ddl;
+ private static final String[] STRINGS = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
+ "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
private final boolean isSalted;
-
- public QueryWithOffsetIT(String preSplit) {
- this.tableName=tableName + "_" + preSplit.charAt(2);
- this.ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" + "k1 INTEGER NOT NULL,\n"
- + "k2 INTEGER NOT NULL,\n" + "C3.k3 INTEGER,\n" + "C2.v1 VARCHAR,\n"
- + "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2)) " + preSplit;
- this.isSalted = preSplit.startsWith(" SALT_BUCKETS");
- }
+ private final String preSplit;
+ private String ddl;
+ private String tableName;
@BeforeClass
+ @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
public static void doSetup() throws Exception {
Map<String, String> props = Maps.newHashMapWithExpectedSize(1);
props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(true));
@@ -71,6 +66,19 @@ public class QueryWithOffsetIT extends BaseOwnClusterHBaseManagedTimeIT {
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
+ public QueryWithOffsetIT(String preSplit) {
+ this.isSalted = preSplit.startsWith(" SALT_BUCKETS");
+ this.preSplit = preSplit;
+ }
+
+ @Before
+ public void initTest() {
+ tableName = "T_" + generateRandomString();
+ ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" + "k1 INTEGER NOT NULL,\n"
+ + "k2 INTEGER NOT NULL,\n" + "C3.k3 INTEGER,\n" + "C2.v1 VARCHAR,\n"
+ + "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2)) " + preSplit;
+ }
+
@Parameters(name="preSplit = {0}")
public static Collection<String> data() {
return Arrays.asList(new String[] { " SPLIT ON ('e','i','o')", " SALT_BUCKETS=10" });
@@ -92,7 +100,7 @@ public class QueryWithOffsetIT extends BaseOwnClusterHBaseManagedTimeIT {
int i = 0;
while (i < limit) {
assertTrue(rs.next());
- assertEquals("Expected string didn't match for i = " + i, strings[offset + i], rs.getString(1));
+ assertEquals("Expected string didn't match for i = " + i, STRINGS[offset + i], rs.getString(1));
i++;
}
@@ -100,14 +108,14 @@ public class QueryWithOffsetIT extends BaseOwnClusterHBaseManagedTimeIT {
rs = conn.createStatement().executeQuery("SELECT t_id from " + tableName + " union all SELECT t_id from "
+ tableName + " offset " + offset + " FETCH FIRST " + limit + " rows only");
i = 0;
- while (i++ < strings.length - offset) {
+ while (i++ < STRINGS.length - offset) {
assertTrue(rs.next());
- assertEquals(strings[offset + i - 1], rs.getString(1));
+ assertEquals(STRINGS[offset + i - 1], rs.getString(1));
}
i = 0;
- while (i++ < limit - strings.length - offset) {
+ while (i++ < limit - STRINGS.length - offset) {
assertTrue(rs.next());
- assertEquals(strings[i - 1], rs.getString(1));
+ assertEquals(STRINGS[i - 1], rs.getString(1));
}
conn.close();
}
@@ -124,25 +132,27 @@ public class QueryWithOffsetIT extends BaseOwnClusterHBaseManagedTimeIT {
String query = "SELECT t_id from " + tableName + " offset " + offset;
ResultSet rs = conn.createStatement().executeQuery("EXPLAIN " + query);
if(!isSalted){
- assertEquals("CLIENT SERIAL 1-WAY FULL SCAN OVER T_P\n" + " SERVER FILTER BY FIRST KEY ONLY\n"
+ assertEquals("CLIENT SERIAL 1-WAY FULL SCAN OVER " + tableName + "\n"
+ + " SERVER FILTER BY FIRST KEY ONLY\n"
+ " SERVER OFFSET " + offset, QueryUtil.getExplainPlan(rs));
}else{
- assertEquals("CLIENT PARALLEL 10-WAY FULL SCAN OVER T_A\n" + " SERVER FILTER BY FIRST KEY ONLY\n"
+ assertEquals("CLIENT PARALLEL 10-WAY FULL SCAN OVER " + tableName + "\n"
+ + " SERVER FILTER BY FIRST KEY ONLY\n"
+ "CLIENT MERGE SORT\n" + "CLIENT OFFSET " + offset, QueryUtil.getExplainPlan(rs));
}
rs = conn.createStatement().executeQuery(query);
int i = 0;
- while (i++ < strings.length - offset) {
+ while (i++ < STRINGS.length - offset) {
assertTrue(rs.next());
- assertEquals(strings[offset + i - 1], rs.getString(1));
+ assertEquals(STRINGS[offset + i - 1], rs.getString(1));
}
query = "SELECT t_id from " + tableName + " ORDER BY v1 offset " + offset;
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
if (!isSalted) {
- assertEquals("CLIENT PARALLEL 5-WAY FULL SCAN OVER T_P\n" + " SERVER SORTED BY [C2.V1]\n"
+ assertEquals("CLIENT PARALLEL 5-WAY FULL SCAN OVER " + tableName + "\n" + " SERVER SORTED BY [C2.V1]\n"
+ "CLIENT MERGE SORT\n" + "CLIENT OFFSET " + offset, QueryUtil.getExplainPlan(rs));
} else {
- assertEquals("CLIENT PARALLEL 10-WAY FULL SCAN OVER T_A\n" + " SERVER SORTED BY [C2.V1]\n"
+ assertEquals("CLIENT PARALLEL 10-WAY FULL SCAN OVER " + tableName + "\n" + " SERVER SORTED BY [C2.V1]\n"
+ "CLIENT MERGE SORT\n" + "CLIENT OFFSET " + offset, QueryUtil.getExplainPlan(rs));
}
conn.close();
@@ -161,31 +171,31 @@ public class QueryWithOffsetIT extends BaseOwnClusterHBaseManagedTimeIT {
rs = conn.createStatement()
.executeQuery("SELECT t_id from " + tableName + " order by t_id offset " + offset + " row");
int i = 0;
- while (i++ < strings.length - offset) {
+ while (i++ < STRINGS.length - offset) {
assertTrue(rs.next());
- assertEquals(strings[offset + i - 1], rs.getString(1));
+ assertEquals(STRINGS[offset + i - 1], rs.getString(1));
}
rs = conn.createStatement().executeQuery(
"SELECT k3, count(*) from " + tableName + " group by k3 order by k3 desc offset " + offset + " row");
i = 0;
- while (i++ < strings.length - offset) {
+ while (i++ < STRINGS.length - offset) {
assertTrue(rs.next());
- assertEquals(strings.length - offset - i + 2, rs.getInt(1));
+ assertEquals(STRINGS.length - offset - i + 2, rs.getInt(1));
}
rs = conn.createStatement().executeQuery("SELECT t_id from " + tableName + " union all SELECT t_id from "
+ tableName + " offset " + offset + " rows");
i = 0;
- while (i++ < strings.length - offset) {
+ while (i++ < STRINGS.length - offset) {
assertTrue(rs.next());
- assertEquals(strings[offset + i - 1], rs.getString(1));
+ assertEquals(STRINGS[offset + i - 1], rs.getString(1));
}
i = 0;
- while (i++ < strings.length) {
+ while (i++ < STRINGS.length) {
assertTrue(rs.next());
- assertEquals(strings[i - 1], rs.getString(1));
+ assertEquals(STRINGS[i - 1], rs.getString(1));
}
conn.close();
}
@@ -210,8 +220,8 @@ public class QueryWithOffsetIT extends BaseOwnClusterHBaseManagedTimeIT {
private void initTableValues(Connection conn) throws SQLException {
for (int i = 0; i < 26; i++) {
- conn.createStatement().execute("UPSERT INTO " + tableName + " values('" + strings[i] + "'," + i + ","
- + (i + 1) + "," + (i + 2) + ",'" + strings[25 - i] + "')");
+ conn.createStatement().execute("UPSERT INTO " + tableName + " values('" + STRINGS[i] + "'," + i + ","
+ + (i + 1) + "," + (i + 2) + ",'" + STRINGS[25 - i] + "')");
}
conn.commit();
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RenewLeaseIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RenewLeaseIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RenewLeaseIT.java
index fa0bc8e..aba4ddb 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RenewLeaseIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RenewLeaseIT.java
@@ -42,7 +42,7 @@ import org.junit.Test;
import com.google.common.collect.Maps;
-public class RenewLeaseIT extends BaseOwnClusterHBaseManagedTimeIT {
+public class RenewLeaseIT extends BaseOwnClusterIT {
private static final long RPC_TIMEOUT = 2000;
private static volatile boolean SLEEP_NOW = false;
private static final String TABLE_NAME = "FOO_BAR";
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpillableGroupByIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpillableGroupByIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpillableGroupByIT.java
index 22bf8ce..a11f808 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpillableGroupByIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpillableGroupByIT.java
@@ -34,8 +34,8 @@ import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -48,7 +48,7 @@ import com.google.common.collect.Maps;
* cluster.
*/
-public class SpillableGroupByIT extends BaseOwnClusterClientManagedTimeIT {
+public class SpillableGroupByIT extends BaseOwnClusterIT {
private static final int NUM_ROWS_INSERTED = 1000;
@@ -61,7 +61,7 @@ public class SpillableGroupByIT extends BaseOwnClusterClientManagedTimeIT {
@BeforeClass
public static void doSetup() throws Exception {
- Map<String, String> props = Maps.newHashMapWithExpectedSize(1);
+ Map<String, String> props = Maps.newHashMapWithExpectedSize(11);
// Set a very small cache size to force plenty of spilling
props.put(QueryServices.GROUPBY_MAX_CACHE_SIZE_ATTRIB,
Integer.toString(1));
@@ -70,6 +70,13 @@ public class SpillableGroupByIT extends BaseOwnClusterClientManagedTimeIT {
Integer.toString(1));
// Large enough to not run out of memory, but small enough to spill
props.put(QueryServices.MAX_MEMORY_SIZE_ATTRIB, Integer.toString(40000));
+
+ // Set guidepost width, but disable stats
+ props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
+ props.put(QueryServices.STATS_ENABLED_ATTRIB, Boolean.toString(false));
+ props.put(QueryServices.EXPLAIN_CHUNK_COUNT_ATTRIB, Boolean.TRUE.toString());
+ props.put(QueryServices.EXPLAIN_ROW_COUNT_ATTRIB, Boolean.TRUE.toString());
+ // Must update config before starting server
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
@@ -77,10 +84,7 @@ public class SpillableGroupByIT extends BaseOwnClusterClientManagedTimeIT {
createGroupByTestTable(conn, tableName);
}
- private void loadData(long ts) throws SQLException {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
- Connection conn = DriverManager.getConnection(getUrl(), props);
+ private void loadData(Connection conn) throws SQLException {
int groupFactor = NUM_ROWS_INSERTED / 2;
for (int i = 0; i < NUM_ROWS_INSERTED; i++) {
insertRow(conn, Integer.toString(i % (groupFactor)), 10);
@@ -90,7 +94,6 @@ public class SpillableGroupByIT extends BaseOwnClusterClientManagedTimeIT {
}
}
conn.commit();
- conn.close();
}
private void insertRow(Connection conn, String uri, int appcpu)
@@ -107,72 +110,66 @@ public class SpillableGroupByIT extends BaseOwnClusterClientManagedTimeIT {
@Test
public void testScanUri() throws Exception {
- long ts = nextTimestamp();
SpillableGroupByIT spGpByT = new SpillableGroupByIT();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB,
- Long.toString(ts));
Connection conn = DriverManager.getConnection(getUrl(), props);
createTable(conn, GROUPBYTEST_NAME);
- ts += 2;
- spGpByT.loadData(ts);
+ spGpByT.loadData(conn);
props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB,
- Long.toString(ts + 10));
- conn = DriverManager.getConnection(getUrl(), props);
- try {
- Statement stmt = conn.createStatement();
- ResultSet rs = stmt.executeQuery(GROUPBY1);
-
- int count = 0;
- while (rs.next()) {
- String uri = rs.getString(5);
- assertEquals(2, rs.getInt(1));
- assertEquals(1, rs.getInt(2));
- assertEquals(20, rs.getInt(3));
- assertEquals(10, rs.getInt(4));
- int a = Integer.valueOf(rs.getString(6)).intValue();
- int b = Integer.valueOf(rs.getString(7)).intValue();
- assertEquals(Integer.valueOf(uri).intValue(), Math.min(a, b));
- assertEquals(NUM_ROWS_INSERTED / 2 + Integer.valueOf(uri), Math.max(a, b));
- count++;
- }
- assertEquals(NUM_ROWS_INSERTED / 2, count);
-
- } finally {
- conn.close();
+ Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(GROUPBY1);
+
+ int count = 0;
+ while (rs.next()) {
+ String uri = rs.getString(5);
+ assertEquals(2, rs.getInt(1));
+ assertEquals(1, rs.getInt(2));
+ assertEquals(20, rs.getInt(3));
+ assertEquals(10, rs.getInt(4));
+ int a = Integer.valueOf(rs.getString(6)).intValue();
+ int b = Integer.valueOf(rs.getString(7)).intValue();
+ assertEquals(Integer.valueOf(uri).intValue(), Math.min(a, b));
+ assertEquals(NUM_ROWS_INSERTED / 2 + Integer.valueOf(uri), Math.max(a, b));
+ count++;
}
+ assertEquals(NUM_ROWS_INSERTED / 2, count);
- // Test group by with limit that will exit after first row
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB,
- Long.toString(ts + 10));
- conn = DriverManager.getConnection(getUrl(), props);
- try {
- Statement stmt = conn.createStatement();
- ResultSet rs = stmt.executeQuery("SELECT appcpu FROM " + GROUPBYTEST_NAME + " group by appcpu limit 1");
-
- assertTrue(rs.next());
- assertEquals(10,rs.getInt(1));
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
+ conn.createStatement();
+ rs = stmt.executeQuery("SELECT appcpu FROM " + GROUPBYTEST_NAME + " group by appcpu limit 1");
+
+ assertTrue(rs.next());
+ assertEquals(10,rs.getInt(1));
+ assertFalse(rs.next());
- // Test group by with limit that will do spilling before exiting
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB,
- Long.toString(ts + 10));
- conn = DriverManager.getConnection(getUrl(), props);
- try {
- Statement stmt = conn.createStatement();
- ResultSet rs = stmt.executeQuery("SELECT to_number(uri) FROM " + GROUPBYTEST_NAME + " group by to_number(uri) limit 100");
- int count = 0;
- while (rs.next()) {
- count++;
- }
- assertEquals(100, count);
- } finally {
- conn.close();
+ stmt = conn.createStatement();
+ rs = stmt.executeQuery("SELECT to_number(uri) FROM " + GROUPBYTEST_NAME + " group by to_number(uri) limit 100");
+ count = 0;
+ while (rs.next()) {
+ count++;
}
+ assertEquals(100, count);
}
+ @Test
+ public void testStatisticsAreNotWritten() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ Statement stmt = conn.createStatement();
+ stmt.execute("CREATE TABLE T1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR)");
+ stmt.execute("UPSERT INTO T1 VALUES (1, 'NAME1')");
+ stmt.execute("UPSERT INTO T1 VALUES (2, 'NAME2')");
+ stmt.execute("UPSERT INTO T1 VALUES (3, 'NAME3')");
+ conn.commit();
+ stmt.execute("UPDATE STATISTICS T1");
+ ResultSet rs = stmt.executeQuery("SELECT * FROM SYSTEM.STATS");
+ assertFalse(rs.next());
+ rs.close();
+ stmt.close();
+ rs = conn.createStatement().executeQuery("EXPLAIN SELECT * FROM T1");
+ String explainPlan = QueryUtil.getExplainPlan(rs);
+ assertEquals(
+ "CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER T1",
+ explainPlan);
+ conn.close();
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectionDisabledIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectionDisabledIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectionDisabledIT.java
deleted file mode 100644
index 54ffa7c..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectionDisabledIT.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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;
-
-import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.google.common.collect.Maps;
-
-/**
- * Verifies that statistics are not collected if they are disabled via a setting
- */
-public class StatsCollectionDisabledIT extends StatsCollectorAbstractIT {
-
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(5);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- props.put(QueryServices.STATS_ENABLED_ATTRIB, Boolean.toString(false));
- props.put(QueryServices.EXPLAIN_CHUNK_COUNT_ATTRIB, Boolean.TRUE.toString());
- props.put(QueryServices.EXPLAIN_ROW_COUNT_ATTRIB, Boolean.TRUE.toString());
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- @Test
- public void testStatisticsAreNotWritten() throws SQLException {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- Statement stmt = conn.createStatement();
- stmt.execute("CREATE TABLE T1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR)");
- stmt.execute("UPSERT INTO T1 VALUES (1, 'NAME1')");
- stmt.execute("UPSERT INTO T1 VALUES (2, 'NAME2')");
- stmt.execute("UPSERT INTO T1 VALUES (3, 'NAME3')");
- conn.commit();
- stmt.execute("UPDATE STATISTICS T1");
- ResultSet rs = stmt.executeQuery("SELECT * FROM SYSTEM.STATS");
- assertFalse(rs.next());
- rs.close();
- stmt.close();
- rs = conn.createStatement().executeQuery("EXPLAIN SELECT * FROM T1");
- String explainPlan = QueryUtil.getExplainPlan(rs);
- assertEquals(
- "CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER T1",
- explainPlan);
- conn.close();
- }
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorAbstractIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorAbstractIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorAbstractIT.java
deleted file mode 100644
index ab337d6..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorAbstractIT.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Map;
-
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.query.ConnectionQueryServices;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
-import org.junit.experimental.categories.Category;
-
-import com.google.common.collect.Maps;
-@Category(NeedsOwnMiniClusterTest.class)
-public abstract class StatsCollectorAbstractIT extends BaseOwnClusterHBaseManagedTimeIT {
- protected static final String STATS_TEST_TABLE_NAME = "S";
- protected static final String STATS_TEST_TABLE_NAME_NEW = "S_NEW";
- protected static final byte[] STATS_TEST_TABLE_BYTES = Bytes.toBytes(STATS_TEST_TABLE_NAME);
- protected static final byte[] STATS_TEST_TABLE_BYTES_NEW = Bytes.toBytes(STATS_TEST_TABLE_NAME_NEW);
-
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- props.put(QueryServices.EXPLAIN_CHUNK_COUNT_ATTRIB, Boolean.TRUE.toString());
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- protected void splitTable(Connection conn, byte[] splitPoint, byte[] tabName) throws IOException, InterruptedException, SQLException {
- ConnectionQueryServices services = conn.unwrap(PhoenixConnection.class).getQueryServices();
- int nRegionsNow = services.getAllTableRegions(tabName).size();
- HBaseAdmin admin = services.getAdmin();
- try {
- admin.split(tabName, splitPoint);
- int nTries = 0;
- int nRegions;
- do {
- Thread.sleep(2000);
- services.clearTableRegionCache(tabName);
- nRegions = services.getAllTableRegions(tabName).size();
- nTries++;
- } while (nRegions == nRegionsNow && nTries < 10);
- if (nRegions == nRegionsNow) {
- fail();
- }
- // FIXME: I see the commit of the stats finishing before this with a lower timestamp that the scan timestamp,
- // yet without this sleep, the query finds the old data. Seems like an HBase bug and a potentially serious one.
- Thread.sleep(8000);
- } finally {
- admin.close();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
index f0fe346..dd7741a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorIT.java
@@ -20,6 +20,7 @@ package org.apache.phoenix.end2end;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.apache.phoenix.util.TestUtil.getAllSplits;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
@@ -35,9 +36,12 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Random;
import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HRegionLocation;
import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.query.ConnectionQueryServices;
@@ -49,6 +53,7 @@ import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -58,14 +63,14 @@ import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class StatsCollectorIT extends StatsCollectorAbstractIT {
- private static final String STATS_TEST_TABLE_NAME = "S";
-
+public class StatsCollectorIT extends ParallelStatsEnabledIT {
private final String tableDDLOptions;
- private final String tableName;
- private final String fullTableName;
+ private String tableName;
+ private String schemaName;
+ private String fullTableName;
@BeforeClass
+ @Shadower(classBeingShadowed = ParallelStatsEnabledIT.class)
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(10);
// Must update config before starting server
@@ -79,10 +84,15 @@ public class StatsCollectorIT extends StatsCollectorAbstractIT {
public StatsCollectorIT( boolean transactional) {
this.tableDDLOptions= transactional ? " TRANSACTIONAL=true" : "";
- this.tableName = TestUtil.DEFAULT_DATA_TABLE_NAME + ( transactional ? "_TXN" : "");
- this.fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
}
+ @Before
+ public void generateTableNames() {
+ schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
+ tableName = "T_" + generateRandomString();
+ fullTableName = SchemaUtil.getTableName(schemaName, tableName);
+ }
+
@Parameters(name="transactional = {0}")
public static Collection<Boolean> data() {
return Arrays.asList(false,true);
@@ -110,8 +120,6 @@ public class StatsCollectorIT extends StatsCollectorAbstractIT {
public void testSomeUpdateEmptyStats() throws Exception {
Connection conn;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String fullTableName = this.fullTableName + "_SALTED";
- // props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
conn.createStatement().execute(
@@ -150,7 +158,6 @@ public class StatsCollectorIT extends StatsCollectorAbstractIT {
PreparedStatement stmt;
ResultSet rs;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- // props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute(
"CREATE TABLE " + fullTableName +" ( k VARCHAR, a_string_array VARCHAR(100) ARRAY[4], b_string_array VARCHAR(100) ARRAY[4] \n"
@@ -217,12 +224,11 @@ public class StatsCollectorIT extends StatsCollectorAbstractIT {
@Test
public void testUpdateStatsWithMultipleTables() throws Throwable {
- String fullTableName2 = fullTableName+"_2";
+ String fullTableName2 = SchemaUtil.getTableName(schemaName, "T_" + generateRandomString());
Connection conn;
PreparedStatement stmt;
ResultSet rs;
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- // props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
conn = DriverManager.getConnection(getUrl(), props);
conn.createStatement().execute(
"CREATE TABLE " + fullTableName +" ( k VARCHAR, a_string_array VARCHAR(100) ARRAY[4], b_string_array VARCHAR(100) ARRAY[4] \n"
@@ -271,7 +277,6 @@ public class StatsCollectorIT extends StatsCollectorAbstractIT {
InterruptedException {
Connection conn;
PreparedStatement stmt;
- // props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 30));
conn = DriverManager.getConnection(getUrl(), props);
stmt = upsertStmt(conn, tableName);
stmt.setString(1, "a");
@@ -356,12 +361,12 @@ public class StatsCollectorIT extends StatsCollectorAbstractIT {
@Test
public void testCompactUpdatesStats() throws Exception {
- testCompactUpdatesStats(null, STATS_TEST_TABLE_NAME + 1);
+ testCompactUpdatesStats(null, fullTableName);
}
@Test
public void testCompactUpdatesStatsWithMinStatsUpdateFreq() throws Exception {
- testCompactUpdatesStats(QueryServicesOptions.DEFAULT_STATS_UPDATE_FREQ_MS, STATS_TEST_TABLE_NAME + 2);
+ testCompactUpdatesStats(QueryServicesOptions.DEFAULT_STATS_UPDATE_FREQ_MS, fullTableName);
}
private void testCompactUpdatesStats(Integer minStatsUpdateFreq, String tableName) throws Exception {
@@ -426,4 +431,130 @@ public class StatsCollectorIT extends StatsCollectorAbstractIT {
assertEquals(nRows - nDeletedRows, rs.getLong(1));
}
+
+ @Test
+ public void testWithMultiCF() throws Exception {
+ int nRows = 20;
+ Connection conn;
+ PreparedStatement stmt;
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ conn = DriverManager.getConnection(getUrl(), props);
+ conn.createStatement().execute(
+ "CREATE TABLE " + fullTableName
+ + "(k VARCHAR PRIMARY KEY, a.v INTEGER, b.v INTEGER, c.v INTEGER NULL, d.v INTEGER NULL) ");
+ stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + " VALUES(?,?, ?, ?, ?)");
+ byte[] val = new byte[250];
+ for (int i = 0; i < nRows; i++) {
+ stmt.setString(1, Character.toString((char)('a' + i)) + Bytes.toString(val));
+ stmt.setInt(2, i);
+ stmt.setInt(3, i);
+ stmt.setInt(4, i);
+ stmt.setInt(5, i);
+ stmt.executeUpdate();
+ }
+ conn.commit();
+ stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + "(k, c.v, d.v) VALUES(?,?,?)");
+ for (int i = 0; i < 5; i++) {
+ stmt.setString(1, Character.toString((char)('a' + 'z' + i)) + Bytes.toString(val));
+ stmt.setInt(2, i);
+ stmt.setInt(3, i);
+ stmt.executeUpdate();
+ }
+ conn.commit();
+
+ ResultSet rs;
+ TestUtil.analyzeTable(conn, fullTableName);
+ List<KeyRange> keyRanges = getAllSplits(conn, fullTableName);
+ assertEquals(26, keyRanges.size());
+ rs = conn.createStatement().executeQuery("EXPLAIN SELECT * FROM " + fullTableName);
+ assertEquals("CLIENT 26-CHUNK 25 ROWS 12420 BYTES PARALLEL 1-WAY FULL SCAN OVER " + fullTableName,
+ QueryUtil.getExplainPlan(rs));
+
+ ConnectionQueryServices services = conn.unwrap(PhoenixConnection.class).getQueryServices();
+ List<HRegionLocation> regions = services.getAllTableRegions(Bytes.toBytes(fullTableName));
+ assertEquals(1, regions.size());
+
+ TestUtil.analyzeTable(conn, fullTableName);
+ String query = "UPDATE STATISTICS " + fullTableName + " SET \""
+ + QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB + "\"=" + Long.toString(1000);
+ conn.createStatement().execute(query);
+ keyRanges = getAllSplits(conn, fullTableName);
+ assertEquals(12, keyRanges.size());
+
+ rs = conn
+ .createStatement()
+ .executeQuery(
+ "SELECT COLUMN_FAMILY,SUM(GUIDE_POSTS_ROW_COUNT),SUM(GUIDE_POSTS_WIDTH),COUNT(*) from SYSTEM.STATS where PHYSICAL_NAME = '"
+ + fullTableName + "' GROUP BY COLUMN_FAMILY ORDER BY COLUMN_FAMILY");
+
+ assertTrue(rs.next());
+ assertEquals("A", rs.getString(1));
+ assertEquals(24, rs.getInt(2));
+ assertEquals(12144, rs.getInt(3));
+ assertEquals(11, rs.getInt(4));
+
+ assertTrue(rs.next());
+ assertEquals("B", rs.getString(1));
+ assertEquals(20, rs.getInt(2));
+ assertEquals(5540, rs.getInt(3));
+ assertEquals(5, rs.getInt(4));
+
+ assertTrue(rs.next());
+ assertEquals("C", rs.getString(1));
+ assertEquals(24, rs.getInt(2));
+ assertEquals(6652, rs.getInt(3));
+ assertEquals(6, rs.getInt(4));
+
+ assertTrue(rs.next());
+ assertEquals("D", rs.getString(1));
+ assertEquals(24, rs.getInt(2));
+ assertEquals(6652, rs.getInt(3));
+ assertEquals(6, rs.getInt(4));
+
+ assertFalse(rs.next());
+ }
+
+ @Test
+ public void testRowCountAndByteCounts() throws SQLException {
+ Connection conn;
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ conn = DriverManager.getConnection(getUrl(), props);
+ String ddl = "CREATE TABLE " + fullTableName + " (t_id VARCHAR NOT NULL,\n" + "k1 INTEGER NOT NULL,\n"
+ + "k2 INTEGER NOT NULL,\n" + "C3.k3 INTEGER,\n" + "C2.v1 VARCHAR,\n"
+ + "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2)) split on ('e','j','o')";
+ conn.createStatement().execute(ddl);
+ String[] strings = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r",
+ "s", "t", "u", "v", "w", "x", "y", "z" };
+ for (int i = 0; i < 26; i++) {
+ conn.createStatement().execute(
+ "UPSERT INTO " + fullTableName + " values('" + strings[i] + "'," + i + "," + (i + 1) + ","
+ + (i + 2) + ",'" + strings[25 - i] + "')");
+ }
+ conn.commit();
+ ResultSet rs;
+ String query = "UPDATE STATISTICS " + fullTableName + " SET \""
+ + QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB + "\"=" + Long.toString(20);
+ conn.createStatement().execute(query);
+ Random r = new Random();
+ int count = 0;
+ while (count < 4) {
+ int startIndex = r.nextInt(strings.length);
+ int endIndex = r.nextInt(strings.length - startIndex) + startIndex;
+ long rows = endIndex - startIndex;
+ long c2Bytes = rows * 35;
+ System.out.println(rows + ":" + startIndex + ":" + endIndex);
+ rs = conn.createStatement().executeQuery(
+ "SELECT COLUMN_FAMILY,SUM(GUIDE_POSTS_ROW_COUNT),SUM(GUIDE_POSTS_WIDTH) from SYSTEM.STATS where PHYSICAL_NAME = '"
+ + fullTableName + "' AND GUIDE_POST_KEY>= cast('" + strings[startIndex]
+ + "' as varbinary) AND GUIDE_POST_KEY<cast('" + strings[endIndex]
+ + "' as varbinary) and COLUMN_FAMILY='C2' group by COLUMN_FAMILY");
+ if (startIndex < endIndex) {
+ assertTrue(rs.next());
+ assertEquals("C2", rs.getString(1));
+ assertEquals(rows, rs.getLong(2));
+ assertEquals(c2Bytes, rs.getLong(3));
+ count++;
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorWithSplitsAndMultiCFIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorWithSplitsAndMultiCFIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorWithSplitsAndMultiCFIT.java
deleted file mode 100644
index d922ad9..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsCollectorWithSplitsAndMultiCFIT.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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;
-
-import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
-import static org.apache.phoenix.util.TestUtil.getAllSplits;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.hadoop.hbase.HRegionLocation;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.query.ConnectionQueryServices;
-import org.apache.phoenix.query.KeyRange;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.google.common.collect.Maps;
-
-public class StatsCollectorWithSplitsAndMultiCFIT extends StatsCollectorAbstractIT {
- private static final String STATS_TEST_TABLE_NAME_NEW = "S_NEW";
- private static final byte[] STATS_TEST_TABLE_NEW_BYTES = Bytes.toBytes(STATS_TEST_TABLE_NAME_NEW);
-
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String, String> props = Maps.newHashMapWithExpectedSize(3);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(1000));
- props.put(QueryServices.EXPLAIN_CHUNK_COUNT_ATTRIB, Boolean.TRUE.toString());
- props.put(QueryServices.QUEUE_SIZE_ATTRIB, Integer.toString(1024));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- @Test
- public void testWithMultiCF() throws Exception {
- int nRows = 20;
- Connection conn;
- PreparedStatement stmt;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
- conn.createStatement().execute("CREATE TABLE " + STATS_TEST_TABLE_NAME_NEW
- + "(k VARCHAR PRIMARY KEY, a.v INTEGER, b.v INTEGER, c.v INTEGER NULL, d.v INTEGER NULL) ");
- stmt = conn.prepareStatement("UPSERT INTO " + STATS_TEST_TABLE_NAME_NEW + " VALUES(?,?, ?, ?, ?)");
- byte[] val = new byte[250];
- for (int i = 0; i < nRows; i++) {
- stmt.setString(1, Character.toString((char)('a' + i)) + Bytes.toString(val));
- stmt.setInt(2, i);
- stmt.setInt(3, i);
- stmt.setInt(4, i);
- stmt.setInt(5, i);
- stmt.executeUpdate();
- }
- conn.commit();
- stmt = conn.prepareStatement("UPSERT INTO " + STATS_TEST_TABLE_NAME_NEW + "(k, c.v, d.v) VALUES(?,?,?)");
- for (int i = 0; i < 5; i++) {
- stmt.setString(1, Character.toString((char)('a' + 'z' + i)) + Bytes.toString(val));
- stmt.setInt(2, i);
- stmt.setInt(3, i);
- stmt.executeUpdate();
- }
- conn.commit();
-
- ResultSet rs;
- TestUtil.analyzeTable(conn, STATS_TEST_TABLE_NAME_NEW);
- List<KeyRange> keyRanges = getAllSplits(conn, STATS_TEST_TABLE_NAME_NEW);
- assertEquals(12, keyRanges.size());
- rs = conn.createStatement().executeQuery("EXPLAIN SELECT * FROM " + STATS_TEST_TABLE_NAME_NEW);
- assertEquals("CLIENT " + (12) + "-CHUNK " + "PARALLEL 1-WAY FULL SCAN OVER " + STATS_TEST_TABLE_NAME_NEW,
- QueryUtil.getExplainPlan(rs));
-
- ConnectionQueryServices services = conn.unwrap(PhoenixConnection.class).getQueryServices();
- List<HRegionLocation> regions = services.getAllTableRegions(STATS_TEST_TABLE_NEW_BYTES);
- assertEquals(1, regions.size());
-
- TestUtil.analyzeTable(conn, STATS_TEST_TABLE_NAME_NEW);
- String query = "UPDATE STATISTICS " + STATS_TEST_TABLE_NAME_NEW + " SET \""
- + QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB + "\"=" + Long.toString(250);
- conn.createStatement().execute(query);
- keyRanges = getAllSplits(conn, STATS_TEST_TABLE_NAME_NEW);
- assertEquals(26, keyRanges.size());
-
- rs = conn.createStatement().executeQuery(
- "SELECT COLUMN_FAMILY,SUM(GUIDE_POSTS_ROW_COUNT),SUM(GUIDE_POSTS_WIDTH),COUNT(*) from SYSTEM.STATS where PHYSICAL_NAME = '"
- + STATS_TEST_TABLE_NAME_NEW + "' GROUP BY COLUMN_FAMILY ORDER BY COLUMN_FAMILY");
-
- assertTrue(rs.next());
- assertEquals("A", rs.getString(1));
- assertEquals(25, rs.getInt(2));
- assertEquals(12420, rs.getInt(3));
- assertEquals(25, rs.getInt(4));
-
- assertTrue(rs.next());
- assertEquals("B", rs.getString(1));
- assertEquals(20, rs.getInt(2));
- assertEquals(5540, rs.getInt(3));
- assertEquals(20, rs.getInt(4));
-
- assertTrue(rs.next());
- assertEquals("C", rs.getString(1));
- assertEquals(25, rs.getInt(2));
- assertEquals(6930, rs.getInt(3));
- assertEquals(25, rs.getInt(4));
-
- assertTrue(rs.next());
- assertEquals("D", rs.getString(1));
- assertEquals(25, rs.getInt(2));
- assertEquals(6930, rs.getInt(3));
- assertEquals(25, rs.getInt(4));
-
- }
-
- @Test
- public void testRowCountAndByteCounts() throws SQLException {
- Connection conn;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
- String tableName = "T";
- String ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" + "k1 INTEGER NOT NULL,\n"
- + "k2 INTEGER NOT NULL,\n" + "C3.k3 INTEGER,\n" + "C2.v1 VARCHAR,\n"
- + "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2)) split on ('e','j','o')";
- conn.createStatement().execute(ddl);
- String[] strings = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r",
- "s", "t", "u", "v", "w", "x", "y", "z" };
- for (int i = 0; i < 26; i++) {
- conn.createStatement().execute("UPSERT INTO " + tableName + " values('" + strings[i] + "'," + i + ","
- + (i + 1) + "," + (i + 2) + ",'" + strings[25 - i] + "')");
- }
- conn.commit();
- ResultSet rs;
- String query = "UPDATE STATISTICS " + tableName + " SET \"" + QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB
- + "\"=" + Long.toString(20);
- conn.createStatement().execute(query);
- Random r = new Random();
- int count = 0;
- while (count < 4) {
- int startIndex = r.nextInt(strings.length);
- int endIndex = r.nextInt(strings.length - startIndex) + startIndex;
- long rows = endIndex - startIndex;
- long c2Bytes = rows * 35;
- System.out.println(rows + ":" + startIndex + ":" + endIndex);
- rs = conn.createStatement().executeQuery(
- "SELECT COLUMN_FAMILY,SUM(GUIDE_POSTS_ROW_COUNT),SUM(GUIDE_POSTS_WIDTH) from SYSTEM.STATS where PHYSICAL_NAME = '"
- + tableName + "' AND GUIDE_POST_KEY>= cast('" + strings[startIndex]
- + "' as varbinary) AND GUIDE_POST_KEY<cast('" + strings[endIndex]
- + "' as varbinary) and COLUMN_FAMILY='C2' group by COLUMN_FAMILY");
- if (startIndex < endIndex) {
- assertTrue(rs.next());
- assertEquals("C2", rs.getString(1));
- assertEquals(rows, rs.getLong(2));
- assertEquals(c2Bytes, rs.getLong(3));
- count++;
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d27179b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
index 69b3d00..11eb40e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificTablesDDLIT.java
@@ -23,9 +23,7 @@ import static org.apache.phoenix.exception.SQLExceptionCode.TABLE_UNDEFINED;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.KEY_SEQ;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.ORDINAL_POSITION;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.SYSTEM_CATALOG_SCHEMA;
-import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.SYSTEM_CATALOG_TABLE;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.SYSTEM_FUNCTION_TABLE;
-import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.TYPE_SEQUENCE;
import static org.apache.phoenix.schema.PTableType.SYSTEM;
import static org.apache.phoenix.schema.PTableType.TABLE;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
@@ -40,10 +38,16 @@ import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
import java.util.Properties;
+import java.util.Set;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.phoenix.exception.SQLExceptionCode;
+import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.schema.ColumnAlreadyExistsException;
import org.apache.phoenix.schema.ColumnNotFoundException;
@@ -62,14 +66,17 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testCreateTenantSpecificTable() throws Exception {
// ensure we didn't create a physical HBase table for the tenant-specific table
- HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), PropertiesUtil.deepCopy(TEST_PROPERTIES)).getAdmin();
+ Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TEST_PROPERTIES));
+ HBaseAdmin admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin();
assertEquals(0, admin.listTables(TENANT_TABLE_NAME).length);
}
@Test
public void testCreateTenantTableTwice() throws Exception {
try {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, TENANT_TABLE_DDL, null, nextTimestamp(), false);
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
+ conn.createStatement().execute(TENANT_TABLE_DDL);
fail();
}
catch (TableAlreadyExistsException expected) {}
@@ -77,11 +84,13 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testCreateTenantViewFromNonMultiTenant() throws Exception {
- createTestTable(getUrl(), "CREATE TABLE NON_MULTI_TENANT_TABLE (K VARCHAR PRIMARY KEY)", null, nextTimestamp());
+ String tableName = generateRandomString();
+ createTestTable(getUrl(), "CREATE TABLE " + tableName + " (K VARCHAR PRIMARY KEY)");
try {
+ String viewName = generateRandomString();
// Only way to get this exception is to attempt to derive from a global, multi-type table, as we won't find
// a tenant-specific table when we attempt to resolve the base table.
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW TENANT_TABLE2 (COL VARCHAR) AS SELECT * FROM NON_MULTI_TENANT_TABLE", null, nextTimestamp());
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + viewName + " (COL VARCHAR) AS SELECT * FROM " + tableName);
}
catch (TableNotFoundException expected) {
}
@@ -89,10 +98,9 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testAlteringMultiTenancyForTableWithViewsNotAllowed() throws Exception {
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
- String multiTenantTable = "BASE_MULTI_TENANT_SWITCH";
- String globalTable = "GLOBAL_TABLE_SWITCH";
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String multiTenantTable = "MT_" + generateRandomString();
+ String globalTable = "G_" + generateRandomString();
// create the two base tables
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
String ddl = "CREATE TABLE " + multiTenantTable + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR, V3 VARCHAR CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT = true ";
@@ -100,23 +108,21 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
ddl = "CREATE TABLE " + globalTable + " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR, V3 VARCHAR CONSTRAINT NAME_PK PRIMARY KEY(TENANT_ID, PK1)) ";
conn.createStatement().execute(ddl);
}
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
- props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, "tenant1");
+ String t1 = generateRandomString();
+ props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, t1);
// create view on multi-tenant table
try (Connection tenantConn = DriverManager.getConnection(getUrl(), props)) {
- String viewName = "tenantview";
+ String viewName = "V_" + generateRandomString();
String viewDDL = "CREATE VIEW " + viewName + " AS SELECT * FROM " + multiTenantTable;
tenantConn.createStatement().execute(viewDDL);
}
- props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
// create view on global table
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- String viewName = "globalView";
+ String viewName = "V_" + generateRandomString();
conn.createStatement().execute("CREATE VIEW " + viewName + " AS SELECT * FROM " + globalTable);
}
- props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
try {
conn.createStatement().execute("ALTER TABLE " + globalTable + " SET MULTI_TENANT = " + true);
@@ -134,29 +140,21 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
}
}
- @Test
- public void testCreateTenantTableWithSameWhereClause() throws Exception {
- createTestTable(getUrl(), PARENT_TABLE_DDL.replace(PARENT_TABLE_NAME, PARENT_TABLE_NAME + "_II"), null, nextTimestamp());
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, TENANT_TABLE_DDL.replace(TENANT_TABLE_NAME, TENANT_TABLE_NAME + "2"), null, nextTimestamp());
- }
-
@Test(expected=TableNotFoundException.class)
public void testDeletionOfParentTableFailsOnTenantSpecificConnection() throws Exception {
- createTestTable(getUrl(), PARENT_TABLE_DDL.replace(PARENT_TABLE_NAME, "TEMP_PARENT"), null, nextTimestamp());
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, TENANT_ID); // connection is tenant-specific
Connection conn = DriverManager.getConnection(getUrl(), props);
- conn.createStatement().execute("DROP TABLE TEMP_PARENT");
+ conn.createStatement().execute("DROP TABLE " + PARENT_TABLE_NAME);
conn.close();
}
public void testCreationOfParentTableFailsOnTenantSpecificConnection() throws Exception {
try {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE TABLE PARENT_TABLE ( \n" +
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE TABLE " + generateRandomString() + "( \n" +
" user VARCHAR ,\n" +
" id INTEGER not null primary key desc\n" +
- " ) ", null, nextTimestamp());
+ " ) ");
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.CANNOT_CREATE_TENANT_SPECIFIC_TABLE.getErrorCode(), e.getErrorCode());
@@ -165,13 +163,14 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testTenantSpecificAndParentTablesMayBeInDifferentSchemas() throws SQLException {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW DIFFSCHEMA.TENANT_TABLE ( \n" +
+ String fullTableName = "DIFFSCHEMA." + generateRandomString();
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + fullTableName + " ( \n" +
" tenant_col VARCHAR) AS SELECT * \n" +
- " FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'", null, nextTimestamp());
+ " FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'");
try {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW DIFFSCHEMA.TENANT_TABLE ( \n" +
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + fullTableName + "( \n" +
" tenant_col VARCHAR) AS SELECT *\n"+
- " FROM DIFFSCHEMA." + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'", null, nextTimestamp());
+ " FROM DIFFSCHEMA." + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'");
fail();
}
catch (SQLException expected) {
@@ -184,31 +183,33 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
" tenant_type_id VARCHAR(3) NOT NULL, \n" +
" id INTEGER NOT NULL\n" +
" CONSTRAINT pk PRIMARY KEY (tenant_id, tenant_type_id, id)) MULTI_TENANT=true";
- createTestTable(getUrl(), newDDL, null, nextTimestamp());
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW DIFFSCHEMA.TENANT_TABLE ( \n" +
+ createTestTable(getUrl(), newDDL);
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + fullTableName + "( \n" +
" tenant_col VARCHAR) AS SELECT *\n"+
- " FROM DIFFSCHEMA." + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'", null, nextTimestamp());
+ " FROM DIFFSCHEMA." + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'");
}
@Test
public void testTenantSpecificTableCanDeclarePK() throws SQLException {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW TENANT_TABLE2 ( \n" +
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + generateRandomString() + "( \n" +
" tenant_col VARCHAR PRIMARY KEY) AS SELECT *\n" +
- " FROM PARENT_TABLE", null, nextTimestamp());
+ " FROM " + PARENT_TABLE_NAME);
}
@Test(expected=ColumnAlreadyExistsException.class)
public void testTenantSpecificTableCannotOverrideParentCol() throws SQLException {
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW TENANT_TABLE2 ( \n" +
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW " + generateRandomString() + " ( \n" +
" user INTEGER) AS SELECT *\n" +
- " FROM PARENT_TABLE", null, nextTimestamp());
+ " FROM " + PARENT_TABLE_NAME);
}
@Test
public void testBaseTableWrongFormatWithTenantTypeId() throws Exception {
// only two PK columns for multi_tenant, multi_type
try {
- createTestTable(getUrl(), "CREATE TABLE BASE_TABLE2 (TENANT_ID VARCHAR NOT NULL PRIMARY KEY, ID VARCHAR, A INTEGER) MULTI_TENANT=true", null, nextTimestamp());
+ createTestTable(getUrl(),
+ "CREATE TABLE " + generateRandomString() +
+ "(TENANT_ID VARCHAR NOT NULL PRIMARY KEY, ID VARCHAR, A INTEGER) MULTI_TENANT=true");
fail();
}
catch (SQLException expected) {
@@ -218,25 +219,13 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testAddDropColumn() throws Exception {
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
conn.setAutoCommit(true);
try {
- conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col) values (1, 'Viva Las Vegas')");
-
+ conn.createStatement().execute("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col) values (1, 'Viva Las Vegas')");
conn.createStatement().execute("alter view " + TENANT_TABLE_NAME + " add tenant_col2 char(1) null");
-
- conn.close();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
- conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
- conn.setAutoCommit(true);
-
- conn.createStatement().executeUpdate("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col2) values (2, 'a')");
- conn.close();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
- conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
- conn.setAutoCommit(true);
+ conn.createStatement().execute("upsert into " + TENANT_TABLE_NAME + " (id, tenant_col2) values (2, 'a')");
ResultSet rs = conn.createStatement().executeQuery("select count(*) from " + TENANT_TABLE_NAME);
rs.next();
@@ -246,24 +235,13 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
rs.next();
assertEquals(1, rs.getInt(1));
- conn.close();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
- conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
- conn.setAutoCommit(true);
-
conn.createStatement().execute("alter view " + TENANT_TABLE_NAME + " drop column tenant_col");
-
- conn.close();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
- conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
- conn.setAutoCommit(true);
-
rs = conn.createStatement().executeQuery("select count(*) from " + TENANT_TABLE_NAME + "");
rs.next();
assertEquals(2, rs.getInt(1));
try {
- rs = conn.createStatement().executeQuery("select tenant_col from TENANT_TABLE");
+ rs = conn.createStatement().executeQuery("select tenant_col from " + TENANT_TABLE_NAME);
fail();
}
catch (ColumnNotFoundException expected) {}
@@ -275,8 +253,7 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testDropOfPKInTenantTablesNotAllowed() throws Exception {
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
// try removing a PK col
@@ -295,8 +272,7 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testColumnMutationInParentTableWithExistingTenantTable() throws Exception {
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
try {
@@ -322,8 +298,7 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testDisallowDropParentTableWithExistingTenantTable() throws Exception {
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
conn.createStatement().executeUpdate("drop table " + PARENT_TABLE_NAME);
@@ -339,18 +314,13 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testAllowDropParentTableWithCascadeAndSingleTenantTable() throws Exception {
- long ts = nextTimestamp();
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
Connection connTenant = null;
try {
// Drop Parent Table
conn.createStatement().executeUpdate("DROP TABLE " + PARENT_TABLE_NAME + " CASCADE");
- conn.close();
-
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
connTenant = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
validateTenantViewIsDropped(conn);
@@ -368,56 +338,58 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testAllDropParentTableWithCascadeWithMultipleTenantTablesAndIndexes() throws Exception {
// Create a second tenant table
- createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL2, TENANT_TABLE_DDL, null, nextTimestamp());
+ String tenantTable2 = "V_" + generateRandomString();
+ createTestTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL2, TENANT_TABLE_DDL.replace(TENANT_TABLE_NAME, tenantTable2));
//TODO Create some tenant specific table indexes
- long ts = nextTimestamp();
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = null;
Connection connTenant1 = null;
Connection connTenant2 = null;
try {
+ List<String> sortedCatalogs = Arrays.asList(TENANT_ID, TENANT_ID2);
+ Collections.sort(sortedCatalogs);
conn = DriverManager.getConnection(getUrl(), props);
DatabaseMetaData meta = conn.getMetaData();
- ResultSet rs = meta.getSuperTables(null, null, StringUtil.escapeLike(TENANT_TABLE_NAME) + "%");
- assertTrue(rs.next());
- assertEquals(TENANT_ID2, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
+ ResultSet rs = meta.getTables(null, "", StringUtil.escapeLike(TENANT_TABLE_NAME), new String[] {PTableType.VIEW.getValue().getString()});
assertTrue(rs.next());
assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
+ assertTableMetaData(rs, null, TENANT_TABLE_NAME, PTableType.VIEW);
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(tenantTable2), new String[] {PTableType.VIEW.getValue().getString()});
+ assertTrue(rs.next());
+ assertEquals(TENANT_ID2, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
+ assertTableMetaData(rs, null, tenantTable2, PTableType.VIEW);
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID), new String[] {PTableType.VIEW.getValue().getString()});
assertTrue(rs.next());
assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
+ assertTableMetaData(rs, null, TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, PTableType.VIEW);
assertFalse(rs.next());
- rs.close();
- conn.close();
// Drop Parent Table
conn.createStatement().executeUpdate("DROP TABLE " + PARENT_TABLE_NAME + " CASCADE");
// Validate Tenant Views are dropped
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
connTenant1 = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
validateTenantViewIsDropped(connTenant1);
connTenant2 = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL2, props);
validateTenantViewIsDropped(connTenant2);
// Validate Tenant Metadata is gone for the Tenant Table TENANT_TABLE_NAME
- conn = DriverManager.getConnection(getUrl(), props);
- meta = conn.getMetaData();
- rs = meta.getSuperTables(null, null, StringUtil.escapeLike(TENANT_TABLE_NAME) + "%");
+ rs = meta.getTables(null, "", StringUtil.escapeLike(TENANT_TABLE_NAME), new String[] {PTableType.VIEW.getValue().getString()});
+ assertFalse(rs.next());
+ rs = meta.getTables(null, "", StringUtil.escapeLike(tenantTable2), new String[] {PTableType.VIEW.getValue().getString()});
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID), new String[] {PTableType.VIEW.getValue().getString()});
assertTrue(rs.next());
assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
+ assertTableMetaData(rs, null, TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, PTableType.VIEW);
assertFalse(rs.next());
- rs.close();
} finally {
if (conn != null) {
@@ -446,29 +418,23 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
@Test
public void testTableMetadataScan() throws Exception {
// create a tenant table with same name for a different tenant to make sure we are not picking it up in metadata scans for TENANT_ID
- String tenantId2 = "tenant2";
+ String tenantId2 = "T_" + generateRandomString();
String secondTenatConnectionURL = PHOENIX_JDBC_TENANT_SPECIFIC_URL.replace(TENANT_ID, tenantId2);
- String tenantTable2 = TENANT_TABLE_NAME+"2";
- createTestTable(secondTenatConnectionURL, TENANT_TABLE_DDL.replace(TENANT_TABLE_NAME, tenantTable2), null, nextTimestamp(), false);
+ String tenantTable2 = "V_" + generateRandomString();
+ createTestTable(secondTenatConnectionURL, TENANT_TABLE_DDL.replace(TENANT_TABLE_NAME, tenantTable2));
- Properties props = new Properties();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
// empty string means global tenant id
// make sure connections w/o tenant id only see non-tenant-specific tables, both SYSTEM and USER
DatabaseMetaData meta = conn.getMetaData();
- ResultSet rs = meta.getTables("", null, null, null);
- assertTrue(rs.next());
- assertTableMetaData(rs, SYSTEM_CATALOG_SCHEMA, SYSTEM_CATALOG_TABLE, SYSTEM);
- assertTrue(rs.next());
- assertTableMetaData(rs, SYSTEM_CATALOG_SCHEMA, SYSTEM_FUNCTION_TABLE, SYSTEM);
- assertTrue(rs.next());
- assertTableMetaData(rs, SYSTEM_CATALOG_SCHEMA, TYPE_SEQUENCE, SYSTEM);
- assertTrue(rs.next());
- assertTableMetaData(rs, SYSTEM_CATALOG_SCHEMA, PhoenixDatabaseMetaData.SYSTEM_STATS_TABLE, SYSTEM);
+ ResultSet rs = meta.getTables("", "", StringUtil.escapeLike(PARENT_TABLE_NAME), new String[] {TABLE.getValue().getString()});
assertTrue(rs.next());
assertTableMetaData(rs, null, PARENT_TABLE_NAME, TABLE);
+ assertFalse(rs.next());
+
+ rs = meta.getTables("", "", StringUtil.escapeLike(PARENT_TABLE_NAME_NO_TENANT_TYPE_ID), new String[] {TABLE.getValue().getString()});
assertTrue(rs.next());
assertTableMetaData(rs, null, PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, TABLE);
assertFalse(rs.next());
@@ -480,16 +446,26 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
assertNotEquals(tenantTable2, rs.getString("TABLE_NAME"));
}
- // null catalog means across all tenant_ids
- rs = meta.getSuperTables(null, null, StringUtil.escapeLike(TENANT_TABLE_NAME) + "%");
+ List<String> sortedTableNames = Arrays.asList(TENANT_TABLE_NAME, TENANT_TABLE_NAME_NO_TENANT_TYPE_ID);
+ Collections.sort(sortedTableNames);
+ List<String> sortedParentNames;
+ if (sortedTableNames.get(0).equals(TENANT_TABLE_NAME)) {
+ sortedParentNames = Arrays.asList(PARENT_TABLE_NAME, PARENT_TABLE_NAME_NO_TENANT_TYPE_ID);
+ } else {
+ sortedParentNames = Arrays.asList(PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, PARENT_TABLE_NAME);
+ }
+ rs = meta.getSuperTables(TENANT_ID, null, null);
assertTrue(rs.next());
assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
+ assertEquals(sortedTableNames.get(0), rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
+ assertEquals(sortedParentNames.get(0), rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
assertTrue(rs.next());
assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
+ assertEquals(sortedTableNames.get(1), rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
+ assertEquals(sortedParentNames.get(1), rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
+ assertFalse(rs.next());
+
+ rs = meta.getSuperTables(tenantId2, null, null);
assertTrue(rs.next());
assertEquals(tenantId2, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
assertEquals(tenantTable2, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
@@ -497,36 +473,22 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
assertFalse(rs.next());
conn.close();
- // Global connection sees all tenant tables
- conn = DriverManager.getConnection(getUrl(), props);
- rs = conn.getMetaData().getSuperTables(TENANT_ID, null, null);
- assertTrue(rs.next());
- assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
- assertTrue(rs.next());
- assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertEquals(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_NAME));
- assertEquals(PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, rs.getString(PhoenixDatabaseMetaData.SUPERTABLE_NAME));
- assertFalse(rs.next());
-
+ Set<String> sortedCatalogs = new HashSet<>(Arrays.asList(TENANT_ID, tenantId2));
rs = conn.getMetaData().getCatalogs();
- assertTrue(rs.next());
- assertEquals(TENANT_ID, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertTrue(rs.next());
- assertEquals(tenantId2, rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
- assertFalse(rs.next());
+ while (rs.next()) {
+ sortedCatalogs.remove(rs.getString(PhoenixDatabaseMetaData.TABLE_CAT));
+ }
+ assertTrue("Should have found both tenant IDs", sortedCatalogs.isEmpty());
} finally {
props.clear();
conn.close();
}
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(nextTimestamp()));
conn = DriverManager.getConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL, props);
try {
// make sure tenant-specific connections only see their own tables and the global tables
DatabaseMetaData meta = conn.getMetaData();
- ResultSet rs = meta.getTables(null, null, null, null);
+ ResultSet rs = meta.getTables("", SYSTEM_CATALOG_SCHEMA, null, new String[] {PTableType.SYSTEM.getValue().getString()});
assertTrue(rs.next());
assertTableMetaData(rs, PhoenixDatabaseMetaData.SYSTEM_CATALOG_SCHEMA, PhoenixDatabaseMetaData.SYSTEM_CATALOG_TABLE, PTableType.SYSTEM);
assertTrue(rs.next());
@@ -535,18 +497,33 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
assertTableMetaData(rs, PhoenixDatabaseMetaData.SYSTEM_CATALOG_SCHEMA, PhoenixDatabaseMetaData.TYPE_SEQUENCE, PTableType.SYSTEM);
assertTrue(rs.next());
assertTableMetaData(rs, SYSTEM_CATALOG_SCHEMA, PhoenixDatabaseMetaData.SYSTEM_STATS_TABLE, PTableType.SYSTEM);
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(tenantTable2), new String[] {TABLE.getValue().getString()});
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(PARENT_TABLE_NAME), new String[] {TABLE.getValue().getString()});
assertTrue(rs.next());
- assertTableMetaData(rs, null, PARENT_TABLE_NAME, PTableType.TABLE);
+ assertTableMetaData(rs, null, PARENT_TABLE_NAME, TABLE);
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(PARENT_TABLE_NAME_NO_TENANT_TYPE_ID), new String[] {TABLE.getValue().getString()});
assertTrue(rs.next());
- assertTableMetaData(rs, null, PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, PTableType.TABLE);
+ assertTableMetaData(rs, null, PARENT_TABLE_NAME_NO_TENANT_TYPE_ID, TABLE);
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(TENANT_TABLE_NAME), new String[] {PTableType.VIEW.getValue().getString()});
assertTrue(rs.next());
assertTableMetaData(rs, null, TENANT_TABLE_NAME, PTableType.VIEW);
+ assertFalse(rs.next());
+
+ rs = meta.getTables(null, "", StringUtil.escapeLike(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID), new String[] {PTableType.VIEW.getValue().getString()});
assertTrue(rs.next());
assertTableMetaData(rs, null, TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, PTableType.VIEW);
assertFalse(rs.next());
// make sure tenants see parent table's columns and their own
- rs = meta.getColumns(null, null, StringUtil.escapeLike(TENANT_TABLE_NAME) + "%", null);
+ rs = meta.getColumns(null, null, StringUtil.escapeLike(TENANT_TABLE_NAME), null);
assertTrue(rs.next());
assertColumnMetaData(rs, null, TENANT_TABLE_NAME, "user", 1);
assertTrue(rs.next());
@@ -557,6 +534,9 @@ public class TenantSpecificTablesDDLIT extends BaseTenantSpecificTablesIT {
assertColumnMetaData(rs, null, TENANT_TABLE_NAME, "id", 3);
assertTrue(rs.next());
assertColumnMetaData(rs, null, TENANT_TABLE_NAME, "tenant_col", 4);
+ assertFalse(rs.next());
+
+ rs = meta.getColumns(null, null, StringUtil.escapeLike(TENANT_TABLE_NAME_NO_TENANT_TYPE_ID), null);
assertTrue(rs.next());
assertColumnMetaData(rs, null, TENANT_TABLE_NAME_NO_TENANT_TYPE_ID, "user", 1);
assertTrue(rs.next());
[26/48] phoenix git commit: PHOENIX-3153 Convert join-related IT
tests to be derived from BaseHBaseManagedTimeTableReuseIT
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java
index aa99886..ec05149 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java
@@ -17,11 +17,6 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.JOIN_CUSTOMER_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_ITEM_TABLE_FULL_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_DISPLAY_NAME;
-import static org.apache.phoenix.util.TestUtil.JOIN_SUPPLIER_TABLE_FULL_NAME;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -33,59 +28,22 @@ 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.query.QueryServices;
-import org.apache.phoenix.schema.TableAlreadyExistsException;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.Before;
-import org.junit.BeforeClass;
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;
-import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT {
-
- private String[] indexDDL;
- private String[] plans;
+public class HashJoinLocalIndexIT extends BaseJoinIT {
public HashJoinLocalIndexIT(String[] indexDDL, String[] plans) {
- this.indexDDL = indexDDL;
- this.plans = plans;
- }
-
- @BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
- @Before
- public void initTable() throws Exception {
- initJoinTableValues(getUrl(), null, null);
- if (indexDDL != null && indexDDL.length > 0) {
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- for (String ddl : indexDDL) {
- try {
- conn.createStatement().execute(ddl);
- } catch (TableAlreadyExistsException e) {
- }
- }
- conn.close();
- }
+ super(indexDDL, plans);
}
@Parameters
@@ -97,30 +55,30 @@ public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT {
"CREATE LOCAL INDEX \"idx_item\" ON " + JOIN_ITEM_TABLE_FULL_NAME + " (name)",
"CREATE LOCAL INDEX \"idx_supplier\" ON " + JOIN_SUPPLIER_TABLE_FULL_NAME + " (name)"
}, {
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [1,'S1']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + " [1,'S1']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1,*] - [1,'T6']\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1,*] - [1,'T6']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"S.:supplier_id\" IN (\"I.supplier_id\")",
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [1,'S1']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + " [1,'S1']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"S.PHONE\"]\n" +
"CLIENT MERGE SORT\n" +
" PARALLEL INNER-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1,*] - [1,'T6']\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1,*] - [1,'T6']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT\n" +
" DYNAMIC SERVER FILTER BY \"S.:supplier_id\" IN (\"I.supplier_id\")",
- "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [1,*] - [1,'S3']\n" +
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_SUPPLIER_TABLE_FULL_NAME + " [1,*] - [1,'S3']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" SERVER AGGREGATE INTO SINGLE ROW\n" +
" PARALLEL LEFT-JOIN TABLE 0\n" +
- " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + " [1,*] - [1,'T6']\n" +
+ " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ITEM_TABLE_FULL_NAME + " [1,*] - [1,'T6']\n" +
" SERVER FILTER BY FIRST KEY ONLY\n" +
" CLIENT MERGE SORT",
}});
@@ -133,7 +91,7 @@ public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- String query = "select phone, i.name from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" where s.name = 'S1' and i.name < 'T6'";
+ String query = "select phone, i.name from " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s join " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i on s.\"supplier_id\" = i.\"supplier_id\" where s.name = 'S1' and i.name < 'T6'";
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue (rs.next());
@@ -142,9 +100,9 @@ public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT {
assertEquals(rs.getString(1), "888-888-1111");
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[0], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[0], QueryUtil.getExplainPlan(rs));
- query = "select phone, max(i.name) from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" where s.name = 'S1' and i.name < 'T6' group by phone";
+ query = "select phone, max(i.name) from " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s join " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i on s.\"supplier_id\" = i.\"supplier_id\" where s.name = 'S1' and i.name < 'T6' group by phone";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -152,9 +110,9 @@ public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT {
assertEquals(rs.getString(2), "T2");
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[1], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[1], QueryUtil.getExplainPlan(rs));
- query = "select max(phone), max(i.name) from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s left join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" and i.name < 'T6' where s.name <= 'S3'";
+ query = "select max(phone), max(i.name) from " + getTableName(conn, JOIN_SUPPLIER_TABLE_FULL_NAME) + " s left join " + getTableName(conn, JOIN_ITEM_TABLE_FULL_NAME) + " i on s.\"supplier_id\" = i.\"supplier_id\" and i.name < 'T6' where s.name <= 'S3'";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
assertTrue (rs.next());
@@ -162,7 +120,7 @@ public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT {
assertEquals(rs.getString(2), "T4");
assertFalse(rs.next());
rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[2], QueryUtil.getExplainPlan(rs));
+ assertPlansEqual(plans[2], QueryUtil.getExplainPlan(rs));
} finally {
conn.close();
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
index 6c3a7f5..27808f5 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelRunListener.java
@@ -24,7 +24,7 @@ import org.junit.runner.notification.RunListener;
public class ParallelRunListener extends RunListener {
// This causes output to go to the console when run through maven
// private static final Log LOG = LogFactory.getLog(ParallelRunListener.class);
- private static final int TEAR_DOWN_THRESHOLD = 200;
+ private static final int TEAR_DOWN_THRESHOLD = 150;
private int testRuns = 0;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c6e703dd/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
index cf8b0a9..17a5577 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithLimitIT.java
@@ -53,6 +53,7 @@ public class QueryWithLimitIT extends BaseOwnClusterIT {
props.put(QueryServices.QUEUE_SIZE_ATTRIB, Integer.toString(1));
props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.TRUE.toString());
props.put(QueryServices.SEQUENCE_SALT_BUCKETS_ATTRIB, Integer.toString(0)); // Prevents RejectedExecutionException when deleting sequences
+ props.put(QueryServices.THREAD_POOL_SIZE_ATTRIB, Integer.toString(4));
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
[21/48] phoenix git commit: PHOENIX-3327 Use same driver for all
tests within a group
Posted by ma...@apache.org.
PHOENIX-3327 Use same driver for all tests within a group
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/fedbca8b
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/fedbca8b
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/fedbca8b
Branch: refs/heads/calcite
Commit: fedbca8bf090baccaaed5d555daeba2ba9da5f32
Parents: bebb5ce
Author: James Taylor <ja...@apache.org>
Authored: Fri Sep 23 13:13:41 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Fri Sep 23 13:13:41 2016 -0700
----------------------------------------------------------------------
.../StatisticsCollectionRunTrackerIT.java | 15 ----
.../apache/phoenix/end2end/AlterSessionIT.java | 59 ++++++-------
.../apache/phoenix/end2end/AlterTableIT.java | 9 +-
.../phoenix/end2end/AlterTableWithViewsIT.java | 14 ----
.../phoenix/end2end/ArrayFillFunctionIT.java | 66 ++++++++-------
.../apache/phoenix/end2end/BaseParallelIT.java | 69 ----------------
.../org/apache/phoenix/end2end/BaseViewIT.java | 15 ----
.../phoenix/end2end/CbrtFunctionEnd2EndIT.java | 27 +++---
.../phoenix/end2end/DisableLocalIndexIT.java | 24 ++----
.../phoenix/end2end/DistinctPrefixFilterIT.java | 24 +++---
.../apache/phoenix/end2end/DynamicColumnIT.java | 19 +++--
.../end2end/GetSetByteBitFunctionEnd2EndIT.java | 8 +-
.../apache/phoenix/end2end/HashJoinMoreIT.java | 16 ----
.../phoenix/end2end/InMemoryOrderByIT.java | 42 ----------
.../apache/phoenix/end2end/IndexExtendedIT.java | 4 +-
.../phoenix/end2end/LikeExpressionIT.java | 16 ++--
.../end2end/ParallelStatsDisabledIT.java | 14 +++-
.../phoenix/end2end/ParallelStatsEnabledIT.java | 12 +--
.../phoenix/end2end/PowerFunctionEnd2EndIT.java | 19 +++--
.../phoenix/end2end/QueryWithOffsetIT.java | 14 ----
.../phoenix/end2end/SerialIteratorsIT.java | 19 ++---
.../phoenix/end2end/SignFunctionEnd2EndIT.java | 27 +++---
.../end2end/SkipScanAfterManualSplitIT.java | 33 +++-----
.../phoenix/end2end/SortMergeJoinMoreIT.java | 16 ----
.../phoenix/end2end/SpooledOrderByIT.java | 40 ---------
.../phoenix/end2end/SpooledSortMergeJoinIT.java | 45 ----------
.../phoenix/end2end/SpooledTmpFileDeleteIT.java | 62 +++++++-------
.../phoenix/end2end/StatsCollectorIT.java | 61 ++++----------
.../end2end/StringToArrayFunctionIT.java | 87 +++++++++++---------
.../phoenix/end2end/TransactionalViewIT.java | 15 ----
.../end2end/index/AsyncIndexDisabledIT.java | 13 ---
.../phoenix/end2end/index/DropMetadataIT.java | 50 +++++------
.../index/GlobalIndexOptimizationIT.java | 20 +----
.../apache/phoenix/end2end/index/IndexIT.java | 15 ----
.../phoenix/end2end/index/LocalIndexIT.java | 2 +-
.../end2end/index/MutableIndexFailureIT.java | 2 +-
.../phoenix/end2end/index/MutableIndexIT.java | 55 +++++--------
.../phoenix/end2end/index/SaltedIndexIT.java | 31 +++----
.../phoenix/end2end/index/ViewIndexIT.java | 2 +-
.../end2end/index/txn/MutableRollbackIT.java | 34 +++-----
.../phoenix/end2end/index/txn/RollbackIT.java | 25 ++----
.../phoenix/iterate/PhoenixQueryTimeoutIT.java | 52 ++++++------
.../iterate/RoundRobinResultIteratorIT.java | 38 ++++-----
.../org/apache/phoenix/rpc/UpdateCacheIT.java | 15 ----
.../phoenix/tx/NotThreadSafeTransactionIT.java | 62 ++++++++++----
.../org/apache/phoenix/tx/TransactionIT.java | 54 ------------
.../org/apache/phoenix/tx/TxCheckpointIT.java | 29 +++----
.../phoenix/query/QueryServicesOptions.java | 8 +-
.../java/org/apache/phoenix/util/QueryUtil.java | 2 +-
.../apache/phoenix/jdbc/PhoenixDriverTest.java | 2 +
.../java/org/apache/phoenix/query/BaseTest.java | 4 +-
.../phoenix/query/QueryServicesTestImpl.java | 2 +
52 files changed, 481 insertions(+), 927 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
index 759ad4f..cf475f9 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/coprocessor/StatisticsCollectionRunTrackerIT.java
@@ -26,7 +26,6 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.List;
-import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HRegionInfo;
@@ -35,33 +34,19 @@ import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.end2end.ParallelStatsEnabledIT;
import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.stats.StatisticsCollectionRunTracker;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class StatisticsCollectionRunTrackerIT extends ParallelStatsEnabledIT {
private static final StatisticsCollectionRunTracker tracker = StatisticsCollectionRunTracker
.getInstance(new Configuration());
private String fullTableName;
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Must update config before starting server
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- props.put(QueryServices.QUEUE_SIZE_ATTRIB, Integer.toString(1024));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Before
public void generateTableNames() {
String schemaName = TestUtil.DEFAULT_SCHEMA_NAME;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
index ffd9656..bf666e4 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterSessionIT.java
@@ -17,13 +17,9 @@
*/
package org.apache.phoenix.end2end;
-import org.apache.hadoop.hbase.client.Consistency;
-import org.apache.phoenix.jdbc.PhoenixConnection;
-import org.apache.phoenix.util.PhoenixRuntime;
-import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.QueryUtil;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -31,9 +27,13 @@ import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
-import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.apache.hadoop.hbase.client.Consistency;
+import org.apache.phoenix.jdbc.PhoenixConnection;
+import org.apache.phoenix.util.PhoenixRuntime;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.QueryUtil;
+import org.junit.Before;
+import org.junit.Test;
/**
*
@@ -42,53 +42,48 @@ import static org.junit.Assert.assertTrue;
*/
public class AlterSessionIT extends ParallelStatsDisabledIT {
- private static final String TABLE_NAME = generateUniqueName();
- private static Connection testConn;
+ private String tableName;
- @BeforeClass
- public static void initTable() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ tableName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- testConn = DriverManager.getConnection(getUrl(), props);
- assertEquals(Consistency.STRONG, ((PhoenixConnection)testConn).getConsistency());
- testConn.createStatement().execute(
- "create table " + TABLE_NAME + " (col1 varchar primary key)");
- testConn.commit();
+ try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ conn.createStatement().execute(
+ "create table " + tableName + " (col1 varchar primary key)");
+ }
}
@Test
public void testUpdateConsistency() throws Exception {
- try {
- Statement st = testConn.createStatement();
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+ Statement st = conn.createStatement();
st.execute("alter session set Consistency = 'timeline'");
- ResultSet rs = st.executeQuery("explain select * from " + TABLE_NAME);
- assertEquals(Consistency.TIMELINE, ((PhoenixConnection)testConn).getConsistency());
+ ResultSet rs = st.executeQuery("explain select * from " + tableName);
+ assertEquals(Consistency.TIMELINE, conn.unwrap(PhoenixConnection.class).getConsistency());
String queryPlan = QueryUtil.getExplainPlan(rs);
assertTrue(queryPlan.indexOf("TIMELINE") > 0);
// turn off timeline read consistency
st.execute("alter session set Consistency = 'strong'");
- rs = st.executeQuery("explain select * from " + TABLE_NAME);
+ rs = st.executeQuery("explain select * from " + tableName);
queryPlan = QueryUtil.getExplainPlan(rs);
assertTrue(queryPlan.indexOf("TIMELINE") < 0);
- } finally {
- this.testConn.close();
}
}
@Test
public void testSetConsistencyInURL() throws Exception {
- try {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl() + PhoenixRuntime.JDBC_PROTOCOL_TERMINATOR +
- "Consistency=TIMELINE", props);
+ try (Connection conn = DriverManager.getConnection(getUrl() + PhoenixRuntime.JDBC_PROTOCOL_TERMINATOR +
+ "Consistency=TIMELINE", props)) {
assertEquals(Consistency.TIMELINE, ((PhoenixConnection)conn).getConsistency());
Statement st = conn.createStatement();
- ResultSet rs = st.executeQuery("explain select * from " + TABLE_NAME);
+ ResultSet rs = st.executeQuery("explain select * from " + tableName);
String queryPlan = QueryUtil.getExplainPlan(rs);
assertTrue(queryPlan.indexOf("TIMELINE") > 0);
conn.close();
- } finally {
- this.testConn.close();
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
index 031fd5c..0125a63 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
@@ -51,6 +51,7 @@ import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.query.BaseTest;
import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.PTableKey;
import org.apache.phoenix.schema.TableNotFoundException;
@@ -2146,8 +2147,8 @@ public class AlterTableIT extends ParallelStatsDisabledIT {
assertTrue(t.isMultiTenant());
// check table metadata updated server side
- ResultSet rs = conn.createStatement().executeQuery("SELECT DISABLE_WAL, MULTI_TENANT FROM SYSTEM.CATALOG " +
- "WHERE table_name = '"
+ ResultSet rs = conn.createStatement().executeQuery("SELECT DISABLE_WAL, MULTI_TENANT FROM SYSTEM.CATALOG "
+ + "WHERE table_name = '"
+ dataTableFullName + "' AND DISABLE_WAL IS NOT NULL AND MULTI_TENANT IS NOT NULL");
assertTrue(rs.next());
assertFalse(rs.getBoolean(1));
@@ -2234,7 +2235,9 @@ public class AlterTableIT extends ParallelStatsDisabledIT {
@Test
public void testCreatingTxnTableFailsIfTxnsDisabled() throws Exception {
- try (Connection conn = DriverManager.getConnection(getUrl())) {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ props.setProperty(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(false));
+ try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
// creating a transactional table should fail if transactions are disabled
try {
conn.createStatement().execute("CREATE TABLE " + dataTableFullName + "(k INTEGER PRIMARY KEY, v VARCHAR) TRANSACTIONAL=true");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
index c9e2f26..e6bf2d2 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableWithViewsIT.java
@@ -32,7 +32,6 @@ import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
import org.apache.commons.lang.ArrayUtils;
import org.apache.hadoop.hbase.client.HTableInterface;
@@ -41,20 +40,15 @@ import org.apache.phoenix.coprocessor.PhoenixTransactionalProcessor;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.schema.PName;
import org.apache.phoenix.schema.PNameFactory;
import org.apache.phoenix.schema.PTableKey;
import org.apache.phoenix.schema.PTableType;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
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.Maps;
-
@RunWith(Parameterized.class)
public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
@@ -72,14 +66,6 @@ public class AlterTableWithViewsIT extends ParallelStatsDisabledIT {
return Arrays.asList(false, true);
}
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
private String generateDDL(String format) {
return String.format(format, isMultiTenant ? "TENANT_ID VARCHAR NOT NULL, " : "",
isMultiTenant ? "TENANT_ID, " : "", isMultiTenant ? "MULTI_TENANT=true" : "");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
index 4680998..96bafad 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ArrayFillFunctionIT.java
@@ -23,22 +23,30 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.math.BigDecimal;
-import java.sql.*;
-
-import org.junit.BeforeClass;
+import java.sql.Array;
+import java.sql.Connection;
+import java.sql.Date;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+import org.junit.Before;
import org.junit.Test;
public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
- private static final String REGIONS = generateUniqueName();
+ private String tableName;
- @BeforeClass
- public static void initTables() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ tableName = generateUniqueName();
Connection conn = DriverManager.getConnection(getUrl());
- String ddl = "CREATE TABLE " + REGIONS
+ String ddl = "CREATE TABLE " + tableName
+ " (region_name VARCHAR PRIMARY KEY,length1 INTEGER, length2 INTEGER,date DATE,time TIME,timestamp TIMESTAMP,varchar VARCHAR,integer INTEGER,double DOUBLE,bigint BIGINT,char CHAR(15),double1 DOUBLE,char1 CHAR(17),nullcheck INTEGER,chars2 CHAR(15)[], varchars2 VARCHAR[])";
conn.createStatement().execute(ddl);
- String dml = "UPSERT INTO " + REGIONS
+ String dml = "UPSERT INTO " + tableName
+ "(region_name,length1,length2,date,time,timestamp,varchar,integer,double,bigint,char,double1,char1,nullcheck,chars2,varchars2) VALUES('SF Bay Area',"
+
"0," +
@@ -68,7 +76,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(varchar,5) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(varchar,5) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
String[] strings = new String[]{"foo", "foo", "foo", "foo", "foo"};
@@ -85,7 +93,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(integer,4) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(integer,4) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{34, 34, 34, 34};
@@ -103,7 +111,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(double,4) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(double,4) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{23.45, 23.45, 23.45, 23.45};
@@ -121,7 +129,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(bigint,4) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(bigint,4) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{34567l, 34567l, 34567l, 34567l};
@@ -139,7 +147,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(char,4) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(char,4) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{"foo", "foo", "foo", "foo"};
@@ -156,7 +164,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(varchar,4) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(varchar,4) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{"foo", "foo", "foo", "foo"};
@@ -173,7 +181,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(date,3) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(date,3) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{new Date(1432102334184l), new Date(1432102334184l), new Date(1432102334184l)};
@@ -190,7 +198,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(time,3) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(time,3) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{new Time(1432102334184l), new Time(1432102334184l), new Time(1432102334184l)};
@@ -207,7 +215,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(timestamp,3) FROM " + REGIONS + " WHERE region_name = 'SF Bay Area'");
+ "SELECT ARRAY_FILL(timestamp,3) FROM " + tableName + " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
Object[] objects = new Object[]{new Timestamp(1432102334184l), new Timestamp(1432102334184l), new Timestamp(1432102334184l)};
@@ -224,7 +232,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(timestamp,length2) FROM " + REGIONS
+ "SELECT ARRAY_FILL(timestamp,length2) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -242,7 +250,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(timestamp,length1) FROM " + REGIONS
+ "SELECT ARRAY_FILL(timestamp,length1) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -260,7 +268,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(ARRAY_ELEM(ARRAY[23,45],1),3) FROM " + REGIONS
+ "SELECT ARRAY_FILL(ARRAY_ELEM(ARRAY[23,45],1),3) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -279,7 +287,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL('hello', ARRAY_LENGTH(ARRAY[34, 45])) FROM " + REGIONS
+ "SELECT ARRAY_FILL('hello', ARRAY_LENGTH(ARRAY[34, 45])) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -298,7 +306,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT ARRAY_FILL(3.4, ARRAY_LENGTH(ARRAY[34, 45])) FROM " + REGIONS
+ "SELECT ARRAY_FILL(3.4, ARRAY_LENGTH(ARRAY[34, 45])) FROM " + tableName
+ " WHERE region_name = 'SF Bay Area'");
assertTrue(rs.next());
@@ -491,7 +499,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT region_name FROM " + REGIONS + " WHERE ARRAY[12, 12, 12, 12]=ARRAY_FILL(12,4)");
+ "SELECT region_name FROM " + tableName + " WHERE ARRAY[12, 12, 12, 12]=ARRAY_FILL(12,4)");
assertTrue(rs.next());
assertEquals("SF Bay Area", rs.getString(1));
@@ -505,7 +513,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT region_name FROM " + REGIONS + " WHERE varchar=ANY(ARRAY_FILL('foo',3))");
+ "SELECT region_name FROM " + tableName + " WHERE varchar=ANY(ARRAY_FILL('foo',3))");
assertTrue(rs.next());
assertEquals("SF Bay Area", rs.getString(1));
@@ -518,7 +526,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
- rs = conn.createStatement().executeQuery("SELECT region_name FROM " + REGIONS
+ rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName
+ " WHERE ARRAY['2345', '2345', '2345', '2345']=ARRAY_FILL('2345', 4)");
assertTrue(rs.next());
@@ -532,7 +540,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
- rs = conn.createStatement().executeQuery("SELECT region_name FROM " + REGIONS
+ rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName
+ " WHERE ARRAY[23.45, 23.45, 23.45]=ARRAY_FILL(23.45, 3)");
assertTrue(rs.next());
@@ -546,7 +554,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
- rs = conn.createStatement().executeQuery("SELECT region_name FROM " + REGIONS
+ rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName
+ " WHERE ARRAY['foo','foo','foo','foo','foo']=ARRAY_FILL(varchar,5)");
assertTrue(rs.next());
@@ -561,7 +569,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT region_name FROM " + REGIONS + " WHERE varchars2=ARRAY_FILL('hello',3)");
+ "SELECT region_name FROM " + tableName + " WHERE varchars2=ARRAY_FILL('hello',3)");
assertTrue(rs.next());
assertEquals("SF Bay Area", rs.getString(1));
@@ -575,7 +583,7 @@ public class ArrayFillFunctionIT extends ParallelStatsDisabledIT {
ResultSet rs;
rs = conn.createStatement().executeQuery(
- "SELECT region_name FROM " + REGIONS + " WHERE ARRAY[2,2,2,2]=ARRAY_FILL(2,4)");
+ "SELECT region_name FROM " + tableName + " WHERE ARRAY[2,2,2,2]=ARRAY_FILL(2,4)");
assertTrue(rs.next());
assertEquals("SF Bay Area", rs.getString(1));
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseParallelIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseParallelIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseParallelIT.java
deleted file mode 100644
index 14473f1..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseParallelIT.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.phoenix.query.BaseTest;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-
-/**
- * Base class for tests that create unique tables for
- * every test enabling them to be
- * 1) run in parallel
- * 2) not have to delete any tables
- *
- * We need to separate these from tests that rely on clients
- * to set timestamps, because we create/destroy the Phoenix tables
- * between tests and only allow a table time stamp to increase.
- * Without this separation table deletion/creation would fail.
- *
- * All tests extending this class use the mini cluster that is
- * shared by all classes extending this class
- *
- * Remember to use BaseTest.generateRandomString() to generate table
- * names for your tests otherwise there might be naming collisions between
- * other tests.
- */
-public abstract class BaseParallelIT extends BaseTest {
- protected static Configuration getTestClusterConfig() {
- // don't want callers to modify config.
- return new Configuration(config);
- }
-
- @BeforeClass
- public static void doSetup() throws Exception {
- setUpTestDriver(ReadOnlyProps.EMPTY_PROPS);
- }
-
- @AfterClass
- public static void doTeardown() throws Exception {
- // no teardown since we are creating unique table names
- // just destroy our test driver
- destroyDriver();
- }
-
- @After
- public void cleanUpAfterTest() throws Exception {
- // no cleanup since we are using unique table names
- }
-
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
index 686b39f..478b234 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java
@@ -31,7 +31,6 @@ import java.sql.Statement;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.client.HTableInterface;
@@ -43,20 +42,15 @@ import org.apache.hadoop.hbase.util.Pair;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixStatement;
import org.apache.phoenix.query.KeyRange;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.MetaDataUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.ScanUtil;
import org.apache.phoenix.util.SchemaUtil;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
-import com.google.common.collect.Maps;
-
@RunWith(Parameterized.class)
public abstract class BaseViewIT extends ParallelStatsEnabledIT {
@@ -66,15 +60,6 @@ public abstract class BaseViewIT extends ParallelStatsEnabledIT {
protected String tableDDLOptions;
protected boolean transactional;
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
- // TODO: don't repeat this
- props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
public BaseViewIT( boolean transactional) {
StringBuilder optionBuilder = new StringBuilder();
this.transactional = transactional;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
index 98aa819..d34b6ae 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CbrtFunctionEnd2EndIT.java
@@ -28,7 +28,6 @@ import java.sql.ResultSet;
import org.apache.phoenix.expression.function.CbrtFunction;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -38,20 +37,22 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
private static final double ZERO = 1e-8;
- private static final String TEST_SIGNED = generateUniqueName();
- private static final String TEST_UNSIGNED = generateUniqueName();
+ private String signedTableName;
+ private String unsignedTableName;
- @BeforeClass
- public static void initTable() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ signedTableName = generateUniqueName();
+ unsignedTableName = generateUniqueName();
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = DriverManager.getConnection(getUrl());
String ddl;
- ddl = "CREATE TABLE " + TEST_SIGNED
+ ddl = "CREATE TABLE " + signedTableName
+ " (k VARCHAR NOT NULL PRIMARY KEY, doub DOUBLE, fl FLOAT, inte INTEGER, lon BIGINT, smalli SMALLINT, tinyi TINYINT)";
conn.createStatement().execute(ddl);
- ddl = "CREATE TABLE " + TEST_UNSIGNED
+ ddl = "CREATE TABLE " + unsignedTableName
+ " (k VARCHAR NOT NULL PRIMARY KEY, doub UNSIGNED_DOUBLE, fl UNSIGNED_FLOAT, inte UNSIGNED_INT, lon UNSIGNED_LONG, smalli UNSIGNED_SMALLINT, tinyi UNSIGNED_TINYINT)";
conn.createStatement().execute(ddl);
conn.commit();
@@ -62,7 +63,7 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private void updateSignedTable(Connection conn, double data) throws Exception {
PreparedStatement stmt = conn.prepareStatement(
- "UPSERT INTO " + TEST_SIGNED + " VALUES (?, ?, ?, ?, ?, ?, ?)");
+ "UPSERT INTO " + signedTableName + " VALUES (?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, KEY);
Double d = Double.valueOf(data);
stmt.setDouble(2, d.doubleValue());
@@ -77,7 +78,7 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private void updateUnsignedTable(Connection conn, double data) throws Exception {
PreparedStatement stmt = conn.prepareStatement(
- "UPSERT INTO " + TEST_UNSIGNED + " VALUES (?, ?, ?, ?, ?, ?, ?)");
+ "UPSERT INTO " + unsignedTableName + " VALUES (?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, KEY);
Double d = Double.valueOf(data);
stmt.setDouble(2, d.doubleValue());
@@ -94,7 +95,7 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
updateSignedTable(conn, data);
ResultSet rs = conn.createStatement().executeQuery(
"SELECT CBRT(doub),CBRT(fl),CBRT(inte),CBRT(lon),CBRT(smalli),CBRT(tinyi) FROM "
- + TEST_SIGNED);
+ + signedTableName);
assertTrue(rs.next());
Double d = Double.valueOf(data);
assertTrue(Math.abs(rs.getDouble(1) - Math.cbrt(d.doubleValue())) < ZERO);
@@ -104,7 +105,7 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
assertTrue(Math.abs(rs.getDouble(5) - Math.cbrt(d.shortValue())) < ZERO);
assertTrue(Math.abs(rs.getDouble(6) - Math.cbrt(d.byteValue())) < ZERO);
assertTrue(!rs.next());
- PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + TEST_SIGNED
+ PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + signedTableName
+ " WHERE CBRT(doub)>0 AND CBRT(fl)>0 AND CBRT(inte)>0 AND CBRT(lon)>0 AND CBRT(smalli)>0 AND CBRT(tinyi)>0");
rs = stmt.executeQuery();
if (data > 0) {
@@ -118,7 +119,7 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
updateUnsignedTable(conn, data);
ResultSet rs = conn.createStatement().executeQuery(
"SELECT CBRT(doub),CBRT(fl),CBRT(inte),CBRT(lon),CBRT(smalli),CBRT(tinyi) FROM "
- + TEST_UNSIGNED);
+ + unsignedTableName);
assertTrue(rs.next());
Double d = Double.valueOf(data);
assertTrue(Math.abs(rs.getDouble(1) - Math.cbrt(d.doubleValue())) < ZERO);
@@ -128,7 +129,7 @@ public class CbrtFunctionEnd2EndIT extends ParallelStatsDisabledIT {
assertTrue(Math.abs(rs.getDouble(5) - Math.cbrt(d.shortValue())) < ZERO);
assertTrue(Math.abs(rs.getDouble(6) - Math.cbrt(d.byteValue())) < ZERO);
assertTrue(!rs.next());
- PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + TEST_UNSIGNED
+ PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + unsignedTableName
+ " WHERE CBRT(doub)>0 AND CBRT(fl)>0 AND CBRT(inte)>0 AND CBRT(lon)>0 AND CBRT(smalli)>0 AND CBRT(tinyi)>0");
rs = stmt.executeQuery();
if (data > 0) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
index 10f970f..8eab9e2 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DisableLocalIndexIT.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.fail;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
-import java.util.Map;
import java.util.Properties;
import org.apache.hadoop.hbase.client.HBaseAdmin;
@@ -36,26 +35,16 @@ import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.MetaDataUtil;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.apache.phoenix.util.TestUtil;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class DisableLocalIndexIT extends ParallelStatsDisabledIT {
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- // Must update config before starting server
- props.put(QueryServices.ALLOW_LOCAL_INDEX_ATTRIB, Boolean.FALSE.toString());
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
@Test
public void testDisabledLocalIndexes() throws Exception {
- Connection conn = DriverManager.getConnection(getUrl());
+ Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ props.setProperty(QueryServices.ALLOW_LOCAL_INDEX_ATTRIB, Boolean.FALSE.toString());
+ Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(true);
String baseName = generateUniqueName();
String tableName = baseName+ "_TABLE";
@@ -78,9 +67,10 @@ public class DisableLocalIndexIT extends ParallelStatsDisabledIT {
admin.close();
}
- Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, "t1");
- Connection tsconn = DriverManager.getConnection(getUrl(), props);
+ Properties tsconnProps = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ tsconnProps.setProperty(QueryServices.ALLOW_LOCAL_INDEX_ATTRIB, Boolean.FALSE.toString());
+ tsconnProps.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, "t1");
+ Connection tsconn = DriverManager.getConnection(getUrl(), tsconnProps);
tsconn.createStatement().execute("CREATE VIEW " + viewName + "(V1 VARCHAR) AS SELECT * FROM " + tableName);
tsconn.createStatement().execute("CREATE INDEX " + indexName1 + " ON " + viewName + "(V1)");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
index 87edc25..3d88a43 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java
@@ -32,19 +32,21 @@ import java.util.Properties;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
public class DistinctPrefixFilterIT extends ParallelStatsDisabledIT {
- private static final String testTableF = generateUniqueName();
- private static final String testTableV = generateUniqueName();
- private static final String testSeq = testTableF + "_seq";
private static final String PREFIX = "SERVER DISTINCT PREFIX";
- private static Connection conn;
+ private String testTableF;
+ private String testTableV;
+ private String testSeq;
+ private Connection conn;
- @BeforeClass
- public static void doSetup() throws Exception {
- ParallelStatsDisabledIT.doSetup();
+ @Before
+ public void initTables() throws Exception {
+ testTableF = generateUniqueName();
+ testTableV = generateUniqueName();
+ testSeq = "SEQ_" + generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
conn = DriverManager.getConnection(getUrl(), props);
@@ -367,7 +369,7 @@ public class DistinctPrefixFilterIT extends ParallelStatsDisabledIT {
assertFalse(res.next());
}
- private static void insertPrefixF(int prefix1, int prefix2) throws SQLException {
+ private void insertPrefixF(int prefix1, int prefix2) throws SQLException {
String query = "UPSERT INTO " + testTableF
+ "(prefix1, prefix2, prefix3, col1, col2) VALUES(?,?,NEXT VALUE FOR "+testSeq+",rand(), trunc(rand()*1000))";
PreparedStatement stmt = conn.prepareStatement(query);
@@ -376,7 +378,7 @@ public class DistinctPrefixFilterIT extends ParallelStatsDisabledIT {
stmt.execute();
}
- private static void insertPrefixV(String prefix1, String prefix2) throws SQLException {
+ private void insertPrefixV(String prefix1, String prefix2) throws SQLException {
String query = "UPSERT INTO " + testTableV
+ "(prefix1, prefix2, prefix3, col1, col2) VALUES(?,?,NEXT VALUE FOR "+testSeq+",rand(), trunc(rand()*1000))";
PreparedStatement stmt = conn.prepareStatement(query);
@@ -385,7 +387,7 @@ public class DistinctPrefixFilterIT extends ParallelStatsDisabledIT {
stmt.execute();
}
- private static void multiply() throws SQLException {
+ private void multiply() throws SQLException {
conn.prepareStatement("UPSERT INTO " + testTableF
+ " SELECT prefix1,prefix2,NEXT VALUE FOR "+testSeq+",rand(), trunc(rand()*1000) FROM "+testTableF).execute();
conn.prepareStatement("UPSERT INTO " + testTableV
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicColumnIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicColumnIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicColumnIT.java
index 3fc05a7..25e7230 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicColumnIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DynamicColumnIT.java
@@ -18,7 +18,6 @@
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.HBASE_DYNAMIC_COLUMNS;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -48,7 +47,6 @@ import org.apache.phoenix.schema.ColumnFamilyNotFoundException;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.SchemaUtil;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -63,14 +61,15 @@ public class DynamicColumnIT extends ParallelStatsDisabledIT {
private static final byte[] FAMILY_NAME_A = Bytes.toBytes(SchemaUtil.normalizeIdentifier("A"));
private static final byte[] FAMILY_NAME_B = Bytes.toBytes(SchemaUtil.normalizeIdentifier("B"));
- private static String tableName = "TESTTBL";
+ private String tableName;
- @BeforeClass
- public static void doBeforeTestSetup() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ tableName = generateUniqueName();
try (PhoenixConnection pconn = DriverManager.getConnection(getUrl()).unwrap(PhoenixConnection.class)) {
ConnectionQueryServices services = pconn.getQueryServices();
try (HBaseAdmin admin = services.getAdmin()) {
- HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("TESTTBL"));
+ HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
htd.addFamily(new HColumnDescriptor(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES));
htd.addFamily(new HColumnDescriptor(FAMILY_NAME_A));
htd.addFamily(new HColumnDescriptor(FAMILY_NAME_B));
@@ -101,7 +100,13 @@ public class DynamicColumnIT extends ParallelStatsDisabledIT {
// Create Phoenix table after HBase table was created through the native APIs
// The timestamp of the table creation must be later than the timestamp of the data
- ensureTableCreated(getUrl(), tableName, HBASE_DYNAMIC_COLUMNS);
+ pconn.createStatement().execute("create table " + tableName +
+ " (entry varchar not null," +
+ " F varchar," +
+ " A.F1v1 varchar," +
+ " A.F1v2 varchar," +
+ " B.F2v1 varchar" +
+ " CONSTRAINT pk PRIMARY KEY (entry))");
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
index 98d1478..31afb49 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GetSetByteBitFunctionEnd2EndIT.java
@@ -32,7 +32,6 @@ import org.apache.phoenix.expression.function.GetByteFunction;
import org.apache.phoenix.expression.function.SetBitFunction;
import org.apache.phoenix.expression.function.SetByteFunction;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -42,10 +41,11 @@ import org.junit.Test;
public class GetSetByteBitFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
- private static final String TABLE_NAME = generateUniqueName();
+ private String TABLE_NAME;
- @BeforeClass
- public static void initTable() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ TABLE_NAME = generateUniqueName();
Connection conn = null;
PreparedStatement stmt = null;
try {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
index 5f04ead..52e8006 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinMoreIT.java
@@ -28,18 +28,12 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
-import java.util.Map;
import java.util.Properties;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class HashJoinMoreIT extends ParallelStatsDisabledIT {
private final String[] plans = new String[] {
/*
@@ -91,16 +85,6 @@ public class HashJoinMoreIT extends ParallelStatsDisabledIT {
" DYNAMIC SERVER FILTER BY (LHS.COL0, LHS.COL1, LHS.COL2) IN ((RHS.COL1, RHS.COL2, TO_INTEGER((RHS.COL3 - 1))))",
};
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Test
public void testJoinOverSaltedTables() throws Exception {
String tempTableNoSalting = generateUniqueName();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InMemoryOrderByIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InMemoryOrderByIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InMemoryOrderByIT.java
deleted file mode 100644
index 87a0b4b..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InMemoryOrderByIT.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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;
-
-import java.util.Map;
-
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
-
-import com.google.common.collect.Maps;
-
-
-public class InMemoryOrderByIT extends OrderByIT {
-
- public InMemoryOrderByIT() {
- }
-
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.SPOOL_THRESHOLD_BYTES_ATTRIB, Integer.toString(1024*1024));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
index e3a541d..cfbc9eb 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexExtendedIT.java
@@ -374,9 +374,9 @@ public class IndexExtendedIT extends BaseOwnClusterIT {
}
}
- private Connection getConnectionForLocalIndexTest() throws SQLException{
+ private static Connection getConnectionForLocalIndexTest() throws SQLException{
Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
- props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.TRUE.toString());
+ props.setProperty(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.TRUE.toString());
return DriverManager.getConnection(getUrl(),props);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
index f522817..3dba4d5 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LikeExpressionIT.java
@@ -30,21 +30,21 @@ import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
public class LikeExpressionIT extends ParallelStatsDisabledIT {
- private static final String TEST_TABLE = generateUniqueName();
+ private String tableName;
- @BeforeClass
- public static void doBeforeTestSetup() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ tableName = generateUniqueName();
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = DriverManager.getConnection(getUrl());
String ddl;
- ddl = "CREATE TABLE " + TEST_TABLE + " (k VARCHAR NOT NULL PRIMARY KEY, i INTEGER)";
+ ddl = "CREATE TABLE " + tableName + " (k VARCHAR NOT NULL PRIMARY KEY, i INTEGER)";
conn.createStatement().execute(ddl);
conn.commit();
} finally {
@@ -58,9 +58,9 @@ public class LikeExpressionIT extends ParallelStatsDisabledIT {
insertRow(conn, "321n7-App-2-", 32);
}
- private static void insertRow(Connection conn, String k, int i) throws SQLException {
+ private void insertRow(Connection conn, String k, int i) throws SQLException {
PreparedStatement stmt = conn.prepareStatement(
- "UPSERT INTO " + TEST_TABLE + " VALUES (?, ?)");
+ "UPSERT INTO " + tableName + " VALUES (?, ?)");
stmt.setString(1, k);
stmt.setInt(2, i);
stmt.executeUpdate();
@@ -69,7 +69,7 @@ public class LikeExpressionIT extends ParallelStatsDisabledIT {
private void testLikeExpression(Connection conn, String likeStr, int numResult, int expectedSum)
throws Exception {
- String cmd = "select k, i from " + TEST_TABLE + " where k like '" + likeStr + "'";
+ String cmd = "select k, i from " + tableName + " where k like '" + likeStr + "'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(cmd);
int sum = 0;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsDisabledIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsDisabledIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsDisabledIT.java
index 4575867..19a208d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsDisabledIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsDisabledIT.java
@@ -18,13 +18,21 @@
package org.apache.phoenix.end2end;
+import org.apache.phoenix.query.BaseTest;
+import org.apache.phoenix.util.ReadOnlyProps;
+import org.junit.BeforeClass;
import org.junit.experimental.categories.Category;
/**
- * Base class for tests that do not have statistics enabled.
- *
+ * Base class for tests whose methods run in parallel with statistics disabled.
+ * You must create unique names using {@link #generateUniqueName()} for each
+ * table and sequence used to prevent collisions.
*/
@Category(ParallelStatsDisabledTest.class)
-public abstract class ParallelStatsDisabledIT extends BaseParallelIT {
+public abstract class ParallelStatsDisabledIT extends BaseTest {
+ @BeforeClass
+ public static void doSetup() throws Exception {
+ setUpTestDriver(ReadOnlyProps.EMPTY_PROPS);
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
index 322cb9e..312b49d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParallelStatsEnabledIT.java
@@ -20,6 +20,7 @@ package org.apache.phoenix.end2end;
import java.util.Map;
+import org.apache.phoenix.query.BaseTest;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.ReadOnlyProps;
import org.junit.BeforeClass;
@@ -28,17 +29,16 @@ import org.junit.experimental.categories.Category;
import com.google.common.collect.Maps;
/**
- *
- * Base class for tests that have statistics enabled.
- *
+ * Base class for tests whose methods run in parallel with statistics enabled.
+ * You must create unique names using {@link #generateUniqueName()} for each
+ * table and sequence used to prevent collisions.
*/
@Category(ParallelStatsEnabledTest.class)
-public abstract class ParallelStatsEnabledIT extends BaseParallelIT {
+public abstract class ParallelStatsEnabledIT extends BaseTest {
@BeforeClass
- @Shadower(classBeingShadowed = BaseParallelIT.class)
public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(5);
+ Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
props.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20));
setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
index 1fb45c7..2d26be8 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PowerFunctionEnd2EndIT.java
@@ -27,7 +27,6 @@ import java.sql.ResultSet;
import org.apache.phoenix.expression.function.PowerFunction;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -37,8 +36,8 @@ public class PowerFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
private static final double ZERO = 1e-9;
- private static final String TEST_SIGNED = generateUniqueName();
- private static final String TEST_UNSIGNED = generateUniqueName();
+ private String signedTableName;
+ private String unsignedTableName;
private static boolean twoDoubleEquals(double a, double b) {
if (Double.isNaN(a) ^ Double.isNaN(b)) return false;
@@ -55,17 +54,19 @@ public class PowerFunctionEnd2EndIT extends ParallelStatsDisabledIT {
}
}
- @BeforeClass
- public static void initTable() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ signedTableName = generateUniqueName();
+ unsignedTableName = generateUniqueName();
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = DriverManager.getConnection(getUrl());
String ddl;
- ddl = "CREATE TABLE " + TEST_SIGNED
+ ddl = "CREATE TABLE " + signedTableName
+ " (k VARCHAR NOT NULL PRIMARY KEY, doub DOUBLE, fl FLOAT, inte INTEGER, lon BIGINT, smalli SMALLINT, tinyi TINYINT)";
conn.createStatement().execute(ddl);
- ddl = "CREATE TABLE " + TEST_UNSIGNED
+ ddl = "CREATE TABLE " + unsignedTableName
+ " (k VARCHAR NOT NULL PRIMARY KEY, doub UNSIGNED_DOUBLE, fl UNSIGNED_FLOAT, inte UNSIGNED_INT, lon UNSIGNED_LONG, smalli UNSIGNED_SMALLINT, tinyi UNSIGNED_TINYINT)";
conn.createStatement().execute(ddl);
conn.commit();
@@ -140,8 +141,8 @@ public class PowerFunctionEnd2EndIT extends ParallelStatsDisabledIT {
public void test() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
for (double d : new double[] { 0.0, 1.0, -1.0, 123.1234, -123.1234 }) {
- testNumberSpec(conn, d, TEST_SIGNED);
- if (d >= 0) testNumberSpec(conn, d, TEST_UNSIGNED);
+ testNumberSpec(conn, d, signedTableName);
+ if (d >= 0) testNumberSpec(conn, d, unsignedTableName);
}
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
index c60b403..04d1126 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryWithOffsetIT.java
@@ -31,22 +31,17 @@ import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
import org.junit.Before;
-import org.junit.BeforeClass;
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.Maps;
-
@RunWith(Parameterized.class)
public class QueryWithOffsetIT extends ParallelStatsDisabledIT {
@@ -57,15 +52,6 @@ public class QueryWithOffsetIT extends ParallelStatsDisabledIT {
private String ddl;
private String tableName;
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String, String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(true));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
public QueryWithOffsetIT(String preSplit) {
this.isSalted = preSplit.startsWith(" SALT_BUCKETS");
this.preSplit = preSplit;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
index 37da39e..1360a08 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SerialIteratorsIT.java
@@ -25,18 +25,13 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.jdbc.PhoenixStatement;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class SerialIteratorsIT extends ParallelStatsDisabledIT {
private String tableName = generateUniqueName();
private final String[] strings = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p",
@@ -45,19 +40,17 @@ public class SerialIteratorsIT extends ParallelStatsDisabledIT {
+ "k2 INTEGER NOT NULL,\n" + "C3.k3 INTEGER,\n" + "C2.v1 VARCHAR,\n"
+ "CONSTRAINT pk PRIMARY KEY (t_id, k1, k2)) SPLIT ON ('e','i','o')";
- @BeforeClass
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Don't force row key order
- props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private static Connection getConnection() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ props.setProperty(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
}
@Test
public void testConcatenatingSerialIterators() throws Exception {
Connection conn;
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- conn = DriverManager.getConnection(getUrl(), props);
+ conn = getConnection();
createTestTable(getUrl(), ddl);
initTableValues(conn);
String query = "SELECT t_id from " + tableName + " order by t_id desc limit " + 10;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
index 34ccdde..e3458dd 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SignFunctionEnd2EndIT.java
@@ -29,7 +29,6 @@ import java.sql.ResultSet;
import org.apache.phoenix.expression.function.SignFunction;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -39,20 +38,22 @@ import org.junit.Test;
public class SignFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private static final String KEY = "key";
- private static final String TEST_SIGNED = generateUniqueName();
- private static final String TEST_UNSIGNED = generateUniqueName();
+ private String signedTableName;
+ private String unsignedTableName;
- @BeforeClass
- public static void initTable() throws Exception {
+ @Before
+ public void initTable() throws Exception {
+ signedTableName = generateUniqueName();
+ unsignedTableName = generateUniqueName();
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = DriverManager.getConnection(getUrl());
String ddl;
- ddl = "CREATE TABLE " + TEST_SIGNED
+ ddl = "CREATE TABLE " + signedTableName
+ " (k VARCHAR NOT NULL PRIMARY KEY, dec DECIMAL, doub DOUBLE, fl FLOAT, inte INTEGER, lon BIGINT, smalli SMALLINT, tinyi TINYINT)";
conn.createStatement().execute(ddl);
- ddl = "CREATE TABLE " + TEST_UNSIGNED
+ ddl = "CREATE TABLE " + unsignedTableName
+ " (k VARCHAR NOT NULL PRIMARY KEY, doub UNSIGNED_DOUBLE, fl UNSIGNED_FLOAT, inte UNSIGNED_INT, lon UNSIGNED_LONG, smalli UNSIGNED_SMALLINT, tinyi UNSIGNED_TINYINT)";
conn.createStatement().execute(ddl);
conn.commit();
@@ -63,7 +64,7 @@ public class SignFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private void updateSignedTable(Connection conn, double data) throws Exception {
PreparedStatement stmt = conn.prepareStatement(
- "UPSERT INTO " + TEST_SIGNED + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
+ "UPSERT INTO " + signedTableName + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, KEY);
Double d = Double.valueOf(data);
stmt.setBigDecimal(2, BigDecimal.valueOf(data));
@@ -79,7 +80,7 @@ public class SignFunctionEnd2EndIT extends ParallelStatsDisabledIT {
private void updateUnsignedTable(Connection conn, double data) throws Exception {
PreparedStatement stmt = conn.prepareStatement(
- "UPSERT INTO " + TEST_UNSIGNED + " VALUES (?, ?, ?, ?, ?, ?, ?)");
+ "UPSERT INTO " + unsignedTableName + " VALUES (?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, KEY);
Double d = Double.valueOf(data);
stmt.setDouble(2, d.doubleValue());
@@ -96,14 +97,14 @@ public class SignFunctionEnd2EndIT extends ParallelStatsDisabledIT {
updateSignedTable(conn, data);
ResultSet rs = conn.createStatement().executeQuery(
"SELECT SIGN(dec),SIGN(doub),SIGN(fl),SIGN(inte),SIGN(lon),SIGN(smalli),SIGN(tinyi) FROM "
- + TEST_SIGNED);
+ + signedTableName);
assertTrue(rs.next());
for (int i = 1; i <= 7; ++i) {
assertEquals(rs.getInt(i), expected);
}
assertTrue(!rs.next());
- PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + TEST_SIGNED
+ PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + signedTableName
+ " WHERE SIGN(dec)=? AND SIGN(doub)=? AND SIGN(fl)=? AND SIGN(inte)=? AND SIGN(lon)=? AND SIGN(smalli)=? AND SIGN(tinyi)=?");
for (int i = 1; i <= 7; ++i)
stmt.setInt(i, expected);
@@ -117,14 +118,14 @@ public class SignFunctionEnd2EndIT extends ParallelStatsDisabledIT {
updateUnsignedTable(conn, data);
ResultSet rs = conn.createStatement().executeQuery(
"SELECT SIGN(doub),SIGN(fl),SIGN(inte),SIGN(lon),SIGN(smalli),SIGN(tinyi) FROM "
- + TEST_UNSIGNED);
+ + unsignedTableName);
assertTrue(rs.next());
for (int i = 1; i <= 6; ++i) {
assertEquals(rs.getInt(i), expected);
}
assertTrue(!rs.next());
- PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + TEST_UNSIGNED
+ PreparedStatement stmt = conn.prepareStatement("SELECT k FROM " + unsignedTableName
+ " WHERE SIGN(doub)=? AND SIGN(fl)=? AND SIGN(inte)=? AND SIGN(lon)=? AND SIGN(smalli)=? AND SIGN(tinyi)=?");
for (int i = 1; i <= 6; ++i)
stmt.setInt(i, expected);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
index efb662b..e4add9a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
@@ -28,7 +28,7 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Map;
+import java.util.Properties;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
@@ -36,12 +36,10 @@ import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.ConnectionQueryServices;
import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
@@ -59,22 +57,15 @@ public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
private static final int MIN_CHAR = 'a';
private static final int MAX_CHAR = 'z';
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(2);
- // needed for 64 region parallelization due to splitting
- // props.put(QueryServices.THREAD_POOL_SIZE_ATTRIB, Integer.toString(64));
- props.put(QueryServices.THREAD_POOL_SIZE_ATTRIB, Integer.toString(32));
- // enables manual splitting on salted tables
- props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
- props.put(QueryServices.QUEUE_SIZE_ATTRIB, Integer.toString(1000));
- props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private static Connection getConnection() throws SQLException {
+ Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ props.setProperty(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ return conn;
}
private static void initTable(String tableName) throws Exception {
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
conn.createStatement().execute("CREATE TABLE " + tableName + "("
+ "a VARCHAR PRIMARY KEY, b VARCHAR) "
+ HTableDescriptor.MAX_FILESIZE + "=" + MAX_FILESIZE + ","
@@ -109,7 +100,7 @@ public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
String tableName = generateUniqueName();
byte[] tableNameBytes = Bytes.toBytes(tableName);
initTable(tableName);
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
ConnectionQueryServices services = conn.unwrap(PhoenixConnection.class).getQueryServices();
int nRegions = services.getAllTableRegions(tableNameBytes).size();
int nInitialRegions = nRegions;
@@ -280,7 +271,7 @@ public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
*/
@Test
public void testSkipScanInListOfRVCAfterManualSplit() throws SQLException {
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
String tableName = generateUniqueName();
String ddl = "CREATE TABLE " + tableName + " ( "
+ "organization_id CHAR(15) NOT NULL, "
@@ -349,7 +340,7 @@ public class SkipScanAfterManualSplitIT extends ParallelStatsDisabledIT {
@Test
public void testMinMaxRangeIntersection() throws Exception {
- Connection conn = DriverManager.getConnection(getUrl());
+ Connection conn = getConnection();
String tableName = generateUniqueName();
PreparedStatement stmt = conn.prepareStatement("create table " + tableName
+ "(pk1 UNSIGNED_TINYINT NOT NULL, pk2 UNSIGNED_TINYINT NOT NULL, kv VARCHAR "
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
index df18093..a08ba39 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinMoreIT.java
@@ -27,30 +27,14 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
-import java.util.Map;
import java.util.Properties;
-import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
-
public class SortMergeJoinMoreIT extends ParallelStatsDisabledIT {
- @BeforeClass
- @Shadower(classBeingShadowed = ParallelStatsDisabledIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
- // Forces server cache to be used
- props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
@Test
public void testJoinOverSaltedTables() throws Exception {
String tempTableNoSalting = "TEMP_TABLE_NO_SALTING" + generateUniqueName();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledOrderByIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledOrderByIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledOrderByIT.java
deleted file mode 100644
index 2f0bc61..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledOrderByIT.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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;
-
-import java.util.Map;
-
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
-
-import com.google.common.collect.Maps;
-
-
-public class SpooledOrderByIT extends OrderByIT {
-
- @BeforeClass
- @Shadower(classBeingShadowed = BaseClientManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
- props.put(QueryServices.SPOOL_THRESHOLD_BYTES_ATTRIB, Integer.toString(100));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledSortMergeJoinIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledSortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledSortMergeJoinIT.java
deleted file mode 100644
index c646622..0000000
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledSortMergeJoinIT.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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;
-
-import java.util.Map;
-
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
-import org.junit.BeforeClass;
-
-import com.google.common.collect.Maps;
-
-
-public class SpooledSortMergeJoinIT extends SortMergeJoinIT {
-
- public SpooledSortMergeJoinIT(String[] indexDDL, String[] plans) {
- super(indexDDL, plans);
- }
-
- @BeforeClass
- @Shadower(classBeingShadowed = BaseClientManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String,String> props = Maps.newHashMapWithExpectedSize(1);;
- props.put(QueryServices.SPOOL_THRESHOLD_BYTES_ATTRIB, Integer.toString(100));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/phoenix/blob/fedbca8b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
index 51bcb31..9dc82bf 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SpooledTmpFileDeleteIT.java
@@ -23,53 +23,50 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.StringUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.After;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
-import com.google.common.collect.Maps;
import com.google.common.io.Files;
-
-
public class SpooledTmpFileDeleteIT extends ParallelStatsDisabledIT {
-
- private Connection conn = null;
- private Properties props = null;
+ private static final String PRINCIPAL = "noRenewLease";
private File spoolDir;
private String tableName;
- @BeforeClass
- @Shadower(classBeingShadowed = BaseClientManagedTimeIT.class)
- public static void doSetup() throws Exception {
- Map<String, String> props = Maps.newHashMapWithExpectedSize(1);
- // disable renewing leases. This will force spooling to happen.
- props.put(QueryServices.RENEW_LEASE_ENABLED, Boolean.toString(false));
- // Must update config before starting server
- setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+ private Connection getConnection() throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ props.setProperty(QueryServices.SPOOL_DIRECTORY, spoolDir.getPath());
+ props.setProperty(QueryServices.SPOOL_THRESHOLD_BYTES_ATTRIB, Integer.toString(1));
+ props.setProperty(QueryServices.RENEW_LEASE_ENABLED, Boolean.toString(false));
+ // Ensures round robin off so that spooling is used.
+ // TODO: review with Samarth - should a Noop iterator be used if pacing is not possible?
+ props.setProperty(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(true));
+ props.setProperty(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, StringUtil.EMPTY_STRING);
+ String url = QueryUtil.getConnectionUrl(props, config, PRINCIPAL);
+ return DriverManager.getConnection(url, props);
}
-
+
@Before
- public void setup() throws SQLException {
+ public void setup() throws Exception {
tableName = generateUniqueName();
- props = new Properties();
spoolDir = Files.createTempDir();
- props.put(QueryServices.SPOOL_DIRECTORY, spoolDir.getPath());
- props.setProperty(QueryServices.SPOOL_THRESHOLD_BYTES_ATTRIB, Integer.toString(1));
- conn = DriverManager.getConnection(getUrl(), props);
- Statement stmt = conn.createStatement();
- stmt.execute("CREATE TABLE " + tableName + " (ID varchar NOT NULL PRIMARY KEY) SPLIT ON ('EA','EZ')");
- stmt.execute("UPSERT INTO " + tableName + " VALUES ('AA')");
- stmt.execute("UPSERT INTO " + tableName + " VALUES ('EB')");
- stmt.execute("UPSERT INTO " + tableName + " VALUES ('FA')");
- stmt.close();
- conn.commit();
+ try (Connection conn = getConnection()) {
+ Statement stmt = conn.createStatement();
+ stmt.execute("CREATE TABLE " + tableName + " (ID varchar NOT NULL PRIMARY KEY) SPLIT ON ('EA','EZ')");
+ stmt.execute("UPSERT INTO " + tableName + " VALUES ('AA')");
+ stmt.execute("UPSERT INTO " + tableName + " VALUES ('EB')");
+ stmt.execute("UPSERT INTO " + tableName + " VALUES ('FA')");
+ stmt.close();
+ conn.commit();
+ }
}
@After
@@ -100,7 +97,8 @@ public class SpooledTmpFileDeleteIT extends ParallelStatsDisabledIT {
file.delete();
}
- String query = "select * from " + tableName + "";
+ String query = "select * from " + tableName;
+ Connection conn = getConnection();
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery(query);
assertTrue(rs.next());
@@ -122,7 +120,7 @@ public class SpooledTmpFileDeleteIT extends ParallelStatsDisabledIT {
fileNames.add(file.getName());
}
- Connection conn2 = DriverManager.getConnection(getUrl(), props);
+ Connection conn2 = getConnection();
String query2 = "select * from " + tableName + "";
Statement statement2 = conn2.createStatement();
ResultSet rs2 = statement2.executeQuery(query2);