http://git-wip-us.apache.org/repos/asf/phoenix/blob/d77d2492/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 3145d95..f3386d9 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 @@ -27,12 +27,12 @@ import org.apache.phoenix.schema.TypeMismatchException; import org.apache.phoenix.schema.types.PhoenixArray; import org.junit.Test; -public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { +public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeTableReuseIT { - private void initTableWithVarArray(Connection conn, String type, Object[] objectArray, String value) throws SQLException { - conn.createStatement().execute("CREATE TABLE t ( k VARCHAR PRIMARY KEY, a " + type + "[],b " + type + ")"); + private void initTableWithVarArray(Connection conn, String tableName, String type, Object[] objectArray, String value) throws SQLException { + conn.createStatement().execute("CREATE TABLE " + tableName + " ( k VARCHAR PRIMARY KEY, a " + type + "[],b " + type + ")"); conn.commit(); - PreparedStatement stmt = conn.prepareStatement("UPSERT INTO t VALUES(?,?," + value + ")"); + PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + tableName + " VALUES(?,?," + value + ")"); PhoenixArray array = (PhoenixArray) conn.createArrayOf(type, objectArray); stmt.setString(1, "a"); stmt.setArray(2, array); @@ -41,10 +41,10 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { } - private void initTables(Connection conn) throws Exception { - String ddl = "CREATE TABLE regions (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)[])"; + private void initTables(Connection conn, String tableName) throws Exception { + 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 regions(region_name,varchars,integers,doubles,bigints,chars,double1,char1,nullcheck,chars2) VALUES('SF Bay Area'," + + String dml = "UPSERT INTO " + tableName + " (region_name,varchars,integers,doubles,bigints,chars,double1,char1,nullcheck,chars2) VALUES('SF Bay Area'," + "ARRAY['2345','46345','23234']," + "ARRAY[2345,46345,23234,456]," + "ARRAY[23.45,46.345,23.234,45.6,5.78]," + @@ -60,10 +60,10 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { conn.commit(); } - private void initTablesDesc(Connection conn, String type, String val) throws Exception { - String ddl = "CREATE TABLE regions (pk " + type + " PRIMARY KEY DESC,varchars VARCHAR[],integers INTEGER[],doubles DOUBLE[],bigints BIGINT[],chars CHAR(15)[],chars2 CHAR(15)[], bools BOOLEAN[])"; + private void initTablesDesc(Connection conn, String tableName, String type, String val) throws Exception { + 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 regions(pk,varchars,integers,doubles,bigints,chars,chars2,bools) VALUES(" + val + "," + + String dml = "UPSERT INTO " + tableName + "(pk,varchars,integers,doubles,bigints,chars,chars2,bools) VALUES(" + val + "," + "ARRAY['2345','46345','23234']," + "ARRAY[2345,46345,23234,456]," + "ARRAY[23.45,46.345,23.234,45.6,5.78]," + @@ -80,10 +80,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInteger() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(1234,integers) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(1234,integers) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Integer[] integers = new Integer[]{1234, 2345, 46345, 23234, 456}; @@ -97,10 +98,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionVarchar() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('34567',varchars) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('34567',varchars) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); String[] strings = new String[]{"34567", "2345", "46345", "23234"}; @@ -115,12 +117,13 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { public void testArrayPrependFunctionNulls1() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); String[] s = new String[]{null, null, "1", "2"}; - initTableWithVarArray(conn, "VARCHAR", s, null); + String tableName = generateRandomString(); + initTableWithVarArray(conn, tableName, "VARCHAR", s, null); String[] s2 = new String[]{null, null, null, "1", "2"}; PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2); conn = DriverManager.getConnection(getUrl()); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM t WHERE k = 'a'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM " + tableName + " WHERE k = 'a'"); assertTrue(rs.next()); assertEquals(array2, rs.getArray(1)); } @@ -129,12 +132,13 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { public void testArrayPrependFunctionNulls2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); String[] s = new String[]{"1", "2"}; - initTableWithVarArray(conn, "VARCHAR", s, null); + String tableName = generateRandomString(); + initTableWithVarArray(conn, tableName, "VARCHAR", s, null); String[] s2 = new String[]{null, "1", "2"}; PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2); conn = DriverManager.getConnection(getUrl()); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM t WHERE k = 'a'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM " + tableName + " WHERE k = 'a'"); assertTrue(rs.next()); assertEquals(array2, rs.getArray(1)); } @@ -143,12 +147,13 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { public void testArrayPrependFunctionNulls3() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); String[] s = new String[]{"176", null, "212"}; - initTableWithVarArray(conn, "VARCHAR", s, null); + String tableName = generateRandomString(); + initTableWithVarArray(conn, tableName, "VARCHAR", s, null); String[] s2 = new String[]{null, "176", null, "212"}; PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2); conn = DriverManager.getConnection(getUrl()); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM t WHERE k = 'a'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM " + tableName + " WHERE k = 'a'"); assertTrue(rs.next()); assertEquals(array2, rs.getArray(1)); } @@ -157,12 +162,13 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { public void testArrayPrependFunctionNulls4() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); String[] s = new String[]{"176", null, "212"}; - initTableWithVarArray(conn, "VARCHAR", s, "'foo'"); + String tableName = generateRandomString(); + initTableWithVarArray(conn, tableName, "VARCHAR", s, "'foo'"); String[] s2 = new String[]{"foo", "176", null, "212"}; PhoenixArray array2 = (PhoenixArray) conn.createArrayOf("VARCHAR", s2); conn = DriverManager.getConnection(getUrl()); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM t WHERE k = 'a'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(b,a) FROM " + tableName + " WHERE k = 'a'"); assertTrue(rs.next()); assertEquals(array2, rs.getArray(1)); } @@ -170,10 +176,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionDouble() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(double1,doubles) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(double1,doubles) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Double[] doubles = new Double[]{23.45, 23.45, 46.345, 23.234, 45.6, 5.78}; @@ -187,10 +194,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionDouble2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(23,doubles) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(23,doubles) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Double[] doubles = new Double[]{new Double(23), 23.45, 46.345, 23.234, 45.6, 5.78}; @@ -204,9 +212,10 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionBigint() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(1112,bigints) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(1112,bigints) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Long[] longs = new Long[]{1112l, 12l, 34l, 56l, 78l, 910l}; @@ -220,9 +229,10 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionChar() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('fac',chars) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('fac',chars) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); String[] strings = new String[]{"fac", "a", "bbbb", "c", "ddd", "e"}; @@ -236,28 +246,31 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test(expected = TypeMismatchException.class) public void testArrayPrependFunctionIntToCharArray() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(234,varchars) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(234,varchars) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); } @Test(expected = TypeMismatchException.class) public void testArrayPrependFunctionVarcharToIntegerArray() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('234',integers) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('234',integers) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); } @Test(expected = SQLException.class) public void testArrayPrependFunctionChar2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('facfacfacfacfacfacfac',chars) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND('facfacfacfacfacfacfac',chars) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); rs.next(); rs.getArray(1); } @@ -265,10 +278,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionIntegerToDoubleArray() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(45,doubles) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(45,doubles) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Double[] doubles = new Double[]{45.0, 23.45, 46.345, 23.234, 45.6, 5.78}; @@ -282,10 +296,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithNestedFunctions1() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(integers[1],ARRAY[23,45]) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(integers[1],ARRAY[23,45]) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Integer[] integers = new Integer[]{2345, 23, 45}; @@ -299,10 +314,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithNestedFunctions2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(ARRAY_ELEM(ARRAY[2,4],1),integers) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(ARRAY_ELEM(ARRAY[2,4],1),integers) FROM " + tableName+ " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Integer[] integers = new Integer[]{2, 2345, 46345, 23234, 456}; @@ -316,10 +332,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithNestedFunctions3() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(ARRAY_ELEM(doubles,2),doubles) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(ARRAY_ELEM(doubles,2),doubles) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Double[] doubles = new Double[]{46.345, 23.45, 46.345, 23.234, 45.6, 5.78}; @@ -333,16 +350,16 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithUpsert1() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - - String ddl = "CREATE TABLE regions (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])"; + String tableName = generateRandomString(); + String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])"; conn.createStatement().execute(ddl); - String dml = "UPSERT INTO regions(region_name,varchars) VALUES('SF Bay Area',ARRAY_PREPEND(':-)',ARRAY['hello','world']))"; + String dml = "UPSERT INTO " + tableName + " (region_name,varchars) VALUES('SF Bay Area',ARRAY_PREPEND(':-)',ARRAY['hello','world']))"; conn.createStatement().execute(dml); conn.commit(); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT varchars FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT varchars FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); String[] strings = new String[]{":-)", "hello", "world"}; @@ -356,16 +373,17 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithUpsert2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); + String tableName = generateRandomString(); - String ddl = "CREATE TABLE regions (region_name VARCHAR PRIMARY KEY,integers INTEGER[])"; + String ddl = "CREATE TABLE " + tableName + " (region_name VARCHAR PRIMARY KEY,integers INTEGER[])"; conn.createStatement().execute(ddl); - String dml = "UPSERT INTO regions(region_name,integers) VALUES('SF Bay Area',ARRAY_PREPEND(6,ARRAY[4,5]))"; + String dml = "UPSERT INTO " + tableName + "(region_name,integers) VALUES('SF Bay Area',ARRAY_PREPEND(6,ARRAY[4,5]))"; conn.createStatement().execute(dml); conn.commit(); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT integers FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT integers FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Integer[] integers = new Integer[]{6, 4, 5}; @@ -379,16 +397,16 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithUpsert3() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - - String ddl = "CREATE TABLE regions (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])"; + String tableName = generateRandomString(); + String ddl = "CREATE TABLE " + tableName + "(region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])"; conn.createStatement().execute(ddl); - String dml = "UPSERT INTO regions(region_name,doubles) VALUES('SF Bay Area',ARRAY_PREPEND(9.0,ARRAY[5.67,7.87]))"; + String dml = "UPSERT INTO " + tableName + "(region_name,doubles) VALUES('SF Bay Area',ARRAY_PREPEND(9.0,ARRAY[5.67,7.87]))"; conn.createStatement().execute(dml); conn.commit(); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT doubles FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT doubles FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); Double[] doubles = new Double[]{new Double(9), 5.67, 7.87}; @@ -402,26 +420,28 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithUpsertSelect1() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - - String ddl = "CREATE TABLE source (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])"; + String baseTable = generateRandomString(); + String source = baseTable + "_SOURCE"; + String target = baseTable + "_TARGET"; + String ddl = "CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])"; conn.createStatement().execute(ddl); - ddl = "CREATE TABLE target (region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])"; + ddl = "CREATE TABLE " + target + "(region_name VARCHAR PRIMARY KEY,doubles DOUBLE[])"; conn.createStatement().execute(ddl); - String dml = "UPSERT INTO source(region_name,doubles) VALUES('SF Bay Area',ARRAY_PREPEND(9.0,ARRAY[5.67,7.87]))"; + String dml = "UPSERT INTO " + source + "(region_name,doubles) VALUES('SF Bay Area',ARRAY_PREPEND(9.0,ARRAY[5.67,7.87]))"; conn.createStatement().execute(dml); - dml = "UPSERT INTO source(region_name,doubles) VALUES('SF Bay Area2',ARRAY_PREPEND(9.2,ARRAY[56.7,7.87]))"; + dml = "UPSERT INTO " + source + "(region_name,doubles) VALUES('SF Bay Area2',ARRAY_PREPEND(9.2,ARRAY[56.7,7.87]))"; conn.createStatement().execute(dml); conn.commit(); - dml = "UPSERT INTO target(region_name, doubles) SELECT region_name, ARRAY_PREPEND(5,doubles) FROM source"; + dml = "UPSERT INTO " + target + "(region_name, doubles) SELECT region_name, ARRAY_PREPEND(5,doubles) FROM " + source; conn.createStatement().execute(dml); conn.commit(); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT doubles FROM target"); + rs = conn.createStatement().executeQuery("SELECT doubles FROM " + target); assertTrue(rs.next()); Double[] doubles = new Double[]{new Double(5), new Double(9), 5.67, 7.87}; @@ -440,26 +460,28 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionWithUpsertSelect2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - - String ddl = "CREATE TABLE source (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])"; + String baseTable = generateRandomString(); + String source = baseTable + "_SOURCE"; + String target = baseTable + "_TARGET"; + String ddl = "CREATE TABLE " + source + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])"; conn.createStatement().execute(ddl); - ddl = "CREATE TABLE target (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])"; + ddl = "CREATE TABLE " + target + " (region_name VARCHAR PRIMARY KEY,varchars VARCHAR[])"; conn.createStatement().execute(ddl); - String dml = "UPSERT INTO source(region_name,varchars) VALUES('SF Bay Area',ARRAY_PREPEND('c',ARRAY['abcd','b']))"; + String dml = "UPSERT INTO " + source + "(region_name,varchars) VALUES('SF Bay Area',ARRAY_PREPEND('c',ARRAY['abcd','b']))"; conn.createStatement().execute(dml); - dml = "UPSERT INTO source(region_name,varchars) VALUES('SF Bay Area2',ARRAY_PREPEND('something',ARRAY['d','fgh']))"; + dml = "UPSERT INTO " + source + "(region_name,varchars) VALUES('SF Bay Area2',ARRAY_PREPEND('something',ARRAY['d','fgh']))"; conn.createStatement().execute(dml); conn.commit(); - dml = "UPSERT INTO target(region_name, varchars) SELECT region_name, ARRAY_PREPEND('stu',varchars) FROM source"; + dml = "UPSERT INTO " + target + "(region_name, varchars) SELECT region_name, ARRAY_PREPEND('stu',varchars) FROM " + source; conn.createStatement().execute(dml); conn.commit(); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT varchars FROM target"); + rs = conn.createStatement().executeQuery("SELECT varchars FROM " + target); assertTrue(rs.next()); String[] strings = new String[]{"stu", "c", "abcd", "b"}; @@ -478,10 +500,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInWhere1() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT region_name FROM regions WHERE ARRAY[123,2345,46345,23234,456]=ARRAY_PREPEND(123,integers)"); + rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName + " WHERE ARRAY[123,2345,46345,23234,456]=ARRAY_PREPEND(123,integers)"); assertTrue(rs.next()); assertEquals("SF Bay Area", rs.getString(1)); @@ -491,10 +514,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInWhere2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT region_name FROM regions WHERE varchars[1]=ANY(ARRAY_PREPEND('1234',ARRAY['2345','46345','23234']))"); + rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName + " WHERE varchars[1]=ANY(ARRAY_PREPEND('1234',ARRAY['2345','46345','23234']))"); assertTrue(rs.next()); assertEquals("SF Bay Area", rs.getString(1)); @@ -504,10 +528,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInWhere3() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT region_name FROM regions WHERE ARRAY['1234','2345','46345','23234']=ARRAY_PREPEND('1234',ARRAY['2345','46345','23234'])"); + rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName + " WHERE ARRAY['1234','2345','46345','23234']=ARRAY_PREPEND('1234',ARRAY['2345','46345','23234'])"); assertTrue(rs.next()); assertEquals("SF Bay Area", rs.getString(1)); @@ -517,10 +542,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInWhere4() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT region_name FROM regions WHERE ARRAY[123.4,23.45,4634.5,2.3234]=ARRAY_PREPEND(123.4,ARRAY[23.45,4634.5,2.3234])"); + rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName + " WHERE ARRAY[123.4,23.45,4634.5,2.3234]=ARRAY_PREPEND(123.4,ARRAY[23.45,4634.5,2.3234])"); assertTrue(rs.next()); assertEquals("SF Bay Area", rs.getString(1)); @@ -530,10 +556,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInWhere5() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT region_name FROM regions WHERE ARRAY['foo','2345','46345','23234']=ARRAY_PREPEND('foo',varchars)"); + rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName + " WHERE ARRAY['foo','2345','46345','23234']=ARRAY_PREPEND('foo',varchars)"); assertTrue(rs.next()); assertEquals("SF Bay Area", rs.getString(1)); @@ -543,10 +570,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInWhere6() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT region_name FROM regions WHERE chars2=ARRAY_PREPEND('foo',chars)"); + rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName + " WHERE chars2=ARRAY_PREPEND('foo',chars)"); assertTrue(rs.next()); assertEquals("SF Bay Area", rs.getString(1)); @@ -556,10 +584,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionInWhere7() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT region_name FROM regions WHERE ARRAY[4,2,3]=ARRAY_PREPEND(4,ARRAY[2,3])"); + rs = conn.createStatement().executeQuery("SELECT region_name FROM " + tableName + " WHERE ARRAY[4,2,3]=ARRAY_PREPEND(4,ARRAY[2,3])"); assertTrue(rs.next()); assertEquals("SF Bay Area", rs.getString(1)); @@ -569,10 +598,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test(expected = SQLException.class) public void testArrayPrependFunctionCharLimitCheck() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTables(conn); + String tableName = generateRandomString(); + initTables(conn, tableName); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(char1,chars) FROM regions WHERE region_name = 'SF Bay Area'"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(char1,chars) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); String[] strings = new String[]{"wert", "a", "bbbb", "c", "ddd", "e"}; @@ -586,10 +616,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionIntegerDesc() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTablesDesc(conn, "INTEGER", "23"); + String tableName = generateRandomString(); + initTablesDesc(conn, tableName, "INTEGER", "23"); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,integers) FROM regions"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,integers) FROM " + tableName); assertTrue(rs.next()); Integer[] integers = new Integer[]{23, 2345, 46345, 23234, 456}; @@ -604,10 +635,11 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionVarcharDesc() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTablesDesc(conn, "VARCHAR", "'e'"); + String tableName = generateRandomString(); + initTablesDesc(conn, tableName, "VARCHAR", "'e'"); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,varchars) FROM regions"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,varchars) FROM " + tableName); assertTrue(rs.next()); String[] strings = new String[]{"e", "2345", "46345", "23234"}; @@ -621,9 +653,10 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionBigIntDesc() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTablesDesc(conn, "BIGINT", "1112"); + String tableName = generateRandomString(); + initTablesDesc(conn, tableName, "BIGINT", "1112"); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,bigints) FROM regions"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,bigints) FROM " + tableName); assertTrue(rs.next()); Long[] longs = new Long[]{1112l, 12l, 34l, 56l, 78l, 910l}; @@ -637,9 +670,10 @@ public class ArrayPrependFunctionIT extends BaseHBaseManagedTimeIT { @Test public void testArrayPrependFunctionBooleanDesc() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); - initTablesDesc(conn, "BOOLEAN", "false"); + String tableName = generateRandomString(); + initTablesDesc(conn, tableName, "BOOLEAN", "false"); ResultSet rs; - rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,bools) FROM regions"); + rs = conn.createStatement().executeQuery("SELECT ARRAY_PREPEND(pk,bools) FROM " + tableName); assertTrue(rs.next()); Boolean[] booleans = new Boolean[]{false, true, false};
http://git-wip-us.apache.org/repos/asf/phoenix/blob/d77d2492/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 c66a7c8..95ac2cb 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 @@ -47,7 +47,7 @@ import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) -public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { +public class AutoPartitionViewsIT extends BaseHBaseManagedTimeTableReuseIT { private String tableDDLOptions; private boolean isMultiTenant; @@ -64,7 +64,7 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { public AutoPartitionViewsIT(boolean salted, boolean isMultiTenant) { this.isMultiTenant = isMultiTenant; - StringBuilder optionBuilder = new StringBuilder(" AUTO_PARTITION_SEQ=\"TSDB.METRIC_ID_SEQ\""); + StringBuilder optionBuilder = new StringBuilder(" AUTO_PARTITION_SEQ=\"%s\""); if (salted) optionBuilder.append(", SALTED=4 "); if (isMultiTenant) optionBuilder.append(", MULTI_TENANT=true "); this.tableDDLOptions = optionBuilder.toString(); @@ -79,13 +79,17 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { Connection viewConn2 = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : DriverManager.getConnection(getUrl())) { + String tableName = generateRandomString(); + String autoSeqName = generateRandomString(); + try { + String ddl = String.format( - "CREATE TABLE metric_table (%s metricId VARCHAR, val1 DOUBLE, val2 DOUBLE CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", + "CREATE TABLE " + tableName + " (%s metricId VARCHAR, val1 DOUBLE, val2 DOUBLE CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", isMultiTenant ? "tenantId VARCHAR, " : "", - isMultiTenant ? "tenantId, ": "", - tableDDLOptions); + isMultiTenant ? "tenantId, ": "", String.format(tableDDLOptions, autoSeqName) + ); conn.createStatement().execute(ddl); fail("Sequence value must be castable to the auto partition id column data type"); } catch (SQLException e) { @@ -94,36 +98,41 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { .getErrorCode(), e.getErrorCode()); } - String ddl = String.format( - "CREATE TABLE metric_table (%s metricId INTEGER NOT NULL, val1 DOUBLE, val2 DOUBLE CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", + "CREATE TABLE " + tableName + " (%s metricId INTEGER NOT NULL, val1 DOUBLE, val2 DOUBLE CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", isMultiTenant ? "tenantId VARCHAR NOT NULL, " : "", - isMultiTenant ? "tenantId, ": "", - tableDDLOptions); + isMultiTenant ? "tenantId, ": "", + String.format(tableDDLOptions, autoSeqName)); conn.createStatement().execute(ddl); - + + + String baseViewName = generateRandomString(); + String metricView1 = baseViewName + "_VIEW1"; + String metricView2 = baseViewName + "_VIEW2"; + String metricView3 = baseViewName + "_VIEW3"; + String metricView4 = baseViewName + "_VIEW4"; try { viewConn1.createStatement().execute( - "CREATE VIEW metric1 AS SELECT * FROM metric_table"); + "CREATE VIEW " + metricView1 + " AS SELECT * FROM " + tableName); fail("Auto-partition sequence must be created before view is created"); } catch (SequenceNotFoundException e) { } conn.createStatement().execute( - "CREATE SEQUENCE TSDB.metric_id_seq start with " + (Integer.MAX_VALUE-2) + " cache 1"); + "CREATE SEQUENCE " + autoSeqName + " start with " + (Integer.MAX_VALUE-2) + " cache 1"); viewConn1.createStatement().execute( - "CREATE VIEW metric1 AS SELECT * FROM metric_table WHERE val2=1.2"); + "CREATE VIEW " + metricView1 + " AS SELECT * FROM " + tableName + " WHERE val2=1.2"); // create a view without a where clause viewConn1.createStatement().execute( - "CREATE VIEW metric2 AS SELECT * FROM metric_table"); + "CREATE VIEW " + metricView2 + " AS SELECT * FROM " + tableName); // create a view with a complex where clause viewConn1.createStatement().execute( - "CREATE VIEW metric3 AS SELECT * FROM metric_table WHERE val1=1.0 OR val2=2.0"); + "CREATE VIEW " + metricView3 + " AS SELECT * FROM " + tableName + " WHERE val1=1.0 OR val2=2.0"); try { viewConn1.createStatement().execute( - "CREATE VIEW metric4 AS SELECT * FROM metric_table"); + "CREATE VIEW " + metricView4 + " AS SELECT * FROM " + tableName); fail("Creating a view with a partition id that is too large should fail"); } catch (SQLException e) { assertEquals(SQLExceptionCode.CANNOT_COERCE_AUTO_PARTITION_ID.getErrorCode(), @@ -132,23 +141,23 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { if (isMultiTenant) { // load tables into cache - viewConn1.createStatement().execute("SELECT * FROM METRIC1"); - viewConn1.createStatement().execute("SELECT * FROM METRIC2"); - viewConn1.createStatement().execute("SELECT * FROM METRIC3"); + viewConn1.createStatement().execute("SELECT * FROM " + metricView1); + viewConn1.createStatement().execute("SELECT * FROM " + metricView2); + viewConn1.createStatement().execute("SELECT * FROM " + metricView3); } PhoenixConnection pconn = viewConn1.unwrap(PhoenixConnection.class); - PTable view1 = pconn.getTable(new PTableKey(pconn.getTenantId(), "METRIC1")); - PTable view2 = pconn.getTable(new PTableKey(pconn.getTenantId(), "METRIC2")); - PTable view3 = pconn.getTable(new PTableKey(pconn.getTenantId(), "METRIC3")); + PTable view1 = pconn.getTable(new PTableKey(pconn.getTenantId(), metricView1)); + PTable view2 = pconn.getTable(new PTableKey(pconn.getTenantId(), metricView2)); + PTable view3 = pconn.getTable(new PTableKey(pconn.getTenantId(), metricView3)); // verify the view statement was set correctly String expectedViewStatement1 = - "SELECT * FROM \"METRIC_TABLE\" WHERE VAL2 = 1.2 AND METRICID = " + "SELECT * FROM \"" + tableName + "\" WHERE VAL2 = 1.2 AND METRICID = " + (Integer.MAX_VALUE - 2); String expectedViewStatement2 = - "SELECT * FROM \"METRIC_TABLE\" WHERE METRICID = " + (Integer.MAX_VALUE - 1); + "SELECT * FROM \"" + tableName + "\" WHERE METRICID = " + (Integer.MAX_VALUE - 1); String expectedViewStatement3 = - "SELECT * FROM \"METRIC_TABLE\" WHERE (VAL1 = 1.0 OR VAL2 = 2.0) AND METRICID = " + Integer.MAX_VALUE; + "SELECT * FROM \"" + tableName + "\" WHERE (VAL1 = 1.0 OR VAL2 = 2.0) AND METRICID = " + Integer.MAX_VALUE; assertEquals("Unexpected view statement", expectedViewStatement1, view1.getViewStatement()); assertEquals("Unexpected view statement", expectedViewStatement2, @@ -181,13 +190,13 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { expectedPartition3, partitionCol3.getViewConstant()); // verify that the table was created correctly on the server - viewConn2.createStatement().execute("SELECT * FROM METRIC1"); - viewConn2.createStatement().execute("SELECT * FROM METRIC2"); - viewConn2.createStatement().execute("SELECT * FROM METRIC3"); + viewConn2.createStatement().execute("SELECT * FROM " + metricView1); + viewConn2.createStatement().execute("SELECT * FROM " + metricView2 ); + viewConn2.createStatement().execute("SELECT * FROM " + metricView3); pconn = viewConn2.unwrap(PhoenixConnection.class); - view1 = pconn.getTable(new PTableKey(pconn.getTenantId(), "METRIC1")); - view2 = pconn.getTable(new PTableKey(pconn.getTenantId(), "METRIC2")); - view3 = pconn.getTable(new PTableKey(pconn.getTenantId(), "METRIC3")); + view1 = pconn.getTable(new PTableKey(pconn.getTenantId(), metricView1)); + view2 = pconn.getTable(new PTableKey(pconn.getTenantId(), metricView2)); + view3 = pconn.getTable(new PTableKey(pconn.getTenantId(), metricView3)); // verify the view statement was set correctly assertEquals("Unexpected view statement", expectedViewStatement1, @@ -225,37 +234,44 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { Connection viewConn2 = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL2) : DriverManager.getConnection(getUrl())) { + String tableName = generateRandomString(); + String autoSeqName = generateRandomString(); + String ddl = String.format( - "CREATE TABLE hbase.metric_table (%s metricId INTEGER NOT NULL, val1 DOUBLE, val2 DOUBLE CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", + "CREATE TABLE " + tableName + " (%s metricId INTEGER NOT NULL, val1 DOUBLE, val2 DOUBLE CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", isMultiTenant ? "tenantId VARCHAR NOT NULL, " : "", isMultiTenant ? "tenantId, ": "", - tableDDLOptions); + String.format(tableDDLOptions, autoSeqName)); conn.createStatement().execute(ddl); - conn.createStatement().execute("CREATE SEQUENCE TSDB.metric_id_seq CACHE 1"); + conn.createStatement().execute("CREATE SEQUENCE " + autoSeqName + " CACHE 1"); + + String baseViewName = generateRandomString(); + String metricView1 = baseViewName + "_VIEW1"; + String metricView2 = baseViewName + "_VIEW2"; // create a view viewConn1.createStatement().execute( - "CREATE VIEW metric1 AS SELECT * FROM hbase.metric_table WHERE val2=1.2"); + "CREATE VIEW " + metricView1 + " AS SELECT * FROM " + tableName + " WHERE val2=1.2"); try { // create the same view which should fail viewConn1.createStatement() - .execute("CREATE VIEW metric1 AS SELECT * FROM hbase.metric_table"); + .execute("CREATE VIEW " + metricView1 + " AS SELECT * FROM " + tableName); fail("view should already exist"); } catch (TableAlreadyExistsException e) { } // create a second view (without a where clause) viewConn2.createStatement().execute( - "CREATE VIEW metric2 AS SELECT * FROM hbase.metric_table"); + "CREATE VIEW " + metricView2 + " AS SELECT * FROM " + tableName); // upsert a row into each view - viewConn1.createStatement().execute("UPSERT INTO metric1(val1) VALUES(1.1)"); + viewConn1.createStatement().execute("UPSERT INTO " + metricView1 + "(val1) VALUES(1.1)"); viewConn1.commit(); - viewConn2.createStatement().execute("UPSERT INTO metric2(val1,val2) VALUES(2.1,2.2)"); + viewConn2.createStatement().execute("UPSERT INTO " + metricView2 + "(val1,val2) VALUES(2.1,2.2)"); viewConn2.commit(); // query the base table - ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM hbase.metric_table"); + ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM " + tableName); assertTrue(rs.next()); int offset = 0; if (isMultiTenant) { @@ -276,7 +292,7 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { assertFalse(rs.next()); // query the first view - rs = viewConn1.createStatement().executeQuery("SELECT * FROM metric1"); + rs = viewConn1.createStatement().executeQuery("SELECT * FROM " + metricView1); assertTrue(rs.next()); assertEquals(1, rs.getInt(1)); assertEquals(1.1, rs.getDouble(2), 1e-6); @@ -284,7 +300,7 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { assertFalse(rs.next()); // query the second view - rs = viewConn2.createStatement().executeQuery("SELECT * FROM metric2"); + rs = viewConn2.createStatement().executeQuery("SELECT * FROM " + metricView2); assertTrue(rs.next()); assertEquals(2, rs.getInt(1)); assertEquals(2.1, rs.getDouble(2), 1e-6); @@ -299,32 +315,37 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { Connection viewConn1 = isMultiTenant ? DriverManager.getConnection(TENANT_SPECIFIC_URL1) : DriverManager.getConnection(getUrl())) { + String tableName = generateRandomString(); + String autoSeqName = generateRandomString(); + String ddl = String.format( - "CREATE TABLE hbase.metric_table (%s metricId INTEGER NOT NULL, val1 DOUBLE, CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", + "CREATE TABLE " + tableName + " (%s metricId INTEGER NOT NULL, val1 DOUBLE, CONSTRAINT PK PRIMARY KEY( %s metricId)) %s", isMultiTenant ? "tenantId VARCHAR NOT NULL, " : "", isMultiTenant ? "tenantId, ": "", - tableDDLOptions); + String.format(tableDDLOptions, autoSeqName)); conn.createStatement().execute(ddl); - conn.createStatement().execute("CREATE SEQUENCE TSDB.metric_id_seq CACHE 1"); + conn.createStatement().execute("CREATE SEQUENCE " + autoSeqName + " CACHE 1"); + + String metricView = generateRandomString() + "_VIEW"; // create a view viewConn1.createStatement().execute( - "CREATE VIEW metric1 AS SELECT * FROM hbase.metric_table"); + "CREATE VIEW " + metricView + " AS SELECT * FROM " + tableName); // add a column to the base table conn.createStatement().execute( - "ALTER TABLE hbase.metric_table add val2 DOUBLE"); + "ALTER TABLE " + tableName + " add val2 DOUBLE"); // add a column to the view viewConn1.createStatement().execute( - "ALTER VIEW metric1 add val3 DOUBLE"); + "ALTER VIEW " + metricView + " add val3 DOUBLE"); // upsert a row into the view - viewConn1.createStatement().execute("UPSERT INTO metric1(val1,val2,val3) VALUES(1.1,1.2,1.3)"); + viewConn1.createStatement().execute("UPSERT INTO " + metricView + "(val1,val2,val3) VALUES(1.1,1.2,1.3)"); viewConn1.commit(); // query the base table - ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM hbase.metric_table"); + ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM " + tableName); assertTrue(rs.next()); int offset = 0; if (isMultiTenant) { @@ -337,7 +358,7 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { assertFalse(rs.next()); // query the view - rs = viewConn1.createStatement().executeQuery("SELECT * FROM metric1"); + rs = viewConn1.createStatement().executeQuery("SELECT * FROM " + metricView); assertTrue(rs.next()); assertEquals(1, rs.getInt(1)); assertEquals(1.1, rs.getDouble(2), 1e-6); @@ -347,21 +368,21 @@ public class AutoPartitionViewsIT extends BaseHBaseManagedTimeIT { // drop a column from the base table conn.createStatement().execute( - "ALTER TABLE hbase.metric_table DROP COLUMN val2"); + "ALTER TABLE " + tableName + " DROP COLUMN val2"); // add a column to the view viewConn1.createStatement().execute( - "ALTER VIEW metric1 DROP COLUMN val3"); + "ALTER VIEW " + metricView + " DROP COLUMN val3"); // verify columns don't exist try { - viewConn1.createStatement().executeQuery("SELECT val2 FROM metric1"); + viewConn1.createStatement().executeQuery("SELECT val2 FROM " + metricView); fail("column should have been dropped"); } catch (ColumnNotFoundException e) { } try { - viewConn1.createStatement().executeQuery("SELECT val3 FROM metric1"); + viewConn1.createStatement().executeQuery("SELECT val3 FROM " + metricView); fail("column should have been dropped"); } catch (ColumnNotFoundException e) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/d77d2492/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseHBaseManagedTimeTableReuseIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseHBaseManagedTimeTableReuseIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseHBaseManagedTimeTableReuseIT.java index 02ebf98..c40ec59 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseHBaseManagedTimeTableReuseIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseHBaseManagedTimeTableReuseIT.java @@ -20,6 +20,7 @@ package org.apache.phoenix.end2end; import javax.annotation.concurrent.NotThreadSafe; +import org.apache.hadoop.conf.Configuration; import org.apache.phoenix.query.BaseTest; import org.apache.phoenix.util.ReadOnlyProps; import org.junit.After; @@ -47,6 +48,10 @@ import org.junit.experimental.categories.Category; @NotThreadSafe @Category(HBaseManagedTimeTableReuseTest.class) public class BaseHBaseManagedTimeTableReuseIT extends BaseTest { + protected static Configuration getTestClusterConfig() { + // don't want callers to modify config. + return new Configuration(config); + } @BeforeClass public static void doSetup() throws Exception { http://git-wip-us.apache.org/repos/asf/phoenix/blob/d77d2492/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseQueryIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseQueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseQueryIT.java index aa5068b..9ad12e5 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseQueryIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseQueryIT.java @@ -18,6 +18,7 @@ package org.apache.phoenix.end2end; import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.apache.phoenix.util.TestUtil.ATABLE_NAME; import java.io.IOException; import java.sql.Connection; @@ -29,7 +30,6 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.concurrent.atomic.AtomicInteger; - import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.util.Bytes; @@ -61,7 +61,7 @@ public abstract class BaseQueryIT extends BaseClientManagedTimeIT { protected static final String tenantId = getOrganizationId(); protected static final String ATABLE_INDEX_NAME = "ATABLE_IDX"; protected static final long BATCH_SIZE = 3; - + @BeforeClass @Shadower(classBeingShadowed = BaseClientManagedTimeIT.class) public static void doSetup() throws Exception { @@ -90,7 +90,7 @@ public abstract class BaseQueryIT extends BaseClientManagedTimeIT { @Before public void initTable() throws Exception { ts = nextTimestamp(); - initATableValues(tenantId, getDefaultSplits(tenantId), date=new Date(System.currentTimeMillis()), ts); + initATableValues(ATABLE_NAME, tenantId, getDefaultSplits(tenantId), date=new Date(System.currentTimeMillis()), ts, getUrl()); if (indexDDL != null && indexDDL.length() > 0) { Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts)); http://git-wip-us.apache.org/repos/asf/phoenix/blob/d77d2492/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 04f4268..e0916a9 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 @@ -35,7 +35,7 @@ import org.apache.phoenix.util.QueryUtil; import com.google.common.collect.Lists; -public class BaseTenantSpecificViewIndexIT extends BaseHBaseManagedTimeIT { +public class BaseTenantSpecificViewIndexIT extends BaseHBaseManagedTimeTableReuseIT { public static final String TENANT1_ID = "tenant1"; public static final String TENANT2_ID = "tenant2"; @@ -48,24 +48,26 @@ public class BaseTenantSpecificViewIndexIT extends BaseHBaseManagedTimeIT { } protected void testUpdatableView(Integer saltBuckets, boolean localIndex) throws Exception { - createBaseTable("t", saltBuckets, true); + String tableName = generateRandomString(); + createBaseTable(tableName, saltBuckets, true); Connection conn = createTenantConnection(TENANT1_ID); try { - createAndPopulateTenantView(conn, TENANT1_ID, "t", ""); - createAndVerifyIndex(conn, saltBuckets, TENANT1_ID, "", localIndex); - verifyViewData(conn, ""); + String viewName = createAndPopulateTenantView(conn, TENANT1_ID, tableName, ""); + createAndVerifyIndex(conn, viewName, tableName, saltBuckets, TENANT1_ID, "", localIndex); + verifyViewData(conn, viewName, ""); } finally { try { conn.close();} catch (Exception ignored) {} } } protected void testUpdatableViewNonString(Integer saltBuckets, boolean localIndex) throws Exception { - createBaseTable("t", saltBuckets, false); + String tableName = generateRandomString(); + createBaseTable(tableName, saltBuckets, false); Connection conn = createTenantConnection(NON_STRING_TENANT_ID); try { - createAndPopulateTenantView(conn, NON_STRING_TENANT_ID, "t", ""); - createAndVerifyIndexNonStringTenantId(conn, NON_STRING_TENANT_ID, ""); - verifyViewData(conn, ""); + String viewName = createAndPopulateTenantView(conn, NON_STRING_TENANT_ID, tableName, ""); + createAndVerifyIndexNonStringTenantId(conn, viewName, tableName, NON_STRING_TENANT_ID, ""); + verifyViewData(conn, viewName, ""); } finally { try { conn.close();} catch (Exception ignored) {} } @@ -76,7 +78,8 @@ public class BaseTenantSpecificViewIndexIT extends BaseHBaseManagedTimeIT { } protected void testUpdatableViewsWithSameNameDifferentTenants(Integer saltBuckets, boolean localIndex) throws Exception { - createBaseTable("t", saltBuckets, true); + String tableName = generateRandomString(); + createBaseTable(tableName, saltBuckets, true); Connection conn1 = createTenantConnection(TENANT1_ID); Connection conn2 = createTenantConnection(TENANT2_ID); try { @@ -84,14 +87,14 @@ public class BaseTenantSpecificViewIndexIT extends BaseHBaseManagedTimeIT { String prefixForTenant2Data = "TII"; // tenant views with same name for two different tables - createAndPopulateTenantView(conn1, TENANT1_ID, "t", prefixForTenant1Data); - createAndPopulateTenantView(conn2, TENANT2_ID, "t", prefixForTenant2Data); + String viewName1 = createAndPopulateTenantView(conn1, TENANT1_ID, tableName, prefixForTenant1Data); + String viewName2 = createAndPopulateTenantView(conn2, TENANT2_ID, tableName, prefixForTenant2Data); - createAndVerifyIndex(conn1, saltBuckets, TENANT1_ID, prefixForTenant1Data, localIndex); - createAndVerifyIndex(conn2, saltBuckets, TENANT2_ID, prefixForTenant2Data, localIndex); + createAndVerifyIndex(conn1, viewName1, tableName, saltBuckets, TENANT1_ID, prefixForTenant1Data, localIndex); + createAndVerifyIndex(conn2, viewName2, tableName, saltBuckets, TENANT2_ID, prefixForTenant2Data, localIndex); - verifyViewData(conn1, prefixForTenant1Data); - verifyViewData(conn2, prefixForTenant2Data); + verifyViewData(conn1, viewName1, prefixForTenant1Data); + verifyViewData(conn2, viewName2, prefixForTenant2Data); } finally { try { conn1.close();} catch (Exception ignored) {} try { conn2.close();} catch (Exception ignored) {} @@ -111,51 +114,56 @@ public class BaseTenantSpecificViewIndexIT extends BaseHBaseManagedTimeIT { conn.close(); } - private void createAndPopulateTenantView(Connection conn, String tenantId, String baseTable, String valuePrefix) throws SQLException { - String ddl = "CREATE VIEW v(v2 VARCHAR) AS SELECT * FROM " + baseTable + " WHERE k1 = 1"; + private String createAndPopulateTenantView(Connection conn, String tenantId, String baseTable, String valuePrefix) throws SQLException { + String viewName = generateRandomString(); + 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, "v")); + tenantViewsToDelete.add(new Pair<String, String>(tenantId, viewName )); for (int i = 0; i < 10; i++) { - conn.createStatement().execute("UPSERT INTO v(k2,v1,v2) VALUES(" + i + ",'" + valuePrefix + "v1-" + (i%5) + "','" + valuePrefix + "v2-" + (i%2) + "')"); + conn.createStatement().execute("UPSERT INTO " + viewName + "(k2,v1,v2) VALUES(" + i + ",'" + valuePrefix + "v1-" + (i%5) + "','" + valuePrefix + "v2-" + (i%2) + "')"); } conn.commit(); + return viewName; } - private void createAndVerifyIndex(Connection conn, Integer saltBuckets, String tenantId, String valuePrefix, boolean localIndex) throws SQLException { + private void createAndVerifyIndex(Connection conn, String viewName, String tableName, Integer saltBuckets, String tenantId, String valuePrefix, boolean localIndex) throws SQLException { + String indexName = generateRandomString(); if(localIndex){ - conn.createStatement().execute("CREATE LOCAL INDEX i ON v(v2)"); + conn.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + viewName + "(v2)"); } else { - conn.createStatement().execute("CREATE INDEX i ON v(v2)"); + conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + viewName + "(v2)"); } - conn.createStatement().execute("UPSERT INTO v(k2,v1,v2) VALUES (-1, 'blah', 'superblah')"); // sanity check that we can upsert after index is there + 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(); - ResultSet rs = conn.createStatement().executeQuery("EXPLAIN SELECT k1, k2, v2 FROM v WHERE v2='" + valuePrefix + "v2-1'"); + ResultSet rs = conn.createStatement().executeQuery("EXPLAIN SELECT k1, k2, v2 FROM " + viewName + " WHERE v2='" + valuePrefix + "v2-1'"); if(localIndex){ assertEquals(saltBuckets == null ? - "CLIENT PARALLEL 1-WAY RANGE SCAN OVER T [1,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + tableName + " [1,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT" : - "CLIENT PARALLEL 3-WAY RANGE SCAN OVER T [1,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + "CLIENT PARALLEL 3-WAY RANGE SCAN OVER " + tableName + " [1,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs)); } else { String expected = saltBuckets == null ? - "CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_T [-32768,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + "CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + tableName + " [-32768,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + " SERVER FILTER BY FIRST KEY ONLY" : - "CLIENT PARALLEL 3-WAY RANGE SCAN OVER _IDX_T [0,-32768,'" + tenantId + "','" + valuePrefix + "v2-1'] - ["+(saltBuckets.intValue()-1)+",-32768,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + "CLIENT PARALLEL 3-WAY RANGE SCAN OVER _IDX_" + tableName + " [0,-32768,'" + tenantId + "','" + valuePrefix + "v2-1'] - ["+(saltBuckets.intValue()-1)+",-32768,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT"; assertEquals(expected, QueryUtil.getExplainPlan(rs)); } } - private void createAndVerifyIndexNonStringTenantId(Connection conn, String tenantId, String valuePrefix) throws SQLException { - conn.createStatement().execute("CREATE LOCAL INDEX i ON v(v2)"); - conn.createStatement().execute("UPSERT INTO v(k2,v1,v2) VALUES (-1, 'blah', 'superblah')"); // sanity check that we can upsert after index is there + private void createAndVerifyIndexNonStringTenantId(Connection conn, String viewName, String tableName, String tenantId, String valuePrefix) throws SQLException { + String indexName = generateRandomString(); + 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(); - ResultSet rs = conn.createStatement().executeQuery("EXPLAIN SELECT k1, k2, v2 FROM v WHERE v2='" + valuePrefix + "v2-1'"); + ResultSet rs = conn.createStatement().executeQuery("EXPLAIN SELECT k1, k2, v2 FROM " + viewName + " WHERE v2='" + valuePrefix + "v2-1'"); assertEquals( - "CLIENT PARALLEL 1-WAY RANGE SCAN OVER T [1," + tenantId + ",'" + valuePrefix + "v2-1']\n" + "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + tableName + " [1," + tenantId + ",'" + valuePrefix + "v2-1']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs)); } @@ -167,8 +175,8 @@ public class BaseTenantSpecificViewIndexIT extends BaseHBaseManagedTimeIT { } @SuppressWarnings("unchecked") - private void verifyViewData(Connection conn, String valuePrefix) throws SQLException { - String query = "SELECT k1, k2, v2 FROM v WHERE v2='" + valuePrefix + "v2-1'"; + private void verifyViewData(Connection conn, String viewName, String valuePrefix) throws SQLException { + String query = "SELECT k1, k2, v2 FROM " + viewName + " WHERE v2='" + valuePrefix + "v2-1'"; ResultSet rs = conn.createStatement().executeQuery(query); List<List<Object>> expectedResultsA = Lists.newArrayList( Arrays.<Object>asList(1,1, valuePrefix + "v2-1"), http://git-wip-us.apache.org/repos/asf/phoenix/blob/d77d2492/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 544284d..5f656e9 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 @@ -34,15 +34,16 @@ import org.apache.phoenix.util.PropertiesUtil; import org.junit.Test; -public class BinaryRowKeyIT extends BaseHBaseManagedTimeIT { +public class BinaryRowKeyIT extends BaseHBaseManagedTimeTableReuseIT { - private static void initTableValues() throws SQLException { + private static void initTableValues(String tableName) throws SQLException { Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); Connection conn = DriverManager.getConnection(getUrl(), props); conn.setAutoCommit(false); try { - String ddl = "CREATE TABLE test_table" + + + String ddl = "CREATE TABLE " + tableName + " (a_binary binary(10) not null, \n" + " a_string varchar not null, \n" + " b_binary varbinary \n" + @@ -52,7 +53,7 @@ public class BinaryRowKeyIT extends BaseHBaseManagedTimeIT { String query; PreparedStatement stmt; - query = "UPSERT INTO test_table" + query = "UPSERT INTO " + tableName + "(a_binary, a_string) " + "VALUES(?,?)"; stmt = conn.prepareStatement(query); @@ -76,11 +77,12 @@ public class BinaryRowKeyIT extends BaseHBaseManagedTimeIT { Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); Connection conn = DriverManager.getConnection(getUrl(), props); try { - initTableValues(); + String tableName = generateRandomString(); + initTableValues(tableName); conn.setAutoCommit(true); - conn.createStatement().execute("DELETE FROM test_table"); + conn.createStatement().execute("DELETE FROM " + tableName ); - String query = "UPSERT INTO test_table" + String query = "UPSERT INTO " + tableName + "(a_binary, a_string) " + "VALUES(?,?)"; PreparedStatement stmt = conn.prepareStatement(query); @@ -88,7 +90,7 @@ public class BinaryRowKeyIT extends BaseHBaseManagedTimeIT { stmt.setString(2, "a"); stmt.execute(); - ResultSet rs = conn.createStatement().executeQuery("SELECT a_string FROM test_table"); + ResultSet rs = conn.createStatement().executeQuery("SELECT a_string FROM " + tableName); assertTrue(rs.next()); assertEquals("a",rs.getString(1)); assertFalse(rs.next()); @@ -103,9 +105,9 @@ public class BinaryRowKeyIT extends BaseHBaseManagedTimeIT { Connection conn = DriverManager.getConnection(getUrl(), props); try { - initTableValues(); - - String query = "SELECT * FROM test_table"; + String tableName = generateRandomString(); + initTableValues(tableName); + String query = "SELECT * FROM " + tableName; PreparedStatement stmt = conn.prepareStatement(query); ResultSet rs = stmt.executeQuery(); @@ -129,15 +131,16 @@ public class BinaryRowKeyIT extends BaseHBaseManagedTimeIT { Connection conn = DriverManager.getConnection(getUrl(), props); try { - initTableValues(); + String tableName = generateRandomString(); + initTableValues(tableName); - String query = "UPSERT INTO test_table (a_binary, a_string, b_binary) " - + " SELECT a_binary, a_string, a_binary FROM test_table"; + String query = "UPSERT INTO " + tableName + " (a_binary, a_string, b_binary) " + + " SELECT a_binary, a_string, a_binary FROM " + tableName; PreparedStatement stmt = conn.prepareStatement(query); stmt.execute(); conn.commit(); - query = "SELECT a_binary, b_binary FROM test_table"; + query = "SELECT a_binary, b_binary FROM " + tableName; stmt = conn.prepareStatement(query); ResultSet rs = stmt.executeQuery();
