Repository: phoenix
Updated Branches:
  refs/heads/txn 0c0dbb56c -> ab6fac2b1


Fix for UPSERT with autocommit


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

Branch: refs/heads/txn
Commit: ab6fac2b1c7458ca03395b2420b0c241c7a36b98
Parents: 0c0dbb5
Author: Thomas D'Silva <twdsi...@gmail.com>
Authored: Thu Apr 2 12:23:47 2015 -0700
Committer: Thomas D'Silva <twdsi...@gmail.com>
Committed: Thu Apr 2 12:23:47 2015 -0700

----------------------------------------------------------------------
 .../phoenix/transactions/TransactionIT.java     | 22 +++++++++++++++++++-
 .../apache/phoenix/jdbc/PhoenixConnection.java  |  5 ++++-
 2 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/ab6fac2b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
index 5ef2016..a4b5bc3 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
@@ -81,9 +81,14 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
                stmt.setInt(1, 1);
                stmt.setInt(2, 1);
                stmt.execute();
+               
+               // verify no rows returned 
+               ResultSet rs = conn.createStatement().executeQuery("SELECT * 
FROM t");
+               assertFalse(rs.next());
+               
                conn.commit();
                // verify row exists
-               ResultSet rs = conn.createStatement().executeQuery("SELECT * 
FROM t");
+               rs = conn.createStatement().executeQuery("SELECT * FROM t");
                assertTrue(rs.next());
                assertEquals(1,rs.getInt(1));
                assertEquals(1,rs.getInt(1));
@@ -95,6 +100,21 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
        }
        
        @Test
+       public void testUpsertWithAutocommit() throws Exception {
+               Connection conn = DriverManager.getConnection(getUrl());
+               String ddl = "CREATE TABLE t (k1 INTEGER PRIMARY KEY, k2 
INTEGER) transactional=true";
+               try {
+                       conn.setAutoCommit(true);
+                       conn.createStatement().execute(ddl);
+                       // verify no rows returned
+                       ResultSet rs = 
conn.createStatement().executeQuery("SELECT * FROM t");
+                       assertFalse(rs.next());
+               } finally {
+                       conn.close();
+               }
+       }
+       
+       @Test
        public void testColConflicts() throws Exception {
                Connection conn1 = DriverManager.getConnection(getUrl());
                Connection conn2 = DriverManager.getConnection(getUrl());

http://git-wip-us.apache.org/repos/asf/phoenix/blob/ab6fac2b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java 
b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
index a646d96..240a599 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
@@ -453,7 +453,10 @@ public class PhoenixConnection implements Connection, 
org.apache.phoenix.jdbc.Jd
         }
     }
     
-    public void addTxParticipant(TransactionAware txnAware) {
+    public void addTxParticipant(TransactionAware txnAware) throws 
SQLException {
+       if (!isTransactionStarted()) {
+               startTransaction();
+       }
         txContext.addTransactionAware(txnAware);
     }
     

Reply via email to