You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2016/06/09 18:21:41 UTC
[4/4] phoenix git commit: PHOENIX-2899 Add test for inflight
transactions over partially evaluating filters
PHOENIX-2899 Add test for inflight transactions over partially evaluating filters
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/dfb67c89
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/dfb67c89
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/dfb67c89
Branch: refs/heads/4.x-HBase-1.1
Commit: dfb67c894579f5d80ea78a84ec0151825a13eae4
Parents: 9c1b85a
Author: James Taylor <ja...@apache.org>
Authored: Sat May 21 10:22:34 2016 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Thu Jun 9 11:22:51 2016 -0700
----------------------------------------------------------------------
.../org/apache/phoenix/tx/TransactionIT.java | 48 +++++++++++++++++++-
1 file changed, 47 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/dfb67c89/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
index 6628d14..d3f54fe 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java
@@ -26,13 +26,13 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.sql.Connection;
+import java.sql.DatabaseMetaData;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.sql.DatabaseMetaData;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -894,4 +894,50 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
"false", rs2.getString(PhoenixDatabaseMetaData.TRANSACTIONAL));
}
}
+
+ @Test
+ public void testInflightPartialEval() throws SQLException {
+
+ try (Connection conn = DriverManager.getConnection(getUrl())) {
+ String transactTableName = "TR";
+ Statement stmt = conn.createStatement();
+ stmt.execute("CREATE TABLE " + transactTableName + " (k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " +
+ "TRANSACTIONAL=true");
+
+ try (Connection conn1 = DriverManager.getConnection(getUrl()); Connection conn2 = DriverManager.getConnection(getUrl())) {
+ conn1.createStatement().execute("UPSERT INTO tr VALUES ('a','b','x')");
+ // Select to force uncommitted data to be written
+ ResultSet rs = conn1.createStatement().executeQuery("SELECT * FROM tr");
+ assertTrue(rs.next());
+ assertEquals("a", rs.getString(1));
+ assertEquals("b", rs.getString(2));
+ assertFalse(rs.next());
+
+ conn2.createStatement().execute("UPSERT INTO tr VALUES ('a','c','x')");
+ // Select to force uncommitted data to be written
+ rs = conn2.createStatement().executeQuery("SELECT * FROM tr");
+ assertTrue(rs.next());
+ assertEquals("a", rs.getString(1));
+ assertEquals("c", rs.getString(2));
+ assertFalse(rs.next());
+
+ // If the AndExpression were to see the uncommitted row from conn2, the filter would
+ // filter the row out early and no longer continue to evaluate other cells due to
+ // the way partial evaluation holds state.
+ rs = conn1.createStatement().executeQuery("SELECT * FROM tr WHERE v1 != 'c' AND v2 = 'x'");
+ assertTrue(rs.next());
+ assertEquals("a", rs.getString(1));
+ assertEquals("b", rs.getString(2));
+ assertFalse(rs.next());
+
+ // Same as above for conn1 data
+ rs = conn2.createStatement().executeQuery("SELECT * FROM tr WHERE v1 != 'b' AND v2 = 'x'");
+ assertTrue(rs.next());
+ assertEquals("a", rs.getString(1));
+ assertEquals("c", rs.getString(2));
+ assertFalse(rs.next());
+ }
+
+ }
+ }
}