Repository: phoenix
Updated Branches:
  refs/heads/txn 3822f8669 -> c89119576


PHOENIX-1657 Encapsulate conn.getMetaDataCache().getTable() calls that look up 
tables without tenant id


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/c8911957
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/c8911957
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/c8911957

Branch: refs/heads/txn
Commit: c8911957613b30f7a65f524da3d8d119556d2121
Parents: 3822f86
Author: Thomas D'Silva <twdsi...@gmail.com>
Authored: Tue Apr 28 18:36:18 2015 -0700
Committer: Thomas D'Silva <twdsi...@gmail.com>
Committed: Tue Apr 28 18:39:06 2015 -0700

----------------------------------------------------------------------
 .../transactions/TxPointInTimeQueryIT.java      | 58 +++++++++++++++-----
 .../phoenix/exception/SQLExceptionCode.java     |  3 +-
 .../apache/phoenix/execute/MutationState.java   |  7 +++
 3 files changed, 52 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/c8911957/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java
index 2a468b3..0f16696 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java
@@ -18,16 +18,16 @@
 package org.apache.phoenix.transactions;
 
 import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
-import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.Properties;
 
 import org.apache.phoenix.end2end.BaseClientManagedTimeIT;
-import org.apache.phoenix.schema.ColumnNotFoundException;
+import org.apache.phoenix.exception.SQLExceptionCode;
 import org.apache.phoenix.util.PhoenixRuntime;
 import org.apache.phoenix.util.PropertiesUtil;
 import org.junit.Before;
@@ -41,9 +41,9 @@ public class TxPointInTimeQueryIT extends 
BaseClientManagedTimeIT {
        public void initTable() throws Exception {
                ts = nextTimestamp();
        }
-
+       
        @Test
-       public void testDropColumn() throws Exception {
+       public void testQueryWithSCN() throws Exception {
                Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
                props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
                Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -54,25 +54,53 @@ public class TxPointInTimeQueryIT extends 
BaseClientManagedTimeIT {
 
                        props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, 
Long.toString(ts + 10));
                        conn = DriverManager.getConnection(getUrl(), props);
-                       // drop a column
-                       conn.createStatement().execute("ALTER TABLE t DROP 
COLUMN v1");
 
-                       props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, 
Long.toString(ts + 11));
-                       conn = DriverManager.getConnection(getUrl(), props);
-                       String selectQuery = "SELECT v1 FROM t";
+                       String selectQuery = "SELECT k FROM t";
                        try {
                                
conn.createStatement().executeQuery(selectQuery);
                                fail();
-                       } catch (ColumnNotFoundException e) {
+                       } catch (SQLException e) {
+                               assertEquals("Unexpected Exception",
+                                               
SQLExceptionCode.CANNOT_START_TRANSACTION_WITH_SCN_SET.getErrorCode(),
+                                               e.getErrorCode());
                        }
 
-                       props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, 
Long.toString(ts + 5));
-                       conn = DriverManager.getConnection(getUrl(), props);
-                       ResultSet rs = 
conn.createStatement().executeQuery(selectQuery);
-                       assertFalse(rs.next());
                } finally {
                        conn.close();
                }
        }
 
+//     @Test
+//     public void testDropColumn() throws Exception {
+//             Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+//             props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts));
+//             Connection conn = DriverManager.getConnection(getUrl(), props);
+//             try {
+//                     conn.createStatement()
+//                                     .execute(
+//                                                     "CREATE TABLE t (k 
VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR) TRANSACTIONAL=true");
+//
+//                     props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, 
Long.toString(ts + 10));
+//                     conn = DriverManager.getConnection(getUrl(), props);
+//                     // drop a column
+//                     conn.createStatement().execute("ALTER TABLE t DROP 
COLUMN v1");
+//
+//                     props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, 
Long.toString(ts + 11));
+//                     conn = DriverManager.getConnection(getUrl(), props);
+//                     String selectQuery = "SELECT v1 FROM t";
+//                     try {
+//                             
conn.createStatement().executeQuery(selectQuery);
+//                             fail();
+//                     } catch (ColumnNotFoundException e) {
+//                     }
+//
+//                     props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, 
Long.toString(ts + 5));
+//                     conn = DriverManager.getConnection(getUrl(), props);
+//                     ResultSet rs = 
conn.createStatement().executeQuery(selectQuery);
+//                     assertFalse(rs.next());
+//             } finally {
+//                     conn.close();
+//             }
+//     }
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/c8911957/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java 
b/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java
index e3fbac8..d89e19a 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java
@@ -250,7 +250,8 @@ public enum SQLExceptionCode {
     DEFAULT_COLUMN_FAMILY_ON_SHARED_TABLE(1056, "43A13", "Default column 
family not allowed on VIEW or shared INDEX"),
     ONLY_TABLE_MAY_BE_DECLARED_TRANSACTIONAL(1070, "44A01", "Only tables may 
be declared as transactional"),
     MAY_NOT_MAP_TO_EXISTING_TABLE_AS_TRANSACTIONAL(1071, "44A02", "An existing 
HBase table may not be mapped to as a transactional table"),
-    STORE_NULLS_MUST_BE_FALSE_FOR_TRANSACTIONAL(1072, "44A03", "Store nulls 
must be false when a table is transactional"),
+       STORE_NULLS_MUST_BE_FALSE_FOR_TRANSACTIONAL(1072, "44A03", "Store nulls 
must be true when a table is transactional"),
+    CANNOT_START_TRANSACTION_WITH_SCN_SET(1073, "44A04", "Cannot start a 
transaction on a connection with SCN set"),
 
     /** Sequence related */
     SEQUENCE_ALREADY_EXIST(1200, "42Z00", "Sequence already exists.", new 
Factory() {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/c8911957/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
index 449e3cd..b7c7850 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
@@ -45,6 +45,7 @@ import org.apache.phoenix.cache.ServerCacheClient.ServerCache;
 import org.apache.phoenix.coprocessor.BaseScannerRegionObserver;
 import org.apache.phoenix.coprocessor.MetaDataProtocol.MetaDataMutationResult;
 import org.apache.phoenix.exception.SQLExceptionCode;
+import org.apache.phoenix.exception.SQLExceptionInfo;
 import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
 import org.apache.phoenix.index.IndexMaintainer;
 import org.apache.phoenix.index.IndexMetaDataCacheClient;
@@ -160,6 +161,12 @@ public class MutationState implements SQLCloseable {
             throw new SQLException("No transaction context"); // TODO: error 
code
         }
         
+               if (connection.getSCN() != null) {
+                       throw new SQLExceptionInfo.Builder(
+                                       
SQLExceptionCode.CANNOT_START_TRANSACTION_WITH_SCN_SET)
+                                       .build().buildException();
+               }
+        
         try {
             if (!txStarted) {
                 txContext.start();

Reply via email to