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")