You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2016/06/01 18:06:52 UTC

phoenix git commit: PHOENIX-2919 PreparedStatement Returns Incorrect Number of Deleted Records

Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-0.98 5cb996511 -> e8c4582fa


PHOENIX-2919 PreparedStatement Returns Incorrect Number of Deleted Records


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

Branch: refs/heads/4.x-HBase-0.98
Commit: e8c4582fa6ecd6d061684fa6b98e4c93672ec7ab
Parents: 5cb9965
Author: Samarth <sa...@salesforce.com>
Authored: Wed Jun 1 11:06:39 2016 -0700
Committer: Samarth <sa...@salesforce.com>
Committed: Wed Jun 1 11:06:39 2016 -0700

----------------------------------------------------------------------
 .../org/apache/phoenix/end2end/DeleteIT.java    | 39 ++++++++++++++++++++
 .../apache/phoenix/compile/DeleteCompiler.java  |  2 +-
 2 files changed, 40 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/e8c4582f/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
index 10152e3..abcbb95 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java
@@ -35,6 +35,7 @@ import java.util.List;
 
 import org.apache.phoenix.util.MetaDataUtil;
 import org.apache.phoenix.util.QueryUtil;
+import org.junit.Assert;
 import org.junit.Test;
 
 
@@ -548,6 +549,44 @@ public class DeleteIT extends BaseHBaseManagedTimeIT {
             assertEquals(0, rs.getLong(1));
         }
     }
+    
+    @Test
+    public void testServerSideDeleteAutoCommitOn() throws Exception {
+        testDeleteCount(true, null);
+    }
+    
+    @Test
+    public void testClientSideDeleteCountAutoCommitOff() throws Exception {
+        testDeleteCount(false, null);
+    }
+    
+    @Test
+    public void testClientSideDeleteAutoCommitOn() throws Exception {
+        testDeleteCount(true, 1000);
+    }
+    
+    private void testDeleteCount(boolean autoCommit, Integer limit) throws Exception {
+        String ddl = "CREATE TABLE IF NOT EXISTS TEST_TABLE (pk1 DECIMAL NOT NULL, v1 VARCHAR CONSTRAINT PK PRIMARY KEY (pk1))";
+        int numRecords = 1010;
+        try (Connection conn = DriverManager.getConnection(getUrl())) {
+            conn.createStatement().execute(ddl);
+            Statement stmt = conn.createStatement();
+            for (int i = 0; i < numRecords ; i++) {
+                stmt.executeUpdate("UPSERT INTO TEST_TABLE (pk1, v1) VALUES (" + i + ",'value')");
+            }
+            conn.commit();
+            conn.setAutoCommit(autoCommit);
+            String delete = "DELETE FROM TEST_TABLE WHERE (pk1) <= (" + numRecords + ")" + (limit == null ? "" : (" limit " + limit));
+            try (PreparedStatement pstmt = conn.prepareStatement(delete)) {
+                int numberOfDeletes = pstmt.executeUpdate();
+                assertEquals(limit == null ? numRecords : limit, numberOfDeletes);
+                if (!autoCommit) {
+                    conn.commit();
+                }
+            }
+        }
+
+    }
 }
 
 

http://git-wip-us.apache.org/repos/asf/phoenix/blob/e8c4582f/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
index fa3dd62..696b74f 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
@@ -182,7 +182,7 @@ public class DeleteCompiler {
             }
 
             // If auto commit is true, this last batch will be committed upon return
-            int nCommittedRows = rowCount / batchSize * batchSize;
+            int nCommittedRows = isAutoCommit ? (rowCount / batchSize * batchSize) : 0;
             MutationState state = new MutationState(targetTableRef, mutations, nCommittedRows, maxSize, connection);
             if (indexTableRef != null) {
                 // To prevent the counting of these index rows, we have a negative for remainingRows.