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); }