You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by td...@apache.org on 2015/04/02 23:11:22 UTC

phoenix git commit: Fix for UPSERT with autocommit

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 <tw...@gmail.com>
Authored: Thu Apr 2 12:23:47 2015 -0700
Committer: Thomas D'Silva <tw...@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);
     }