You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2017/09/21 18:04:47 UTC
[1/5] phoenix git commit: PHOENIX-4189 Introduce a class that wraps
the Map of primary key data (addendum)
Repository: phoenix
Updated Branches:
refs/heads/4.x-HBase-0.98 952260d52 -> f79891515
PHOENIX-4189 Introduce a class that wraps the Map of primary key data (addendum)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/ed81dce1
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/ed81dce1
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/ed81dce1
Branch: refs/heads/4.x-HBase-0.98
Commit: ed81dce1f0c72b6b8ddc1574b8a05448e0b8b44d
Parents: 952260d
Author: James Taylor <jt...@salesforce.com>
Authored: Mon Sep 18 16:30:19 2017 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Thu Sep 21 10:56:22 2017 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/phoenix/hive/PrimaryKeyData.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/ed81dce1/phoenix-hive/src/main/java/org/apache/phoenix/hive/PrimaryKeyData.java
----------------------------------------------------------------------
diff --git a/phoenix-hive/src/main/java/org/apache/phoenix/hive/PrimaryKeyData.java b/phoenix-hive/src/main/java/org/apache/phoenix/hive/PrimaryKeyData.java
index b5e9dd9..7773997 100644
--- a/phoenix-hive/src/main/java/org/apache/phoenix/hive/PrimaryKeyData.java
+++ b/phoenix-hive/src/main/java/org/apache/phoenix/hive/PrimaryKeyData.java
@@ -77,7 +77,7 @@ public class PrimaryKeyData implements Serializable{
}
public static PrimaryKeyData deserialize(InputStream input) throws IOException, ClassNotFoundException {
- try (LookAheadObjectInputStream ois = new LookAheadObjectInputStream((InputStream) input)) {
+ try (LookAheadObjectInputStream ois = new LookAheadObjectInputStream(input)) {
Object obj = ois.readObject();
if (obj instanceof PrimaryKeyData) {
return (PrimaryKeyData) obj;
[5/5] phoenix git commit: PHOENIX-4221 Disallow DML operations on
connections with CURRENT_SCN set - VariableLengthPKIT (Ethan Wang)
Posted by ja...@apache.org.
PHOENIX-4221 Disallow DML operations on connections with CURRENT_SCN set - VariableLengthPKIT (Ethan Wang)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f7989151
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f7989151
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f7989151
Branch: refs/heads/4.x-HBase-0.98
Commit: f798915151ba3f8fe6bfc49e6119d8fc5e8bd9e5
Parents: 2da53a6
Author: James Taylor <jt...@salesforce.com>
Authored: Thu Sep 21 10:44:02 2017 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Thu Sep 21 11:04:02 2017 -0700
----------------------------------------------------------------------
.../phoenix/end2end/VariableLengthPKIT.java | 1171 +++++++++---------
1 file changed, 570 insertions(+), 601 deletions(-)
----------------------------------------------------------------------
[2/5] phoenix git commit: PHOENIX-4212 Disallow DML operations on
connections with CURRENT_SCN set - DerivedTableIT (Ethan Wang)
Posted by ja...@apache.org.
PHOENIX-4212 Disallow DML operations on connections with CURRENT_SCN set - DerivedTableIT (Ethan Wang)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/c984951d
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/c984951d
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/c984951d
Branch: refs/heads/4.x-HBase-0.98
Commit: c984951d69d45f8578895acc43e42cfd53ae6045
Parents: ed81dce
Author: James Taylor <jt...@salesforce.com>
Authored: Mon Sep 18 17:16:55 2017 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Thu Sep 21 11:03:20 2017 -0700
----------------------------------------------------------------------
.../apache/phoenix/end2end/DerivedTableIT.java | 955 ++-----------------
1 file changed, 87 insertions(+), 868 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/c984951d/phoenix-core/src/it/java/org/apache/phoenix/end2end/DerivedTableIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DerivedTableIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DerivedTableIT.java
index 3bbd347..fd769bc 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DerivedTableIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DerivedTableIT.java
@@ -41,63 +41,112 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.util.Collection;
+import java.util.List;
import java.util.Properties;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestName;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+import com.google.common.collect.Lists;
+
+
+@RunWith(Parameterized.class)
public class DerivedTableIT extends ParallelStatsDisabledIT {
- private static String[] initTableWithIndex(String tableName) throws Exception {
- String tenantId = getOrganizationId();
+ private static final String tenantId = getOrganizationId();
+ private static final String dynamicTableName = "_TABLENAME_REPLACEABLE_";
+ @Rule public TestName name = new TestName();
+
+ private String[] indexDDL;
+ private String[] plans;
+ private String tableName;
+
+
+ public DerivedTableIT(String[] indexDDL, String[] plans) {
+ this.indexDDL = indexDDL;
+ this.plans = plans;
+ }
+
+ @Before
+ public void initTable() throws Exception {
+ if(tableName!=null) throw new RuntimeException("Test has not been cleaned up.");
+ tableName = generateUniqueName();
+
initATableValues(tableName, tenantId, getDefaultSplits(tenantId), null, null, getUrl(), null);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- String ddl="CREATE INDEX "+tableName+"_DERIVED_IDX ON "+tableName+" (a_byte) INCLUDE (A_STRING, B_STRING)";
- conn.createStatement().execute(ddl);
- String[] plans= {"CLIENT PARALLEL 1-WAY FULL SCAN OVER "+tableName+"_DERIVED_IDX\n" +
- " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"A_STRING\", \"B_STRING\"]\n" +
- "CLIENT MERGE SORT\n" +
- "CLIENT SORTED BY [\"B_STRING\"]\n" +
- "CLIENT SORTED BY [A]\n" +
- "CLIENT AGGREGATE INTO DISTINCT ROWS BY [A]\n" +
- "CLIENT SORTED BY [A DESC]",
-
- "CLIENT PARALLEL 1-WAY FULL SCAN OVER "+tableName+"_DERIVED_IDX\n" +
+ if (indexDDL != null && indexDDL.length > 0) {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ for (String ddl : indexDDL) {
+ ddl=ddl.replace(dynamicTableName,tableName);
+ conn.createStatement().execute(ddl);
+ }
+ }
+ String[] newplan=new String[plans.length];
+ if(plans !=null && plans.length>0){
+ for(int i=0;i< plans.length;i++){
+ newplan[i]=plans[i].replace(dynamicTableName,tableName);
+ }
+ plans = newplan;
+ }
+ }
+
+ @After
+ public void cleanUp(){
+ tableName=null;
+ }
+
+ @Parameters(name="DerivedTableIT_{index}") // name is used by failsafe as file name in reports
+ public static Collection<Object> data() {
+ List<Object> testCases = Lists.newArrayList();
+ testCases.add(new String[][] {
+ {
+ "CREATE INDEX "+dynamicTableName+"_DERIVED_IDX ON "+dynamicTableName+" (a_byte) INCLUDE (A_STRING, B_STRING)"
+ }, {
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER "+dynamicTableName+"_DERIVED_IDX\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"A_STRING\", \"B_STRING\"]\n" +
+ "CLIENT MERGE SORT\n" +
+ "CLIENT SORTED BY [\"B_STRING\"]\n" +
+ "CLIENT SORTED BY [A]\n" +
+ "CLIENT AGGREGATE INTO DISTINCT ROWS BY [A]\n" +
+ "CLIENT SORTED BY [A DESC]",
+
+ "CLIENT PARALLEL 1-WAY FULL SCAN OVER "+dynamicTableName+"_DERIVED_IDX\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [\"A_STRING\", \"B_STRING\"]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [A]\n" +
"CLIENT AGGREGATE INTO DISTINCT ROWS BY [A]\n" +
"CLIENT DISTINCT ON [COLLECTDISTINCT(B)]\n" +
- "CLIENT SORTED BY [A DESC]"};
- return plans;
- }
+ "CLIENT SORTED BY [A DESC]"}});
+ testCases.add(new String[][] {
+ {}, {
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER "+dynamicTableName+"\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING, B_STRING]\n" +
+ "CLIENT MERGE SORT\n" +
+ "CLIENT SORTED BY [B_STRING]\n" +
+ "CLIENT SORTED BY [A]\n" +
+ "CLIENT AGGREGATE INTO DISTINCT ROWS BY [A]\n" +
+ "CLIENT SORTED BY [A DESC]",
- private static String[] initTableWithoutIndex(String tableName) throws Exception {
- String tenantId = getOrganizationId();
- initATableValues(tableName, tenantId, getDefaultSplits(tenantId), null, null, getUrl(), null);
- String[] plans= {"CLIENT PARALLEL 4-WAY FULL SCAN OVER "+tableName+"\n" +
- " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING, B_STRING]\n" +
- "CLIENT MERGE SORT\n" +
- "CLIENT SORTED BY [B_STRING]\n" +
- "CLIENT SORTED BY [A]\n" +
- "CLIENT AGGREGATE INTO DISTINCT ROWS BY [A]\n" +
- "CLIENT SORTED BY [A DESC]",
-
- "CLIENT PARALLEL 4-WAY FULL SCAN OVER "+tableName+"\n" +
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER "+dynamicTableName+"\n" +
" SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING, B_STRING]\n" +
"CLIENT MERGE SORT\n" +
"CLIENT SORTED BY [A]\n" +
"CLIENT AGGREGATE INTO DISTINCT ROWS BY [A]\n" +
"CLIENT DISTINCT ON [COLLECTDISTINCT(B)]\n" +
- "CLIENT SORTED BY [A DESC]"};
- return plans;
+ "CLIENT SORTED BY [A DESC]"}});
+ return testCases;
}
@Test
public void testDerivedTableWithWhere() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -259,8 +308,6 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTableWithGroupBy() throws Exception {
- String tableName=generateUniqueName();
- String[] plans=initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -355,7 +402,7 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
assertEquals(plans[1], QueryUtil.getExplainPlan(rs));
// (orderby) groupby
- // FIXME: subtle difference between master: referencing t.a_string causes a ColumnFamilyNotFoundException
+ // FIXME: If a_string is qualified with t, this query fails for HBase 0.98. We must be missing a commit somewhere.
query = "SELECT a_string, count(*) FROM (SELECT * FROM "+tableName+" order by a_integer) AS t where a_byte != 8 group by a_string";
statement = conn.prepareStatement(query);
rs = statement.executeQuery();
@@ -388,8 +435,6 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTableWithOrderBy() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -485,8 +530,6 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTableWithLimit() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -579,8 +622,6 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTableWithOffset() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -670,8 +711,6 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTableWithDistinct() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -773,8 +812,6 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTableWithAggregate() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -847,8 +884,6 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testDerivedTableWithJoin() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
@@ -897,829 +932,13 @@ public class DerivedTableIT extends ParallelStatsDisabledIT {
@Test
public void testNestedDerivedTable() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // select(select(select))
- String query = "SELECT q.id, q.x10 * 10 FROM (SELECT t.eid id, t.x + 9 x10, t.astr a, t.bstr b FROM (SELECT entity_id eid, a_string astr, b_string bstr, a_byte + 1 x FROM "+tableName+" WHERE a_byte + 1 < ?) AS t ORDER BY b, id) AS q WHERE q.a = ? OR q.b = ? OR q.b = ?";
- PreparedStatement statement = conn.prepareStatement(query);
- statement.setInt(1, 9);
- statement.setString(2, A_VALUE);
- statement.setString(3, C_VALUE);
- statement.setString(4, E_VALUE);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertEquals(110,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW4,rs.getString(1));
- assertEquals(140,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertEquals(120,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertEquals(150,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW3,rs.getString(1));
- assertEquals(130,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW6,rs.getString(1));
- assertEquals(160,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // select(select(select) join (select(select)))
- query = "SELECT q1.id, q2.id FROM (SELECT t.eid id, t.astr a, t.bstr b FROM (SELECT entity_id eid, a_string astr, b_string bstr, a_byte abyte FROM "+tableName+") AS t WHERE t.abyte >= ?) AS q1"
- + " JOIN (SELECT t.eid id, t.astr a, t.bstr b, t.abyte x FROM (SELECT entity_id eid, a_string astr, b_string bstr, a_byte abyte FROM "+tableName+") AS t) AS q2 ON q1.a = q2.b"
- + " WHERE q2.x != ? ORDER BY q1.id, q2.id DESC";
- statement = conn.prepareStatement(query);
- statement.setInt(1, 8);
- statement.setInt(2, 5);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
- assertEquals(ROW7,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
- assertEquals(ROW4,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
- assertEquals(ROW1,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(ROW9,rs.getString(1));
- assertEquals(ROW8,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(ROW9,rs.getString(1));
- assertEquals(ROW2,rs.getString(2));
-
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testDerivedTableWithWhereWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- initTableWithoutIndex(tableName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
try {
- // (where)
- String query = "SELECT t.eid, t.x + 9 FROM (SELECT entity_id eid, b_string b, a_byte + 1 x FROM "+tableName+" WHERE a_byte + 1 < 9) AS t";
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertEquals(11,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertEquals(12,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW3,rs.getString(1));
- assertEquals(13,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW4,rs.getString(1));
- assertEquals(14,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertEquals(15,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW6,rs.getString(1));
- assertEquals(16,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW7,rs.getString(1));
- assertEquals(17,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // () where
- query = "SELECT t.eid, t.x + 9 FROM (SELECT entity_id eid, b_string b, a_byte + 1 x FROM "+tableName+") AS t WHERE t.b = '" + C_VALUE + "'";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertEquals(12,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertEquals(15,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
- assertEquals(18,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // (where) where
- query = "SELECT t.eid, t.x + 9 FROM (SELECT entity_id eid, b_string b, a_byte + 1 x FROM "+tableName+" WHERE a_byte + 1 < 9) AS t WHERE t.b = '" + C_VALUE + "'";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertEquals(12,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertEquals(15,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // (groupby where) where
- query = "SELECT t.a, t.c, t.m FROM (SELECT a_string a, count(*) c, max(a_byte) m FROM "+tableName+" WHERE a_byte != 8 GROUP BY a_string) AS t WHERE t.c > 1";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(4,rs.getInt(2));
- assertEquals(4,rs.getInt(3));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(3,rs.getInt(2));
- assertEquals(7,rs.getInt(3));
-
- assertFalse(rs.next());
-
- // (groupby having where) where
- query = "SELECT t.a, t.c, t.m FROM (SELECT a_string a, count(*) c, max(a_byte) m FROM "+tableName+" WHERE a_byte != 8 GROUP BY a_string HAVING count(*) >= 2) AS t WHERE t.a != '" + A_VALUE + "'";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(3,rs.getInt(2));
- assertEquals(7,rs.getInt(3));
-
- assertFalse(rs.next());
-
- // (limit) where
- query = "SELECT t.eid FROM (SELECT entity_id eid, b_string b FROM "+tableName+" LIMIT 2) AS t WHERE t.b = '" + C_VALUE + "'";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
-
- assertFalse(rs.next());
-
- // ((where limit) where limit) limit
- query = "SELECT u.eid FROM (SELECT t.eid FROM (SELECT entity_id eid, b_string b FROM "+tableName+" WHERE a_string = '" + B_VALUE + "' LIMIT 5) AS t WHERE t.b = '" + C_VALUE + "' LIMIT 4) AS u WHERE u.eid >= '" + ROW1 + "' LIMIT 3";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
-
- assertFalse(rs.next());
+ //testNestedDerivedTable require index with same name be created
+ String ddl = "CREATE INDEX IF NOT EXISTS "+tableName+"_DERIVED_IDX ON "+tableName+" (a_byte) INCLUDE (A_STRING, B_STRING)";
+ conn.createStatement().execute(ddl);
- // (count) where
- query = "SELECT t.c FROM (SELECT count(*) c FROM "+tableName+") AS t WHERE t.c > 0";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(9,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // Inner limit < outer query offset
- query = "SELECT t.eid, t.x + 9 FROM (SELECT entity_id eid, b_string b, a_byte + 1 x FROM "+tableName+" LIMIT 1 OFFSET 1 ) AS t WHERE t.b = '"
- + C_VALUE + "' OFFSET 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertFalse(rs.next());
-
- // (where) offset
- query = "SELECT t.eid, t.x + 9 FROM (SELECT entity_id eid, b_string b, a_byte + 1 x FROM "+tableName+" WHERE a_byte + 1 < 9 ) AS t OFFSET 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(ROW3, rs.getString(1));
- assertEquals(13, rs.getInt(2));
- assertTrue(rs.next());
- assertEquals(ROW4, rs.getString(1));
- assertEquals(14, rs.getInt(2));
- assertTrue(rs.next());
- assertEquals(ROW5, rs.getString(1));
- assertEquals(15, rs.getInt(2));
- assertTrue(rs.next());
- assertEquals(ROW6, rs.getString(1));
- assertEquals(16, rs.getInt(2));
- assertTrue(rs.next());
- assertEquals(ROW7, rs.getString(1));
- assertEquals(17, rs.getInt(2));
-
- // (offset) where
- query = "SELECT t.eid, t.x + 9 FROM (SELECT entity_id eid, b_string b, a_byte + 1 x FROM "+tableName+" OFFSET 4) AS t WHERE t.b = '"
- + C_VALUE + "'";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(ROW5, rs.getString(1));
- assertEquals(15, rs.getInt(2));
- assertTrue(rs.next());
- assertEquals(ROW8, rs.getString(1));
- assertEquals(18, rs.getInt(2));
-
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testDerivedTableWithGroupByWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- String[] plans=initTableWithoutIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // () groupby having
- String query = "SELECT t.a, count(*), max(t.s) FROM (SELECT a_string a, a_byte s FROM "+tableName+" WHERE a_byte != 8) AS t GROUP BY t.a HAVING count(*) > 1";
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(4,rs.getInt(2));
- assertEquals(4,rs.getInt(3));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(3,rs.getInt(2));
- assertEquals(7,rs.getInt(3));
-
- assertFalse(rs.next());
-
- // (groupby) groupby
- query = "SELECT t.c, count(*) FROM (SELECT count(*) c FROM "+tableName+" GROUP BY a_string) AS t GROUP BY t.c";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(1,rs.getInt(1));
- assertEquals(1,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(4,rs.getInt(1));
- assertEquals(2,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // (groupby) groupby orderby
- query = "SELECT t.c, count(*) FROM (SELECT count(*) c FROM "+tableName+" GROUP BY a_string) AS t GROUP BY t.c ORDER BY count(*) DESC";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(4,rs.getInt(1));
- assertEquals(2,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(1,rs.getInt(1));
- assertEquals(1,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // (groupby a, b orderby b) groupby a orderby a
- query = "SELECT t.a, COLLECTDISTINCT(t.b) FROM (SELECT b_string b, a_string a FROM "+tableName+" GROUP BY a_string, b_string ORDER BY b_string) AS t GROUP BY t.a ORDER BY t.a DESC";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
- String[] b = new String[1];
- b[0] = E_VALUE;
- Array array = conn.createArrayOf("VARCHAR", b);
- assertEquals(array,rs.getArray(2));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- b = new String[3];
- b[0] = B_VALUE;
- b[1] = C_VALUE;
- b[2] = E_VALUE;
- array = conn.createArrayOf("VARCHAR", b);
- assertEquals(array,rs.getArray(2));
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(array,rs.getArray(2));
-
- assertFalse(rs.next());
-
- rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[0], QueryUtil.getExplainPlan(rs));
-
- // distinct b (groupby a, b) groupby a orderby a
- query = "SELECT DISTINCT COLLECTDISTINCT(t.b) FROM (SELECT b_string b, a_string a FROM "+tableName+" GROUP BY a_string, b_string) AS t GROUP BY t.a ORDER BY t.a DESC";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- b = new String[1];
- b[0] = E_VALUE;
- array = conn.createArrayOf("VARCHAR", b);
- assertEquals(array,rs.getArray(1));
- assertTrue (rs.next());
- b = new String[3];
- b[0] = B_VALUE;
- b[1] = C_VALUE;
- b[2] = E_VALUE;
- array = conn.createArrayOf("VARCHAR", b);
- assertEquals(array,rs.getArray(1));
-
- assertFalse(rs.next());
-
- rs = conn.createStatement().executeQuery("EXPLAIN " + query);
- assertEquals(plans[1], QueryUtil.getExplainPlan(rs));
-
- // (orderby) groupby
- // FIXME: subtle difference between master: referencing t.a_string causes a ColumnFamilyNotFoundException
- query = "SELECT a_string, count(*) FROM (SELECT * FROM "+tableName+" order by a_integer) AS t where a_byte != 8 group by a_string";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(4,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(3,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
- assertEquals(1,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // (groupby) groupby orderby offset
- query = "SELECT t.c, count(*) FROM (SELECT count(*) c FROM "+tableName+" GROUP BY a_string) AS t GROUP BY t.c ORDER BY count(*) DESC OFFSET 1";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(1, rs.getInt(1));
- assertEquals(1, rs.getInt(2));
-
- assertFalse(rs.next());
-
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testDerivedTableWithOrderByWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- initTableWithoutIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // (orderby)
- String query = "SELECT t.eid FROM (SELECT entity_id eid, b_string b FROM "+tableName+" ORDER BY b, eid) AS t";
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW4,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW7,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW3,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW6,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW9,rs.getString(1));
-
- assertFalse(rs.next());
-
- // () orderby
- query = "SELECT t.eid FROM (SELECT entity_id eid, b_string b FROM "+tableName+") AS t ORDER BY t.b, t.eid";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW4,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW7,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW3,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW6,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW9,rs.getString(1));
-
- assertFalse(rs.next());
-
- // (orderby) orderby
- query = "SELECT t.eid FROM (SELECT entity_id eid, b_string b FROM "+tableName+" ORDER BY b, eid) AS t ORDER BY t.b DESC, t.eid DESC";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW9,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW6,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW3,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW8,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW5,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW7,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW4,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
-
- assertFalse(rs.next());
-
- // (limit) orderby
- query = "SELECT t.eid FROM (SELECT entity_id eid, b_string b FROM "+tableName+" LIMIT 2) AS t ORDER BY t.b DESC, t.eid";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
-
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testDerivedTableWithLimitWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- initTableWithoutIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // (limit)
- String query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT 2) AS t";
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
-
- assertFalse(rs.next());
-
- // () limit
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+") AS t LIMIT 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
-
- assertFalse(rs.next());
-
- // (limit 2) limit 4
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT 2) AS t LIMIT 4";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
-
- assertFalse(rs.next());
-
- // (limit 4) limit 2
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT 4) AS t LIMIT 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
-
- assertFalse(rs.next());
-
- // limit ? limit ?
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT ?) AS t LIMIT ?";
- statement = conn.prepareStatement(query);
- statement.setInt(1, 4);
- statement.setInt(2, 2);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(ROW1,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(ROW2,rs.getString(1));
-
- assertFalse(rs.next());
-
- // (groupby orderby) limit
- query = "SELECT a, s FROM (SELECT a_string a, sum(a_byte) s FROM "+tableName+" GROUP BY a_string ORDER BY sum(a_byte)) LIMIT 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
- assertEquals(9,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(10,rs.getInt(2));
-
- assertFalse(rs.next());
-
- // (union) groupby limit
- query = "SELECT a_string, count(*) FROM (SELECT a_string FROM "+tableName+" where a_byte < 4 union all SELECT a_string FROM "+tableName+" where a_byte > 8) group by a_string limit 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(3,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
- assertEquals(1,rs.getInt(2));
-
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testDerivedTableWithOffsetWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- initTableWithoutIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // (LIMIT OFFSET )
- String query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT 2 OFFSET 1) AS t";
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(ROW2, rs.getString(1));
- assertTrue(rs.next());
- assertEquals(ROW3, rs.getString(1));
-
- assertFalse(rs.next());
-
- // (OFFSET) limit
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" OFFSET 1) AS t LIMIT 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(ROW2, rs.getString(1));
- assertTrue(rs.next());
- assertEquals(ROW3, rs.getString(1));
-
- assertFalse(rs.next());
-
- // (limit OFFSET) limit OFFSET
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT 2 OFFSET 1) AS t LIMIT 4 OFFSET 1";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(ROW3, rs.getString(1));
- assertFalse(rs.next());
-
- // (limit OFFSET) limit 2
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT 4 OFFSET 1) AS t LIMIT 2";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(ROW2, rs.getString(1));
- assertTrue(rs.next());
- assertEquals(ROW3, rs.getString(1));
-
- assertFalse(rs.next());
-
- // (limit ? OFFSET ?) limit ? OFFSET ?
- query = "SELECT t.eid FROM (SELECT entity_id eid FROM "+tableName+" LIMIT ? OFFSET ?) AS t LIMIT ? OFFSET ?";
- statement = conn.prepareStatement(query);
- statement.setInt(1, 4);
- statement.setInt(2, 2);
- statement.setInt(3, 2);
- statement.setInt(4, 2);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(ROW5, rs.getString(1));
- assertTrue(rs.next());
- assertEquals(ROW6, rs.getString(1));
- assertFalse(rs.next());
-
- // (groupby orderby OFFSET)
- query = "SELECT a, s FROM (SELECT a_string a, sum(a_byte) s FROM "+tableName+" GROUP BY a_string ORDER BY sum(a_byte) OFFSET 1)";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue(rs.next());
- assertEquals(A_VALUE, rs.getString(1));
- assertEquals(10, rs.getInt(2));
- assertTrue(rs.next());
- assertEquals(B_VALUE, rs.getString(1));
- assertEquals(26, rs.getInt(2));
-
- assertFalse(rs.next());
-
- // (union OFFSET) groupby
- query = "SELECT a_string, count(*) FROM (SELECT a_string FROM "+tableName+" where a_byte < 4 union all SELECT a_string FROM "+tableName+" where a_byte > 8 OFFSET 1) group by a_string";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(2,rs.getInt(2));
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
- assertEquals(1,rs.getInt(2));
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testDerivedTableWithDistinctWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- initTableWithoutIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // (distinct)
- String query = "SELECT * FROM (SELECT DISTINCT a_string, b_string FROM "+tableName+") AS t WHERE t.b_string != '" + C_VALUE + "' ORDER BY t.b_string, t.a_string";
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(B_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(B_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(E_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(E_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
- assertEquals(E_VALUE,rs.getString(2));
-
- assertFalse(rs.next());
-
- // distinct ()
- query = "SELECT DISTINCT t.a, t.b FROM (SELECT a_string a, b_string b FROM "+tableName+") AS t WHERE t.b != '" + C_VALUE + "' ORDER BY t.b, t.a";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(B_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(B_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(E_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertEquals(E_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
- assertEquals(E_VALUE,rs.getString(2));
-
- assertFalse(rs.next());
-
- // distinct (distinct)
- query = "SELECT DISTINCT t.a FROM (SELECT DISTINCT a_string a, b_string b FROM "+tableName+") AS t";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(B_VALUE,rs.getString(1));
- assertTrue (rs.next());
- assertEquals(C_VALUE,rs.getString(1));
-
- assertFalse(rs.next());
-
- // distinct (groupby)
- query = "SELECT distinct t.c FROM (SELECT count(*) c FROM "+tableName+" GROUP BY a_string) AS t";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(1,rs.getInt(1));
- assertTrue (rs.next());
- assertEquals(4,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // distinct (groupby) orderby
- query = "SELECT distinct t.c FROM (SELECT count(*) c FROM "+tableName+" GROUP BY a_string) AS t ORDER BY t.c DESC";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(4,rs.getInt(1));
- assertTrue (rs.next());
- assertEquals(1,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // distinct (limit)
- query = "SELECT DISTINCT t.a, t.b FROM (SELECT a_string a, b_string b FROM "+tableName+" LIMIT 2) AS t";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(B_VALUE,rs.getString(2));
- assertTrue (rs.next());
- assertEquals(A_VALUE,rs.getString(1));
- assertEquals(C_VALUE,rs.getString(2));
-
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testDerivedTableWithAggregateWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- initTableWithoutIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
- // (count)
- String query = "SELECT * FROM (SELECT count(*) FROM "+tableName+" WHERE a_byte != 8) AS t";
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(8,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // count ()
- query = "SELECT count(*) FROM (SELECT a_byte FROM "+tableName+") AS t WHERE t.a_byte != 8";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(8,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // count (distinct)
- query = "SELECT count(*) FROM (SELECT DISTINCT a_string FROM "+tableName+") AS t";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(3,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // count (groupby)
- query = "SELECT count(*) FROM (SELECT count(*) c FROM "+tableName+" GROUP BY a_string) AS t";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(3,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // count (limit)
- query = "SELECT count(*) FROM (SELECT entity_id FROM "+tableName+" LIMIT 2) AS t";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(2,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // count (subquery)
- query = "SELECT count(*) FROM (SELECT * FROM "+tableName+" WHERE (organization_id, entity_id) in (SELECT organization_id, entity_id FROM "+tableName+" WHERE a_byte != 8)) AS t";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(8,rs.getInt(1));
-
- assertFalse(rs.next());
-
- // count (orderby)
- query = "SELECT count(a_byte) FROM (SELECT * FROM "+tableName+" order by a_integer) AS t where a_byte != 8";
- statement = conn.prepareStatement(query);
- rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(8,rs.getInt(1));
-
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
- }
-
- @Test
- public void testNestedDerivedTableWithoutIndex() throws Exception {
- String tableName=generateUniqueName();
- initTableWithIndex(tableName);
- initTableWithoutIndex(tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(getUrl(), props);
- try {
// select(select(select))
String query = "SELECT q.id, q.x10 * 10 FROM (SELECT t.eid id, t.x + 9 x10, t.astr a, t.bstr b FROM (SELECT entity_id eid, a_string astr, b_string bstr, a_byte + 1 x FROM "+tableName+" WHERE a_byte + 1 < ?) AS t ORDER BY b, id) AS q WHERE q.a = ? OR q.b = ? OR q.b = ?";
PreparedStatement statement = conn.prepareStatement(query);
[3/5] phoenix git commit: PHOENIX-4220 Upper bound not being used in
partial index rebuilder
Posted by ja...@apache.org.
PHOENIX-4220 Upper bound not being used in partial index rebuilder
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2da53a65
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2da53a65
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2da53a65
Branch: refs/heads/4.x-HBase-0.98
Commit: 2da53a65c42b5dbe59852be783a4744c27c31d1e
Parents: c984951
Author: James Taylor <jt...@salesforce.com>
Authored: Thu Sep 21 09:48:13 2017 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Thu Sep 21 11:03:47 2017 -0700
----------------------------------------------------------------------
.../end2end/index/PartialIndexRebuilderIT.java | 64 +++++++++++++++++++-
.../coprocessor/MetaDataRegionObserver.java | 12 ++--
2 files changed, 66 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2da53a65/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java
index 12630f4..dfe5a28 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java
@@ -20,6 +20,7 @@ package org.apache.phoenix.end2end.index;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
import java.sql.Connection;
@@ -45,7 +46,6 @@ import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.query.ConnectionQueryServices;
import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.query.QueryServicesOptions;
import org.apache.phoenix.schema.PIndexState;
import org.apache.phoenix.schema.PMetaData;
import org.apache.phoenix.schema.PTable;
@@ -71,12 +71,13 @@ import com.google.common.collect.Maps;
public class PartialIndexRebuilderIT extends BaseUniqueNamesOwnClusterIT {
private static final Random RAND = new Random(5);
private static final int WAIT_AFTER_DISABLED = 5000;
+ private static final int REBUILD_INTERVAL = 2000;
@BeforeClass
public static void doSetup() throws Exception {
Map<String, String> serverProps = Maps.newHashMapWithExpectedSize(10);
serverProps.put(QueryServices.INDEX_FAILURE_HANDLING_REBUILD_ATTRIB, Boolean.TRUE.toString());
- serverProps.put(QueryServices.INDEX_FAILURE_HANDLING_REBUILD_INTERVAL_ATTRIB, "2000");
+ serverProps.put(QueryServices.INDEX_FAILURE_HANDLING_REBUILD_INTERVAL_ATTRIB, Long.toString(REBUILD_INTERVAL));
serverProps.put(QueryServices.INDEX_REBUILD_DISABLE_TIMESTAMP_THRESHOLD, "120000"); // give up rebuilding after 2 minutes
serverProps.put(QueryServices.INDEX_FAILURE_HANDLING_REBUILD_OVERLAP_FORWARD_TIME_ATTRIB, Long.toString(WAIT_AFTER_DISABLED));
setUpTestDriver(new ReadOnlyProps(serverProps.entrySet().iterator()), ReadOnlyProps.EMPTY_PROPS);
@@ -641,7 +642,64 @@ public class PartialIndexRebuilderIT extends BaseUniqueNamesOwnClusterIT {
private final static CountDownLatch WAIT_FOR_REBUILD_TO_START = new CountDownLatch(1);
private final static CountDownLatch WAIT_FOR_INDEX_WRITE = new CountDownLatch(1);
-
+ @Test
+ public void testUpperBoundSetOnRebuild() throws Throwable {
+ String schemaName = generateUniqueName();
+ String tableName = generateUniqueName();
+ String indexName = generateUniqueName();
+ final String fullTableName = SchemaUtil.getTableName(schemaName, tableName);
+ final String fullIndexName = SchemaUtil.getTableName(schemaName, indexName);
+ PTableKey key = new PTableKey(null,fullTableName);
+ final MyClock clock = new MyClock(1000);
+ EnvironmentEdgeManager.injectEdge(clock);
+ try (Connection conn = DriverManager.getConnection(getUrl())) {
+ PMetaData metaCache = conn.unwrap(PhoenixConnection.class).getMetaDataCache();
+ conn.createStatement().execute("CREATE TABLE " + fullTableName + "(k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) COLUMN_ENCODED_BYTES = 0, STORE_NULLS=true");
+ clock.time += 100;
+ conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + fullTableName + " (v1, v2)");
+ clock.time += 100;
+ HTableInterface metaTable = conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME_BYTES);
+ IndexUtil.updateIndexState(fullIndexName, 0L, metaTable, PIndexState.DISABLE);
+ clock.time += 100;
+ long disableTime = clock.currentTime();
+ conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES('a','a', '0')");
+ conn.commit();
+ // Set clock forward in time past the "overlap" amount we wait for index maintenance to kick in
+ clock.time += 10 * WAIT_AFTER_DISABLED;
+ assertTrue(hasDisabledIndex(metaCache, key));
+ assertEquals(1,TestUtil.getRowCount(conn, fullTableName));
+ assertEquals(0,TestUtil.getRowCount(conn, fullIndexName));
+ conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES('bb','bb','11')");
+ conn.commit();
+ assertEquals(2,TestUtil.getRowCount(conn, fullTableName));
+ assertEquals(0,TestUtil.getRowCount(conn, fullIndexName));
+ // Set clock back in time and start rebuild
+ clock.time = disableTime + 100;
+ IndexUtil.updateIndexState(fullIndexName, disableTime, metaTable, PIndexState.DISABLE);
+ advanceClockUntilPartialRebuildStarts(fullIndexName, clock);
+ clock.time += REBUILD_INTERVAL;
+ waitForIndexRebuild(conn, fullIndexName, PIndexState.ACTIVE, clock, REBUILD_INTERVAL);
+ assertEquals(2,TestUtil.getRowCount(conn, fullTableName));
+ // If an upper bound was set on the rebuilder, we should only have found one row
+ assertEquals(1,TestUtil.getRowCount(conn, fullIndexName));
+ } finally {
+ EnvironmentEdgeManager.injectEdge(null);
+ }
+ }
+
+ private static void waitForIndexRebuild(Connection conn, String fullIndexName, PIndexState expectedIndexState, MyClock clock, long increment) throws InterruptedException, SQLException {
+ int maxTries = 60, nTries = 0;
+ do {
+ Thread.sleep(1000); // sleep 1 sec
+ clock.time += increment;
+ if (TestUtil.checkIndexState(conn, fullIndexName, expectedIndexState, 0L)) {
+ return;
+ }
+ } while (++nTries < maxTries);
+ fail("Ran out of time waiting for index state to become " + expectedIndexState);
+ }
+
+
@Test
public void testDisableIndexDuringRebuild() throws Throwable {
String schemaName = generateUniqueName();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/2da53a65/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataRegionObserver.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataRegionObserver.java
index 4fe137e..4cacd87 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataRegionObserver.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataRegionObserver.java
@@ -426,19 +426,17 @@ public class MetaDataRegionObserver extends BaseRegionObserver {
continue;
}
long scanBeginTime = Math.max(0, earliestDisableTimestamp - backwardOverlapDurationMs);
+ long scanEndTime = Math.min(latestUpperBoundTimestamp,
+ getTimestampForBatch(scanBeginTime,batchExecutedPerTableMap.get(dataPTable.getName())));
LOG.info("Starting to build " + dataPTable + " indexes " + indexesToPartiallyRebuild
- + " from timestamp=" + scanBeginTime + " until " + latestUpperBoundTimestamp);
+ + " from timestamp=" + scanBeginTime + " until " + scanEndTime);
TableRef tableRef = new TableRef(null, dataPTable, HConstants.LATEST_TIMESTAMP, false);
// TODO Need to set high timeout
PostDDLCompiler compiler = new PostDDLCompiler(conn);
- MutationPlan plan = compiler.compile(Collections.singletonList(tableRef), null, null, null,
- HConstants.LATEST_TIMESTAMP);
- Scan dataTableScan = IndexManagementUtil.newLocalStateScan(plan.getContext().getScan(),
- maintainers);
+ MutationPlan plan = compiler.compile(Collections.singletonList(tableRef), null, null, null, scanEndTime);
+ Scan dataTableScan = IndexManagementUtil.newLocalStateScan(plan.getContext().getScan(), maintainers);
- long scanEndTime = Math.min(latestUpperBoundTimestamp,
- getTimestampForBatch(scanBeginTime,batchExecutedPerTableMap.get(dataPTable.getName())));
// We can't allow partial results
dataTableScan.setTimeRange(scanBeginTime, scanEndTime);
dataTableScan.setCacheBlocks(false);
[4/5] phoenix git commit: PHOENIX-4221 Disallow DML operations on
connections with CURRENT_SCN set - VariableLengthPKIT (Ethan Wang)
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7989151/phoenix-core/src/it/java/org/apache/phoenix/end2end/VariableLengthPKIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/VariableLengthPKIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/VariableLengthPKIT.java
index 753f2c8..e45d01e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/VariableLengthPKIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/VariableLengthPKIT.java
@@ -43,34 +43,31 @@ import java.util.Properties;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.schema.ConstraintViolationException;
import org.apache.phoenix.util.DateUtil;
-import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
import org.junit.Test;
-
-public class VariableLengthPKIT extends BaseClientManagedTimeIT {
+public class VariableLengthPKIT extends ParallelStatsDisabledIT {
private static final String DS1 = "1970-01-01 00:58:00";
private static final Date D1 = toDate(DS1);
private static Date toDate(String dateString) {
return DateUtil.parseDate(dateString);
}
-
- protected static void initGroupByRowKeyColumns(long ts) throws Exception {
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
+
+ protected static void initGroupByRowKeyColumns(String pTSDBtableName) throws Exception {
+ ensureTableCreated(getUrl(),pTSDBtableName, PTSDB_NAME, null, null, null);
// Insert all rows at ts
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
PreparedStatement stmt = conn.prepareStatement(
- "upsert into " +
- "PTSDB(" +
- " INST, " +
- " HOST," +
- " \"DATE\")" +
- "VALUES (?, ?, CURRENT_DATE())");
+ "upsert into " + pTSDBtableName+
+ " (" +
+ " INST, " +
+ " HOST," +
+ " \"DATE\")" +
+ "VALUES (?, ?, CURRENT_DATE())");
stmt.setString(1, "ab");
stmt.setString(2, "a");
stmt.execute();
@@ -84,44 +81,70 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
conn.close();
}
- protected static void initTableValues(byte[][] splits, long ts) throws Exception {
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, splits, ts-2, null);
+ private static void initVarcharKeyTableValues(byte[][] splits, String varcharKeyTestTableName) throws Exception {
+ String url = getUrl();
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(url, props);
+
+ String ddl = "create table " +varcharKeyTestTableName+
+ " (pk varchar not null primary key)";
+ createTestTable(getUrl(), ddl, splits, null);
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + varcharKeyTestTableName+
+ "(pk) " +
+ "VALUES (?)");
+ stmt.setString(1, " def");
+ stmt.execute();
+ stmt.setString(1, "jkl ");
+ stmt.execute();
+ stmt.setString(1, " ghi ");
+ stmt.execute();
+
+ conn.commit();
+ conn.close();
+ }
+ private static void initPTSDBTableValues(byte[][] splits, String pTSDBtableName) throws Exception {
+ ensureTableCreated(getUrl(),pTSDBtableName, PTSDB_NAME, splits, null, null);
// Insert all rows at ts
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
PreparedStatement stmt = conn.prepareStatement(
- "upsert into " +
- "PTSDB(" +
- " INST, " +
- " HOST," +
- " \"DATE\"," +
- " VAL)" +
- "VALUES (?, ?, ?, ?)");
+ "upsert into " + pTSDBtableName +
+ " (" +
+ " INST, " +
+ " HOST," +
+ " \"DATE\"," +
+ " VAL)" +
+ "VALUES (?, ?, ?, ?)");
stmt.setString(1, "abc");
stmt.setString(2, "abc-def-ghi");
stmt.setDate(3, new Date(System.currentTimeMillis()));
stmt.setBigDecimal(4, new BigDecimal(.5));
stmt.execute();
+ conn.close();
+ }
- ensureTableCreated(getUrl(),BTABLE_NAME, BTABLE_NAME, splits, ts-2, null);
- conn.setAutoCommit(false);
+ private static void initBTableValues(byte[][] splits, String bTableName) throws Exception {
+ String url = getUrl();
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(url, props);
+ ensureTableCreated(getUrl(),bTableName, BTABLE_NAME, splits, null, null);
- // Insert all rows at ts
- stmt = conn.prepareStatement(
- "upsert into " +
- "BTABLE(" +
- " A_STRING, " +
- " A_ID," +
- " B_STRING," +
- " A_INTEGER," +
- " B_INTEGER," +
- " C_INTEGER," +
- " D_STRING," +
- " E_STRING)" +
- "VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
+ PreparedStatement stmt = conn.prepareStatement(
+ "upsert into " + bTableName+
+ " (" +
+ " A_STRING, " +
+ " A_ID," +
+ " B_STRING," +
+ " A_INTEGER," +
+ " B_INTEGER," +
+ " C_INTEGER," +
+ " D_STRING," +
+ " E_STRING)" +
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, "abc");
stmt.setString(2, "111");
stmt.setString(3, "x");
@@ -154,33 +177,19 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
stmt.setString(7, null);
stmt.execute();
- String ddl = "create table VarcharKeyTest" +
- " (pk varchar not null primary key)";
- createTestTable(getUrl(), ddl, splits, ts-2);
- stmt = conn.prepareStatement(
- "upsert into " +
- "VarcharKeyTest(pk) " +
- "VALUES (?)");
- stmt.setString(1, " def");
- stmt.execute();
- stmt.setString(1, "jkl ");
- stmt.execute();
- stmt.setString(1, " ghi ");
- stmt.execute();
-
conn.commit();
conn.close();
}
@Test
public void testSingleColumnScanKey() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM BTABLE WHERE A_STRING=?";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String bTableName = generateUniqueName();
+ String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM "+bTableName+" WHERE A_STRING=?";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, "abc");
ResultSet rs = statement.executeQuery();
@@ -198,13 +207,14 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSingleColumnGroupBy() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT INST FROM PTSDB GROUP BY INST";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ String query = "SELECT INST FROM "+pTSDBTableName+" GROUP BY INST";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
+
try {
- initTableValues(null, ts);
+ initPTSDBTableValues(null, pTSDBTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -217,13 +227,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testNonfirstColumnGroupBy() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT HOST FROM PTSDB WHERE INST='abc' GROUP BY HOST";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ String query = "SELECT HOST FROM "+pTSDBTableName+" WHERE INST='abc' GROUP BY HOST";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initPTSDBTableValues(null, pTSDBTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -236,13 +246,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testGroupByRowKeyColumns() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT SUBSTR(INST,1,1),HOST FROM PTSDB GROUP BY SUBSTR(INST,1,1),HOST";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ String query = "SELECT SUBSTR(INST,1,1),HOST FROM "+pTSDBTableName+" GROUP BY SUBSTR(INST,1,1),HOST";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initGroupByRowKeyColumns(ts);
+ initGroupByRowKeyColumns(pTSDBTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -259,13 +269,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSkipScan() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT HOST FROM PTSDB WHERE INST='abc' AND \"DATE\">=TO_DATE('1970-01-01 00:00:00') AND \"DATE\" <TO_DATE('2171-01-01 00:00:00')";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ String query = "SELECT HOST FROM "+pTSDBTableName+" WHERE INST='abc' AND \"DATE\">=TO_DATE('1970-01-01 00:00:00') AND \"DATE\" <TO_DATE('2171-01-01 00:00:00')";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initPTSDBTableValues(null, pTSDBTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -278,13 +288,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSkipMax() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT MAX(INST),MAX(\"DATE\") FROM PTSDB WHERE INST='abc' AND \"DATE\">=TO_DATE('1970-01-01 00:00:00') AND \"DATE\" <TO_DATE('2171-01-01 00:00:00')";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ String query = "SELECT MAX(INST),MAX(\"DATE\") FROM "+pTSDBTableName+" WHERE INST='abc' AND \"DATE\">=TO_DATE('1970-01-01 00:00:00') AND \"DATE\" <TO_DATE('2171-01-01 00:00:00')";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initPTSDBTableValues(null, pTSDBTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -297,13 +307,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSkipMaxWithLimit() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT MAX(INST),MAX(\"DATE\") FROM PTSDB WHERE INST='abc' AND \"DATE\">=TO_DATE('1970-01-01 00:00:00') AND \"DATE\" <TO_DATE('2171-01-01 00:00:00') LIMIT 2";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ String query = "SELECT MAX(INST),MAX(\"DATE\") FROM "+pTSDBTableName+" WHERE INST='abc' AND \"DATE\">=TO_DATE('1970-01-01 00:00:00') AND \"DATE\" <TO_DATE('2171-01-01 00:00:00') LIMIT 2";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initPTSDBTableValues(null, pTSDBTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -316,15 +326,15 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSingleColumnKeyFilter() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
// Requires not null column to be projected, since the only one projected in the query is
// nullable and will cause the no key value to be returned if it is the only one projected.
- String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM BTABLE WHERE B_STRING=?";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM "+bTableName+" WHERE B_STRING=?";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null, bTableName);
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, "xy");
ResultSet rs = statement.executeQuery();
@@ -343,14 +353,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testMultiColumnEqScanKey() throws Exception {
- long ts = nextTimestamp();
- // TODO: add compile test to confirm start/stop scan key
- String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM BTABLE WHERE A_STRING=? AND A_ID=? AND B_STRING=?";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String bTableName = generateUniqueName();
+ String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM "+bTableName+" WHERE A_STRING=? AND A_ID=? AND B_STRING=?";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null, bTableName);
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, "abcd");
statement.setString(2, "222");
@@ -371,14 +380,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testMultiColumnGTScanKey() throws Exception {
- long ts = nextTimestamp();
- // TODO: add compile test to confirm start/stop scan key
- String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM BTABLE WHERE A_STRING=? AND A_ID=? AND B_STRING>?";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String bTableName = generateUniqueName();
+ String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM "+bTableName+" WHERE A_STRING=? AND A_ID=? AND B_STRING>?";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null, bTableName);
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, "abcd");
statement.setString(2, "222");
@@ -404,14 +412,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testMultiColumnGTKeyFilter() throws Exception {
- long ts = nextTimestamp();
- // TODO: add compile test to confirm start/stop scan key
- String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM BTABLE WHERE A_STRING>? AND A_INTEGER>=?";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String bTableName = generateUniqueName();
+ String query = "SELECT A_STRING,substr(a_id,1,1),B_STRING,A_INTEGER,B_INTEGER FROM "+bTableName+" WHERE A_STRING>? AND A_INTEGER>=?";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null, bTableName);
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, "abc");
statement.setInt(2, 4);
@@ -430,22 +437,21 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testNullValueEqualityScan() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, PTSDB_NAME, null, null, null);
// Insert all rows at ts
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement("upsert into PTSDB VALUES ('', '', ?, 0.5)");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDBTableName+" VALUES ('', '', ?, 0.5)");
stmt.setDate(1, D1);
stmt.execute();
conn.close();
// Comparisons against null are always false.
- String query = "SELECT HOST,\"DATE\" FROM PTSDB WHERE HOST='' AND INST=''";
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT HOST,\"DATE\" FROM "+pTSDBTableName+" WHERE HOST='' AND INST=''";
+ url = getUrl();
conn = DriverManager.getConnection(url, props);
try {
PreparedStatement statement = conn.prepareStatement(query);
@@ -458,14 +464,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testVarLengthPKColScan() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, PTSDB_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement("upsert into PTSDB VALUES (?, 'y', ?, 0.5)");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDBTableName+" VALUES (?, 'y', ?, 0.5)");
stmt.setString(1, "x");
stmt.setDate(2, D1);
stmt.execute();
@@ -473,8 +478,8 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
stmt.execute();
conn.close();
- String query = "SELECT HOST,\"DATE\" FROM PTSDB WHERE INST='x' AND HOST='y'";
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT HOST,\"DATE\" FROM "+pTSDBTableName+" WHERE INST='x' AND HOST='y'";
+ url = getUrl();
conn = DriverManager.getConnection(url, props);
try {
PreparedStatement statement = conn.prepareStatement(query);
@@ -488,14 +493,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testEscapedQuoteScan() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(), PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(), pTSDBTableName, PTSDB_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement("upsert into PTSDB VALUES (?, 'y', ?, 0.5)");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDBTableName+" VALUES (?, 'y', ?, 0.5)");
stmt.setString(1, "x'y");
stmt.setDate(2, D1);
stmt.execute();
@@ -503,9 +507,9 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
stmt.execute();
conn.close();
- String query1 = "SELECT INST,\"DATE\" FROM PTSDB WHERE INST='x''y'";
- String query2 = "SELECT INST,\"DATE\" FROM PTSDB WHERE INST='x\\\'y'";
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query1 = "SELECT INST,\"DATE\" FROM "+pTSDBTableName+" WHERE INST='x''y'";
+ String query2 = "SELECT INST,\"DATE\" FROM "+pTSDBTableName+" WHERE INST='x\\\'y'";
+ url = getUrl();
conn = DriverManager.getConnection(url, props);
try {
PreparedStatement statement = conn.prepareStatement(query1);
@@ -526,14 +530,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
}
}
- private static void initPtsdbTableValues(long ts) throws Exception {
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ private static void initPTSDBTableValues1(String pTSDBTableName) throws Exception {
+ ensureTableCreated(getUrl(),pTSDBTableName, PTSDB_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement("upsert into PTSDB VALUES ('x', 'y', ?, 0.5)");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDBTableName+" VALUES ('x', 'y', ?, 0.5)");
stmt.setDate(1, D1);
stmt.execute();
conn.close();
@@ -541,11 +544,10 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testToStringOnDate() throws Exception {
- long ts = nextTimestamp();
- initPtsdbTableValues(ts);
-
- String query = "SELECT HOST,\"DATE\" FROM PTSDB WHERE INST='x' AND HOST='y'";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ initPTSDBTableValues1(pTSDBTableName);
+ String query = "SELECT HOST,\"DATE\" FROM "+pTSDBTableName+" WHERE INST='x' AND HOST='y'";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -559,14 +561,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
}
}
- private static void initPtsdbTableValues2(long ts, Date d) throws Exception {
- ensureTableCreated(getUrl(),PTSDB2_NAME, PTSDB2_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ private static void initPTSDBTableValues2(String pTSDB2TableName, Date d) throws Exception {
+ ensureTableCreated(getUrl(),pTSDB2TableName, PTSDB2_NAME, null, null, null);
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement("upsert into "+PTSDB2_NAME+"(inst,\"DATE\",val2) VALUES (?, ?, ?)");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDB2TableName+"(inst,\"DATE\",val2) VALUES (?, ?, ?)");
stmt.setString(1, "a");
stmt.setDate(2, d);
stmt.setDouble(3, 101.3);
@@ -596,16 +597,17 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testRoundOnDate() throws Exception {
- long ts = nextTimestamp();
+ String pTSDB2TableName = generateUniqueName();
+
Date date = new Date(System.currentTimeMillis());
- initPtsdbTableValues2(ts, date);
+ initPTSDBTableValues2(pTSDB2TableName, date);
String query = "SELECT MAX(val2)"
- + " FROM "+PTSDB2_NAME
- + " WHERE inst='a'"
- + " GROUP BY ROUND(\"DATE\",'day',1)"
- + " ORDER BY MAX(val2)"; // disambiguate row order
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ + " FROM "+pTSDB2TableName
+ + " WHERE inst='a'"
+ + " GROUP BY ROUND(\"DATE\",'day',1)"
+ + " ORDER BY MAX(val2)"; // disambiguate row order
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -625,16 +627,16 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testOrderBy() throws Exception {
- long ts = nextTimestamp();
+ String pTSDB2TableName = generateUniqueName();
Date date = new Date(System.currentTimeMillis());
- initPtsdbTableValues2(ts, date);
+ initPTSDBTableValues2(pTSDB2TableName, date);
String query = "SELECT inst,MAX(val2),MIN(val2)"
- + " FROM "+PTSDB2_NAME
- + " GROUP BY inst,ROUND(\"DATE\",'day',1)"
- + " ORDER BY inst,ROUND(\"DATE\",'day',1)"
- ;
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ + " FROM "+pTSDB2TableName
+ + " GROUP BY inst,ROUND(\"DATE\",'day',1)"
+ + " ORDER BY inst,ROUND(\"DATE\",'day',1)"
+ ;
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -672,14 +674,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSelectCount() throws Exception {
- long ts = nextTimestamp();
+ String pTSDB2TableName = generateUniqueName();
Date date = new Date(System.currentTimeMillis());
- initPtsdbTableValues2(ts, date);
-
+ initPTSDBTableValues2(pTSDB2TableName, date);
String query = "SELECT COUNT(*)"
- + " FROM "+PTSDB2_NAME
- + " WHERE inst='a'";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ + " FROM "+pTSDB2TableName
+ + " WHERE inst='a'";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -695,15 +696,14 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testBatchUpsert() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),PTSDB2_NAME, PTSDB2_NAME, null, ts-2, null);
- Date d = new Date(ts);
+ String pTSDB2TableName = generateUniqueName();
+ Date d = new Date(System.currentTimeMillis());
+ ensureTableCreated(getUrl(),pTSDB2TableName, PTSDB2_NAME, null, null, null);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
- String query = "SELECT SUM(val1),SUM(val2),SUM(val3) FROM "+PTSDB2_NAME;
- String sql1 = "UPSERT INTO "+PTSDB2_NAME+"(inst,\"DATE\",val1) VALUES (?, ?, ?)";
- String sql2 = "UPSERT INTO "+PTSDB2_NAME+"(inst,\"DATE\",val2) VALUES (?, ?, ?)";
- String sql3 = "UPSERT INTO "+PTSDB2_NAME+"(inst,\"DATE\",val3) VALUES (?, ?, ?)";
+ String query = "SELECT SUM(val1),SUM(val2),SUM(val3) FROM "+pTSDB2TableName;
+ String sql1 = "UPSERT INTO "+pTSDB2TableName+"(inst,\"DATE\",val1) VALUES (?, ?, ?)";
+ String sql2 = "UPSERT INTO "+pTSDB2TableName+"(inst,\"DATE\",val2) VALUES (?, ?, ?)";
+ String sql3 = "UPSERT INTO "+pTSDB2TableName+"(inst,\"DATE\",val3) VALUES (?, ?, ?)";
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
// conn.setAutoCommit(true);
@@ -772,7 +772,6 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
conn.close();
// Query at a time after the upsert to confirm they took place
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+1));
conn = DriverManager.getConnection(getUrl(), props);
{
PreparedStatement statement = conn.prepareStatement(query);
@@ -788,11 +787,10 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSelectStar() throws Exception {
- long ts = nextTimestamp();
- initPtsdbTableValues(ts);
-
- String query = "SELECT * FROM PTSDB WHERE INST='x' AND HOST='y'";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String pTSDBTableName = generateUniqueName();
+ initPTSDBTableValues1(pTSDBTableName);
+ String query = "SELECT * FROM "+pTSDBTableName+" WHERE INST='x' AND HOST='y'";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -811,11 +809,12 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testToCharOnDate() throws Exception {
- long ts = nextTimestamp();
- initPtsdbTableValues(ts);
+ String pTSDBTableName = generateUniqueName();
- String query = "SELECT HOST,TO_CHAR(\"DATE\") FROM PTSDB WHERE INST='x' AND HOST='y'";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ initPTSDBTableValues1(pTSDBTableName);
+
+ String query = "SELECT HOST,TO_CHAR(\"DATE\") FROM "+pTSDBTableName+" WHERE INST='x' AND HOST='y'";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -830,13 +829,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testToCharWithFormatOnDate() throws Exception {
- long ts = nextTimestamp();
- initPtsdbTableValues(ts);
+ String pTSDBTableName = generateUniqueName();
+ initPTSDBTableValues1(pTSDBTableName);
String format = "HH:mm:ss";
Format dateFormatter = DateUtil.getDateFormatter(format);
- String query = "SELECT HOST,TO_CHAR(\"DATE\",'" + format + "') FROM PTSDB WHERE INST='x' AND HOST='y'";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT HOST,TO_CHAR(\"DATE\",'" + format + "') FROM "+pTSDBTableName+" WHERE INST='x' AND HOST='y'";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -851,13 +850,14 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testToDateWithFormatOnDate() throws Exception {
- long ts = nextTimestamp();
- initPtsdbTableValues(ts);
+ String pTSDBTableName = generateUniqueName();
+
+ initPTSDBTableValues1(pTSDBTableName);
String format = "yyyy-MM-dd HH:mm:ss.S";
Format dateFormatter = DateUtil.getDateFormatter(format);
- String query = "SELECT HOST,TO_CHAR(\"DATE\",'" + format + "') FROM PTSDB WHERE INST='x' AND HOST='y' and \"DATE\"=TO_DATE(?,'" + format + "')";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT HOST,TO_CHAR(\"DATE\",'" + format + "') FROM "+pTSDBTableName+" WHERE INST='x' AND HOST='y' and \"DATE\"=TO_DATE(?,'" + format + "')";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
@@ -873,16 +873,15 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testMissingPKColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, PTSDB_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
Statement stmt = conn.createStatement();
try {
- stmt.execute("upsert into PTSDB(INST,HOST,VAL) VALUES ('abc', 'abc-def-ghi', 0.5)");
+ stmt.execute("upsert into "+pTSDBTableName+"(INST,HOST,VAL) VALUES ('abc', 'abc-def-ghi', 0.5)");
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.CONSTRAINT_VIOLATION.getErrorCode(), e.getErrorCode());
@@ -893,15 +892,15 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testNoKVColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),BTABLE_NAME, BTABLE_NAME, null, ts-2, null);
+ String pTSDBTableName = generateUniqueName();
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ ensureTableCreated(getUrl(),pTSDBTableName, BTABLE_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
PreparedStatement stmt = conn.prepareStatement(
- "upsert into BTABLE VALUES (?, ?, ?, ?, ?)");
+ "upsert into "+pTSDBTableName+" VALUES (?, ?, ?, ?, ?)");
stmt.setString(1, "abc");
stmt.setString(2, "123");
stmt.setString(3, "x");
@@ -911,54 +910,25 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
stmt.execute();
}
- // Broken, since we don't know if insert vs update. @Test
- public void testMissingKVColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),BTABLE_NAME, BTABLE_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- Connection conn = DriverManager.getConnection(url, props);
- conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement(
- "upsert into BTABLE VALUES (?, ?, ?, ?, ?, ?)");
- stmt.setString(1, "abc");
- stmt.setString(2, "123");
- stmt.setString(3, "x");
- stmt.setInt(4, 1);
- stmt.setString(5, "ab");
- stmt.setInt(6, 1);
- try {
- stmt.execute();
- fail();
- } catch (ConstraintViolationException e) {
- // Non nullable key value E_STRING has no value
- assertTrue(e.getMessage().contains("may not be null"));
- } finally {
- conn.close();
- }
- }
-
@Test
public void testTooShortKVColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),BTABLE_NAME, BTABLE_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, BTABLE_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
// Insert all rows at ts
PreparedStatement stmt = conn.prepareStatement(
- "upsert into " +
- "BTABLE(" +
- " A_STRING, " +
- " A_ID," +
- " B_STRING," +
- " A_INTEGER," +
- " C_STRING," +
- " E_STRING)" +
- "VALUES (?, ?, ?, ?, ?, ?)");
+ "upsert into " + pTSDBTableName +
+ " (" +
+ " A_STRING, " +
+ " A_ID," +
+ " B_STRING," +
+ " A_INTEGER," +
+ " C_STRING," +
+ " E_STRING)" +
+ "VALUES (?, ?, ?, ?, ?, ?)");
stmt.setString(1, "abc");
stmt.setString(2, "123");
stmt.setString(3, "x");
@@ -977,24 +947,23 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testTooShortPKColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),BTABLE_NAME, BTABLE_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, BTABLE_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
// Insert all rows at ts
PreparedStatement stmt = conn.prepareStatement(
- "upsert into " +
- "BTABLE(" +
- " A_STRING, " +
- " A_ID," +
- " B_STRING," +
- " A_INTEGER," +
- " C_STRING," +
- " E_STRING)" +
- "VALUES (?, ?, ?, ?, ?, ?)");
+ "upsert into " + pTSDBTableName+
+ " (" +
+ " A_STRING, " +
+ " A_ID," +
+ " B_STRING," +
+ " A_INTEGER," +
+ " C_STRING," +
+ " E_STRING)" +
+ "VALUES (?, ?, ?, ?, ?, ?)");
stmt.setString(1, "abc");
stmt.setString(2, "12");
stmt.setString(3, "x");
@@ -1013,24 +982,23 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testTooLongPKColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),BTABLE_NAME, BTABLE_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ String bTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),bTableName, BTABLE_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
// Insert all rows at ts
PreparedStatement stmt = conn.prepareStatement(
- "upsert into " +
- "BTABLE(" +
- " A_STRING, " +
- " A_ID," +
- " B_STRING," +
- " A_INTEGER," +
- " C_STRING," +
- " E_STRING)" +
- "VALUES (?, ?, ?, ?, ?, ?)");
+ "upsert into " + bTableName+
+ "(" +
+ " A_STRING, " +
+ " A_ID," +
+ " B_STRING," +
+ " A_INTEGER," +
+ " C_STRING," +
+ " E_STRING)" +
+ "VALUES (?, ?, ?, ?, ?, ?)");
stmt.setString(1, "abc");
stmt.setString(2, "123");
stmt.setString(3, "x");
@@ -1050,25 +1018,24 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testTooLongKVColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),BTABLE_NAME, BTABLE_NAME, null, ts-2, null);
-
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts; // Insert at timestamp 0
+ String bTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),bTableName, BTABLE_NAME, null, null, null);
+ String url = getUrl(); // Insert at timestamp 0
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
// Insert all rows at ts
PreparedStatement stmt = conn.prepareStatement(
- "upsert into " +
- "BTABLE(" +
- " A_STRING, " +
- " A_ID," +
- " B_STRING," +
- " A_INTEGER," +
- " C_STRING," +
- " D_STRING," +
- " E_STRING)" +
- "VALUES (?, ?, ?, ?, ?, ?, ?)");
+ "upsert into " + bTableName+
+ "(" +
+ " A_STRING, " +
+ " A_ID," +
+ " B_STRING," +
+ " A_INTEGER," +
+ " C_STRING," +
+ " D_STRING," +
+ " E_STRING)" +
+ "VALUES (?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, "abc");
stmt.setString(2, "123");
stmt.setString(3, "x");
@@ -1089,13 +1056,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testMultiFixedLengthNull() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT B_INTEGER,C_INTEGER,COUNT(1) FROM BTABLE GROUP BY B_INTEGER,C_INTEGER";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String bTableName = generateUniqueName();
+ String query = "SELECT B_INTEGER,C_INTEGER,COUNT(1) FROM "+bTableName+" GROUP BY B_INTEGER,C_INTEGER";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null, bTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1124,13 +1091,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSingleFixedLengthNull() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT C_INTEGER,COUNT(1) FROM BTABLE GROUP BY C_INTEGER";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String bTableName = generateUniqueName();
+ String query = "SELECT C_INTEGER,COUNT(1) FROM "+bTableName+" GROUP BY C_INTEGER";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1150,13 +1117,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testMultiMixedTypeGroupBy() throws Exception {
- long ts = nextTimestamp();
- String query = "SELECT A_ID, E_STRING, D_STRING, C_INTEGER, COUNT(1) FROM BTABLE GROUP BY A_ID, E_STRING, D_STRING, C_INTEGER";
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String bTableName = generateUniqueName();
+ String query = "SELECT A_ID, E_STRING, D_STRING, C_INTEGER, COUNT(1) FROM "+bTableName+" GROUP BY A_ID, E_STRING, D_STRING, C_INTEGER";
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
PreparedStatement statement = conn.prepareStatement(query);
ResultSet rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1189,46 +1156,48 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testSubstrFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
+ String varcharKeyTestTable = generateUniqueName();
String query[] = {
- "SELECT substr('ABC',-1,1) FROM BTABLE LIMIT 1",
- "SELECT substr('ABC',-4,1) FROM BTABLE LIMIT 1",
- "SELECT substr('ABC',2,4) FROM BTABLE LIMIT 1",
- "SELECT substr('ABC',1,1) FROM BTABLE LIMIT 1",
- "SELECT substr('ABC',0,1) FROM BTABLE LIMIT 1",
- // Test for multibyte characters support.
- "SELECT substr('ĎďĒ',0,1) FROM BTABLE LIMIT 1",
- "SELECT substr('ĎďĒ',0,2) FROM BTABLE LIMIT 1",
- "SELECT substr('ĎďĒ',1,1) FROM BTABLE LIMIT 1",
- "SELECT substr('ĎďĒ',1,2) FROM BTABLE LIMIT 1",
- "SELECT substr('ĎďĒ',2,1) FROM BTABLE LIMIT 1",
- "SELECT substr('ĎďĒ',2,2) FROM BTABLE LIMIT 1",
- "SELECT substr('ĎďĒ',-1,1) FROM BTABLE LIMIT 1",
- "SELECT substr('Ďďɚʍ',2,4) FROM BTABLE LIMIT 1",
- "SELECT pk FROM VarcharKeyTest WHERE substr(pk, 0, 3)='jkl'",
+ "SELECT substr('ABC',-1,1) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ABC',-4,1) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ABC',2,4) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ABC',1,1) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ABC',0,1) FROM "+bTableName+" LIMIT 1",
+ // Test for multibyte characters support.
+ "SELECT substr('ĎďĒ',0,1) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ĎďĒ',0,2) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ĎďĒ',1,1) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ĎďĒ',1,2) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ĎďĒ',2,1) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ĎďĒ',2,2) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('ĎďĒ',-1,1) FROM "+bTableName+" LIMIT 1",
+ "SELECT substr('Ďďɚʍ',2,4) FROM "+bTableName+" LIMIT 1",
+ "SELECT pk FROM "+varcharKeyTestTable+" WHERE substr(pk, 0, 3)='jkl'",
};
String result[] = {
- "C",
- null,
- "BC",
- "A",
- "A",
- "Ď",
- "Ďď",
- "Ď",
- "Ďď",
- "ď",
- "ďĒ",
- "Ē",
- "ďɚʍ",
- "jkl ",
+ "C",
+ null,
+ "BC",
+ "A",
+ "A",
+ "Ď",
+ "Ďď",
+ "Ď",
+ "Ďď",
+ "ď",
+ "ďĒ",
+ "Ē",
+ "ďɚʍ",
+ "jkl ",
};
assertEquals(query.length,result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
+ initVarcharKeyTableValues(null,varcharKeyTestTable);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1243,51 +1212,51 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testRegexReplaceFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
// NOTE: we need to double escape the "\\" here because conn.prepareStatement would
// also try to evaluate the escaping. As a result, to represent what normally would be
// a "\d" in this test, it would become "\\\\d".
String query[] = {
- "SELECT regexp_replace('', '') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('', 'abc', 'def') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('123abcABC', '[a-z]+') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('123-abc-ABC', '-[a-zA-Z-]+') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('abcABC123', '\\\\d+', '') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('abcABC123', '\\\\D+', '') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('abc', 'abc', 'def') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('abc123ABC', '\\\\d+', 'def') FROM BTABLE LIMIT 1",
- "SELECT regexp_replace('abc123ABC', '[0-9]+', '#') FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN regexp_replace('abcABC123', '[a-zA-Z]+') = '123' THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT A_STRING FROM BTABLE WHERE A_ID = regexp_replace('abcABC111', '[a-zA-Z]+') LIMIT 1", // 111
- // Test for multibyte characters support.
- "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', '[a-zA-Z]+') from BTABLE LIMIT 1",
- "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', '[Ď-ě]+', '#') from BTABLE LIMIT 1",
- "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', '.+', 'replacement') from BTABLE LIMIT 1",
- "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', 'Ďď', 'DD') from BTABLE LIMIT 1",
+ "SELECT regexp_replace('', '') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('', 'abc', 'def') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('123abcABC', '[a-z]+') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('123-abc-ABC', '-[a-zA-Z-]+') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('abcABC123', '\\\\d+', '') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('abcABC123', '\\\\D+', '') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('abc', 'abc', 'def') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('abc123ABC', '\\\\d+', 'def') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('abc123ABC', '[0-9]+', '#') FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN regexp_replace('abcABC123', '[a-zA-Z]+') = '123' THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT A_STRING FROM "+bTableName+" WHERE A_ID = regexp_replace('abcABC111', '[a-zA-Z]+') LIMIT 1", // 111
+ // Test for multibyte characters support.
+ "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', '[a-zA-Z]+') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', '[Ď-ě]+', '#') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', '.+', 'replacement') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_replace('Ďď Ēĕ ĜĞ ϗϘϛϢ', 'Ďď', 'DD') FROM "+bTableName+" LIMIT 1",
};
String result[] = {
- null,
- null,
- "123ABC",
- "123",
- "abcABC",
- "123",
- "def",
- "abcdefABC",
- "abc#ABC",
- "1",
- "abc", // the first column
- "Ďď Ēĕ ĜĞ ϗϘϛϢ",
- "# # ĜĞ ϗϘϛϢ",
- "replacement",
- "DD Ēĕ ĜĞ ϗϘϛϢ",
+ null,
+ null,
+ "123ABC",
+ "123",
+ "abcABC",
+ "123",
+ "def",
+ "abcdefABC",
+ "abc#ABC",
+ "1",
+ "abc", // the first column
+ "Ďď Ēĕ ĜĞ ϗϘϛϢ",
+ "# # ĜĞ ϗϘϛϢ",
+ "replacement",
+ "DD Ēĕ ĜĞ ϗϘϛϢ",
};
assertEquals(query.length,result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1302,54 +1271,54 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testRegexpSubstrFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
String query[] = {
- "SELECT regexp_substr('', '', 0) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('', '', 1) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('', 'abc', 0) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('abc', '', 0) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123', '123', 3) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123', '123', -4) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123ABC', '[a-z]+', 0) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123ABC', '[0-9]+', 4) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123ABCabc', '\\\\d+', 0) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123ABCabc', '\\\\D+', 0) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123ABCabc', '\\\\D+', 4) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('123ABCabc', '\\\\D+', 7) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('na11-app5-26-sjl', '[^-]+', 0) FROM BTABLE LIMIT 1",
- "SELECT regexp_substr('na11-app5-26-sjl', '[^-]+') FROM BTABLE LIMIT 1",
- // Test for multibyte characters support.
- "SELECT regexp_substr('ĎďĒĕĜĞ', '.+') from BTABLE LIMIT 1",
- "SELECT regexp_substr('ĎďĒĕĜĞ', '.+', 3) from BTABLE LIMIT 1",
- "SELECT regexp_substr('ĎďĒĕĜĞ', '[a-zA-Z]+', 0) from BTABLE LIMIT 1",
- "SELECT regexp_substr('ĎďĒĕĜĞ', '[Ď-ě]+', 3) from BTABLE LIMIT 1",
+ "SELECT regexp_substr('', '', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('', '', 1) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('', 'abc', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('abc', '', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123', '123', 3) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123', '123', -4) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123ABC', '[a-z]+', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123ABC', '[0-9]+', 4) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123ABCabc', '\\\\d+', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123ABCabc', '\\\\D+', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123ABCabc', '\\\\D+', 4) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('123ABCabc', '\\\\D+', 7) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('na11-app5-26-sjl', '[^-]+', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('na11-app5-26-sjl', '[^-]+') FROM "+bTableName+" LIMIT 1",
+ // Test for multibyte characters support.
+ "SELECT regexp_substr('ĎďĒĕĜĞ', '.+') FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('ĎďĒĕĜĞ', '.+', 3) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('ĎďĒĕĜĞ', '[a-zA-Z]+', 0) FROM "+bTableName+" LIMIT 1",
+ "SELECT regexp_substr('ĎďĒĕĜĞ', '[Ď-ě]+', 3) FROM "+bTableName+" LIMIT 1",
};
String result[] = {
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- "123",
- "ABCabc",
- "ABCabc",
- "abc",
- "na11",
- "na11",
- "ĎďĒĕĜĞ",
- "ĒĕĜĞ",
- null,
- "Ēĕ",
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ "123",
+ "ABCabc",
+ "ABCabc",
+ "abc",
+ "na11",
+ "na11",
+ "ĎďĒĕĜĞ",
+ "ĒĕĜĞ",
+ null,
+ "Ēĕ",
};
assertEquals(query.length,result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1364,17 +1333,15 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testRegexpSubstrFunction2() throws Exception {
- long ts = nextTimestamp();
+ String tTableName = generateUniqueName();
String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
Connection conn = DriverManager.getConnection(url, props);
- String ddl = "create table t (k INTEGER NOT NULL PRIMARY KEY, name VARCHAR)";
+ String ddl = "create table " + tTableName + " (k INTEGER NOT NULL PRIMARY KEY, name VARCHAR)";
conn.createStatement().execute(ddl);
conn.close();
- String dml = "upsert into t values(?,?)";
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+2));
+ String dml = "upsert into " + tTableName + " values(?,?)";
conn = DriverManager.getConnection(url, props);
PreparedStatement stmt = conn.prepareStatement(dml);
String[] values = new String[] {"satax","jruls","hrjcu","yqtrv","jjcvw"};
@@ -1388,8 +1355,7 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
// This matches what Oracle returns for regexp_substr, even through
// it seems oke for "satax", it should return null.
- String query = "select regexp_substr(name,'[^s]+',1) from t limit 5";
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts+5));
+ String query = "select regexp_substr(name,'[^s]+',1) from " + tTableName + " limit 5";
conn = DriverManager.getConnection(url, props);
ResultSet rs = conn.createStatement().executeQuery(query);
int count = 0;
@@ -1402,27 +1368,27 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testLikeConstant() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
String query[] = {
- "SELECT CASE WHEN 'ABC' LIKE '' THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN 'ABC' LIKE 'A_' THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN 'ABC' LIKE 'A__' THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN 'AB_C' LIKE 'AB\\_C' THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN 'ABC%DE' LIKE 'ABC\\%D%' THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
+ "SELECT CASE WHEN 'ABC' LIKE '' THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN 'ABC' LIKE 'A_' THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN 'ABC' LIKE 'A__' THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN 'AB_C' LIKE 'AB\\_C' THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN 'ABC%DE' LIKE 'ABC\\%D%' THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
};
String result[] = {
- "2",
- "2",
- "1",
- "1",
- "1",
+ "2",
+ "2",
+ "1",
+ "1",
+ "1",
};
assertEquals(query.length,result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1437,35 +1403,36 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testInListConstant() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
+
String query[] = {
- "SELECT CASE WHEN 'a' IN (null,'a') THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN NOT 'a' IN (null,'b') THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN 'a' IN (null,'b') THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN NOT 'a' IN ('c','b') THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN 1 IN ('foo',2,1) THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN NOT null IN ('c','b') THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN NOT null IN (null,'c','b') THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN null IN (null,'c','b') THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
- "SELECT CASE WHEN 'a' IN (null,1) THEN '1' ELSE '2' END FROM BTABLE LIMIT 1",
+ "SELECT CASE WHEN 'a' IN (null,'a') THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN NOT 'a' IN (null,'b') THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN 'a' IN (null,'b') THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN NOT 'a' IN ('c','b') THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN 1 IN ('foo',2,1) THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN NOT null IN ('c','b') THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN NOT null IN (null,'c','b') THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN null IN (null,'c','b') THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
+ "SELECT CASE WHEN 'a' IN (null,1) THEN '1' ELSE '2' END FROM "+bTableName+" LIMIT 1",
};
String result[] = {
- "1",
- "1",
- "2",
- "1",
- "1",
- "2",
- "2",
- "2",
- "2"
+ "1",
+ "1",
+ "2",
+ "1",
+ "1",
+ "2",
+ "2",
+ "2",
+ "2"
};
assertEquals(query.length,result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1480,14 +1447,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testLikeOnColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, PTSDB_NAME, null, null, null);
// Insert all rows at ts
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
- PreparedStatement stmt = conn.prepareStatement("upsert into PTSDB VALUES (?, ?, ?, 0.5)");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDBTableName+" VALUES (?, ?, ?, 0.5)");
stmt.setDate(3, D1);
stmt.setString(1, "a");
@@ -1521,13 +1487,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
conn.commit();
conn.close();
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ url = getUrl();
conn = DriverManager.getConnection(url, props);
PreparedStatement statement;
ResultSet rs;
try {
// Test 1
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE INST LIKE 'x%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE INST LIKE 'x%'");
rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1548,7 +1514,7 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
assertFalse(rs.next());
// Test 2
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE INST LIKE 'xy_a%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE INST LIKE 'xy_a%'");
rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1560,7 +1526,7 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
assertFalse(rs.next());
// Test 3
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE INST NOT LIKE 'xy_a%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE INST NOT LIKE 'xy_a%'");
rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1581,12 +1547,12 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
assertFalse(rs.next());
// Test 4
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE 'xzabc' LIKE 'xy_a%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE 'xzabc' LIKE 'xy_a%'");
rs = statement.executeQuery();
assertFalse(rs.next());
// Test 5
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE 'abcdef' LIKE '%bCd%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE 'abcdef' LIKE '%bCd%'");
rs = statement.executeQuery();
assertFalse(rs.next());
@@ -1597,14 +1563,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testILikeOnColumn() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, PTSDB_NAME, null, null, null);
// Insert all rows at ts
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
- PreparedStatement stmt = conn.prepareStatement("upsert into PTSDB(INST, HOST, \"DATE\", VAL, PATTERN VARCHAR) VALUES (?, ?, ?, 0.5, 'x_Z%')");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDBTableName+"(INST, HOST, \"DATE\", VAL, PATTERN VARCHAR) VALUES (?, ?, ?, 0.5, 'x_Z%')");
stmt.setDate(3, D1);
stmt.setString(1, "a");
@@ -1638,13 +1603,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
conn.commit();
conn.close();
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ url = getUrl();
conn = DriverManager.getConnection(url, props);
PreparedStatement statement;
ResultSet rs;
try {
// Test 1
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE INST ILIKE 'x%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE INST ILIKE 'x%'");
rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1665,7 +1630,7 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
assertFalse(rs.next());
// Test 2
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE INST ILIKE 'xy_a%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE INST ILIKE 'xy_a%'");
rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1677,7 +1642,7 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
assertFalse(rs.next());
// Test 3
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE INST NOT ILIKE 'xy_a%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE INST NOT ILIKE 'xy_a%'");
rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1698,17 +1663,17 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
assertFalse(rs.next());
// Test 4
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE 'xzabc' ILIKE 'xy_a%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE 'xzabc' ILIKE 'xy_a%'");
rs = statement.executeQuery();
assertFalse(rs.next());
// Test 5
- statement = conn.prepareStatement("SELECT INST FROM PTSDB WHERE 'abcdef' ILIKE '%bCd%'");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+" WHERE 'abcdef' ILIKE '%bCd%'");
rs = statement.executeQuery();
assertTrue(rs.next());
// Test 5
- statement = conn.prepareStatement("SELECT INST FROM PTSDB(PATTERN VARCHAR) WHERE INST ILIKE PATTERN");
+ statement = conn.prepareStatement("SELECT INST FROM "+pTSDBTableName+"(PATTERN VARCHAR) WHERE INST ILIKE PATTERN");
rs = statement.executeQuery();
assertTrue(rs.next());
@@ -1729,21 +1694,19 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testIsNullInPK() throws Exception {
- long ts = nextTimestamp();
- ensureTableCreated(getUrl(),PTSDB_NAME, PTSDB_NAME, null, ts-2, null);
-
- // Insert all rows at ts
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + ts;
+ String pTSDBTableName = generateUniqueName();
+ ensureTableCreated(getUrl(),pTSDBTableName, PTSDB_NAME, null, null, null);
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement("upsert into PTSDB VALUES ('', '', ?, 0.5)");
+ PreparedStatement stmt = conn.prepareStatement("upsert into "+pTSDBTableName+" VALUES ('', '', ?, 0.5)");
stmt.setDate(1, D1);
stmt.execute();
conn.close();
- String query = "SELECT HOST,INST,\"DATE\" FROM PTSDB WHERE HOST IS NULL AND INST IS NULL AND \"DATE\"=?";
- url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String query = "SELECT HOST,INST,\"DATE\" FROM "+pTSDBTableName+" WHERE HOST IS NULL AND INST IS NULL AND \"DATE\"=?";
+ url = getUrl();
conn = DriverManager.getConnection(url, props);
try {
PreparedStatement statement = conn.prepareStatement(query);
@@ -1761,33 +1724,33 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testLengthFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
String query[] = {
- "SELECT length('') FROM BTABLE LIMIT 1",
- "SELECT length(' ') FROM BTABLE LIMIT 1",
- "SELECT length('1') FROM BTABLE LIMIT 1",
- "SELECT length('1234') FROM BTABLE LIMIT 1",
- "SELECT length('ɚɦɰɸ') FROM BTABLE LIMIT 1",
- "SELECT length('ǢǛǟƈ') FROM BTABLE LIMIT 1",
- "SELECT length('This is a test!') FROM BTABLE LIMIT 1",
- "SELECT A_STRING FROM BTABLE WHERE length(A_STRING)=3",
+ "SELECT length('') FROM "+bTableName+" LIMIT 1",
+ "SELECT length(' ') FROM "+bTableName+" LIMIT 1",
+ "SELECT length('1') FROM "+bTableName+" LIMIT 1",
+ "SELECT length('1234') FROM "+bTableName+" LIMIT 1",
+ "SELECT length('ɚɦɰɸ') FROM "+bTableName+" LIMIT 1",
+ "SELECT length('ǢǛǟƈ') FROM "+bTableName+" LIMIT 1",
+ "SELECT length('This is a test!') FROM "+bTableName+" LIMIT 1",
+ "SELECT A_STRING FROM "+bTableName+" WHERE length(A_STRING)=3",
};
String result[] = {
- null,
- "1",
- "1",
- "4",
- "4",
- "4",
- "15",
- "abc",
+ null,
+ "1",
+ "1",
+ "4",
+ "4",
+ "4",
+ "15",
+ "abc",
};
assertEquals(query.length,result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1802,13 +1765,13 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testUpperFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
String query[] = {
- "SELECT upper('abc') FROM BTABLE LIMIT 1",
- "SELECT upper('Abc') FROM BTABLE LIMIT 1",
- "SELECT upper('ABC') FROM BTABLE LIMIT 1",
- "SELECT upper('ĎďĒ') FROM BTABLE LIMIT 1",
- "SELECT upper('ß') FROM BTABLE LIMIT 1",
+ "SELECT upper('abc') FROM "+bTableName+" LIMIT 1",
+ "SELECT upper('Abc') FROM "+bTableName+" LIMIT 1",
+ "SELECT upper('ABC') FROM "+bTableName+" LIMIT 1",
+ "SELECT upper('ĎďĒ') FROM "+bTableName+" LIMIT 1",
+ "SELECT upper('ß') FROM "+bTableName+" LIMIT 1",
};
String result[] = {
"ABC",
@@ -1818,11 +1781,11 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
"SS",
};
assertEquals(query.length, result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1837,14 +1800,14 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testLowerFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
String query[] = {
- "SELECT lower('abc') FROM BTABLE LIMIT 1",
- "SELECT lower('Abc') FROM BTABLE LIMIT 1",
- "SELECT lower('ABC') FROM BTABLE LIMIT 1",
- "SELECT lower('ĎďĒ') FROM BTABLE LIMIT 1",
- "SELECT lower('ß') FROM BTABLE LIMIT 1",
- "SELECT lower('SS') FROM BTABLE LIMIT 1",
+ "SELECT lower('abc') FROM "+bTableName+" LIMIT 1",
+ "SELECT lower('Abc') FROM "+bTableName+" LIMIT 1",
+ "SELECT lower('ABC') FROM "+bTableName+" LIMIT 1",
+ "SELECT lower('ĎďĒ') FROM "+bTableName+" LIMIT 1",
+ "SELECT lower('ß') FROM "+bTableName+" LIMIT 1",
+ "SELECT lower('SS') FROM "+bTableName+" LIMIT 1",
};
String result[] = {
"abc",
@@ -1855,11 +1818,11 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
"ss",
};
assertEquals(query.length, result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1874,35 +1837,37 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testRTrimFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
+ String varcharKeyTestTable = generateUniqueName();
String query[] = {
- "SELECT rtrim('') FROM BTABLE LIMIT 1",
- "SELECT rtrim(' ') FROM BTABLE LIMIT 1",
- "SELECT rtrim(' ') FROM BTABLE LIMIT 1",
- "SELECT rtrim('abc') FROM BTABLE LIMIT 1",
- "SELECT rtrim('abc ') FROM BTABLE LIMIT 1",
- "SELECT rtrim('abc def') FROM BTABLE LIMIT 1",
- "SELECT rtrim('abc def ') FROM BTABLE LIMIT 1",
- "SELECT rtrim('ĎďĒ ') FROM BTABLE LIMIT 1",
- "SELECT pk FROM VarcharKeyTest WHERE rtrim(pk)='jkl' LIMIT 1",
+ "SELECT rtrim('') FROM "+bTableName+" LIMIT 1",
+ "SELECT rtrim(' ') FROM "+bTableName+" LIMIT 1",
+ "SELECT rtrim(' ') FROM "+bTableName+" LIMIT 1",
+ "SELECT rtrim('abc') FROM "+bTableName+" LIMIT 1",
+ "SELECT rtrim('abc ') FROM "+bTableName+" LIMIT 1",
+ "SELECT rtrim('abc def') FROM "+bTableName+" LIMIT 1",
+ "SELECT rtrim('abc def ') FROM "+bTableName+" LIMIT 1",
+ "SELECT rtrim('ĎďĒ ') FROM "+bTableName+" LIMIT 1",
+ "SELECT pk FROM "+varcharKeyTestTable+" WHERE rtrim(pk)='jkl' LIMIT 1",
};
String result[] = {
- null,
- null,
- null,
- "abc",
- "abc",
- "abc def",
- "abc def",
- "ĎďĒ",
- "jkl ",
+ null,
+ null,
+ null,
+ "abc",
+ "abc",
+ "abc def",
+ "abc def",
+ "ĎďĒ",
+ "jkl ",
};
assertEquals(query.length, result.length);
- String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
+ String url = getUrl();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
try {
- initTableValues(null, ts);
+ initBTableValues(null,bTableName);
+ initVarcharKeyTableValues(null,varcharKeyTestTable);
for (int i = 0; i < query.length; i++) {
PreparedStatement statement = conn.prepareStatement(query[i]);
ResultSet rs = statement.executeQuery();
@@ -1917,35 +1882,37 @@ public class VariableLengthPKIT extends BaseClientManagedTimeIT {
@Test
public void testLTrimFunction() throws Exception {
- long ts = nextTimestamp();
+ String bTableName = generateUniqueName();
+ String varcharKeyTestTable = generateUniqueName();
String query[] = {
- "SELECT ltrim('') FROM BTABLE LIMIT 1",
- "SELECT ltrim(' ') FROM BTABLE LIMIT 1",
- "SELECT ltrim(' ') FROM BTABLE LIMIT 1",
- "SELECT ltrim('abc') FROM BTABLE LIMIT 1",
- "SELECT ltrim(' abc') FROM BTABLE LIMIT 1",
- "SELECT ltrim('abc def') FROM BTABLE LIMIT 1",
- "SELECT ltrim(' abc def') FROM BTABLE LIMIT 1",
- "SELECT ltrim(' ĎďĒ') FROM BTABLE LIMIT 1",
- "SELECT pk FROM VarcharKeyTest WHERE ltrim(pk)='def' LIMIT 1",
+ "SELECT ltrim('') FROM "+bTableName+" LIMIT 1",
+ "SELECT ltrim(' ') FROM "+bTableName+" LIMIT 1",
+ "SELECT ltrim(' ') FROM "+bTableName+" LIMIT 1",
+ "SELECT ltrim('abc') FROM "+bTableName+" LIMIT 1",
+ "SELECT ltrim(' abc') FROM "+bTableName+" LIMIT 1",
+ "SELECT ltrim('abc def') FROM "+bTableName+" LIMIT 1",
+ "SELECT ltrim(' abc def') FROM "+bTableName+" LIMIT 1",
+ "SELECT ltrim(' ĎďĒ') FROM "+bTableName+" LIMIT 1",
+ "SELECT pk FROM "+varcharKeyTestTable+" WHERE ltrim(pk)='def' LIMIT 1",
};
String result[] = {
- null,
- null,
- null,
- "abc",
- "abc",
- "abc def",
- "abc def",
- "ĎďĒ",
- " def",
+
<TRUNCATED>