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/13 08:33:16 UTC

phoenix git commit: Set TxConstants.ALLOW_EMPTY_VALUES_KEY property so that empty values are returned in scans

Repository: phoenix
Updated Branches:
  refs/heads/txn e0494673c -> 20cf437fd


Set TxConstants.ALLOW_EMPTY_VALUES_KEY property so that empty values are returned in scans


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

Branch: refs/heads/txn
Commit: 20cf437fd700f197465f821d4ef027e396259bd6
Parents: e049467
Author: Thomas <td...@salesforce.com>
Authored: Sun Apr 12 23:32:31 2015 -0700
Committer: Thomas <td...@salesforce.com>
Committed: Sun Apr 12 23:32:31 2015 -0700

----------------------------------------------------------------------
 .../phoenix/transactions/TransactionIT.java     | 118 +++++++++----------
 .../java/org/apache/phoenix/query/BaseTest.java |   1 +
 2 files changed, 54 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/20cf437f/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 4f81dae..08f972d 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
@@ -25,10 +25,15 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Map;
 
+import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.client.ResultScanner;
+import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
 import org.apache.phoenix.end2end.Shadower;
-import org.apache.phoenix.end2end.index.BaseMutableIndexIT;
 import org.apache.phoenix.exception.SQLExceptionCode;
+import org.apache.phoenix.jdbc.PhoenixConnection;
 import org.apache.phoenix.query.QueryConstants;
 import org.apache.phoenix.query.QueryServices;
 import org.apache.phoenix.util.DateUtil;
@@ -38,6 +43,8 @@ import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import co.cask.tephra.TxConstants;
+
 import com.google.common.collect.Maps;
 
 public class TransactionIT extends BaseHBaseManagedTimeIT {
@@ -54,6 +61,7 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
     public static void doSetup() throws Exception {
         Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
         props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
+        props.put(TxConstants.ALLOW_EMPTY_VALUES_KEY, Boolean.toString(true));
         setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
     }
 	
@@ -68,78 +76,58 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
         stmt.setDate(6, date);
     }
 	
-//	private void validateRowKeyColumns(ResultSet rs, int i) throws SQLException {
-//		assertTrue(rs.next());
-//		assertEquals(rs.getString(1), "varchar" + String.valueOf(i));
-//		assertEquals(rs.getString(2), "char" + String.valueOf(i));
-//		assertEquals(rs.getInt(3), i);
-//		assertEquals(rs.getInt(4), i);
-//		assertEquals(rs.getBigDecimal(5), new BigDecimal(i*0.5d));
-//		Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i - 1) * TestUtil.NUM_MILLIS_IN_DAY);
-//		assertEquals(rs.getDate(6), date);
-//	}
-//	
-//	@Test
-//	public void testUpsert() throws Exception {
-//		Connection conn = DriverManager.getConnection(getUrl());
-//		String selectSql = "SELECT * FROM "+FULL_TABLE_NAME;
-//		try {
-//			conn.setAutoCommit(false);
-//			ResultSet rs = conn.createStatement().executeQuery(selectSql);
-//	     	assertFalse(rs.next());
-//	     	
-//	        String upsert = "UPSERT INTO " + FULL_TABLE_NAME + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
-//	        PreparedStatement stmt = conn.prepareStatement(upsert);
-//			// upsert two rows
-//			setRowKeyColumns(stmt, 1);
-//			stmt.execute();
-//			setRowKeyColumns(stmt, 2);
-//			stmt.execute();
-//	        
-//	        // verify no rows returned 
-//			rs = conn.createStatement().executeQuery(selectSql);
-//	     	assertFalse(rs.next());
-//	     	
-//	        conn.commit();
-//	        // verify row exists
-//	        rs = conn.createStatement().executeQuery(selectSql);
-//	        validateRowKeyColumns(rs, 1);
-//	        validateRowKeyColumns(rs, 2);
-//	        assertFalse(rs.next());
-//		}
-//        finally {
-//        	conn.close();
-//        }
-//	}
+	private void validateRowKeyColumns(ResultSet rs, int i) throws SQLException {
+		assertTrue(rs.next());
+		assertEquals(rs.getString(1), "varchar" + String.valueOf(i));
+		assertEquals(rs.getString(2), "char" + String.valueOf(i));
+		assertEquals(rs.getInt(3), i);
+		assertEquals(rs.getInt(4), i);
+		assertEquals(rs.getBigDecimal(5), new BigDecimal(i*0.5d));
+		Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i - 1) * TestUtil.NUM_MILLIS_IN_DAY);
+		assertEquals(rs.getDate(6), date);
+	}
 	
 	@Test
-	public void testUpsert2() throws Exception {
+	public void testUpsert() throws Exception {
+		String selectSql = "SELECT * FROM "+FULL_TABLE_NAME;
 		Connection conn = DriverManager.getConnection(getUrl());
-		String ddl = "CREATE TABLE t (k1 INTEGER PRIMARY KEY, k2 INTEGER) transactional=true";
 		try {
 			conn.setAutoCommit(false);
-			conn.createStatement().execute(ddl);
-			// upsert one row
-			PreparedStatement stmt = conn
-					.prepareStatement("UPSERT INTO t VALUES(?,?)");
-			stmt.setInt(1, 1);
-			stmt.setInt(2, 1);
+			ResultSet rs = conn.createStatement().executeQuery(selectSql);
+	     	assertFalse(rs.next());
+	     	
+	        String upsert = "UPSERT INTO " + FULL_TABLE_NAME + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+	        PreparedStatement stmt = conn.prepareStatement(upsert);
+			// upsert two rows
+			setRowKeyColumns(stmt, 1);
 			stmt.execute();
-			stmt.setInt(1, 2);
-			stmt.setInt(2, 2);
+			setRowKeyColumns(stmt, 2);
 			stmt.execute();
-			conn.commit();
-			// verify row exists
-			ResultSet rs = conn.createStatement().executeQuery(
-					"SELECT * FROM t");
-			assertTrue(rs.next());
-			assertEquals(1, rs.getInt(1));
-			assertTrue(rs.next());
-			assertEquals(2, rs.getInt(1));
-			assertFalse(rs.next());
-		} finally {
-			conn.close();
+	        
+	        // verify no rows returned 
+			rs = conn.createStatement().executeQuery(selectSql);
+	     	assertFalse(rs.next());
+	     	
+	        conn.commit();
+	        
+	        Scan scan = new Scan();
+	        PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
+	        HTableInterface table = pconn.getQueryServices().getTable(Bytes.toBytes(FULL_TABLE_NAME));
+	        ResultScanner results = table.getScanner(scan);
+	        for (Result res : results) {
+	        	System.err.println(res.toString());
+	        }
+	        results.close();
+	        
+	        // verify row exists
+	        rs = conn.createStatement().executeQuery(selectSql);
+	        validateRowKeyColumns(rs, 1);
+	        validateRowKeyColumns(rs, 2);
+	        assertFalse(rs.next());
 		}
+        finally {
+        	conn.close();
+        }
 	}
 	
 	@Test

http://git-wip-us.apache.org/repos/asf/phoenix/blob/20cf437f/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index cdb741d..03f7d0f 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -498,6 +498,7 @@ public abstract class BaseTest {
         config.set(TxConstants.Service.CFG_DATA_TX_CLIENT_RETRY_STRATEGY, "n-times");
         config.setInt(TxConstants.Service.CFG_DATA_TX_CLIENT_ATTEMPTS, 1);
         config.set(TxConstants.Manager.CFG_TX_SNAPSHOT_DIR, tmpFolder.newFolder().getAbsolutePath());
+        config.setInt(TxConstants.Manager.CFG_TX_TIMEOUT, 600);
 //        config.set(TxConstants.Service.CFG_DATA_TX_ZOOKEEPER_QUORUM, ConnectionInfo.getZookeeperConnectionString(getUrl()));
 //        config.set(TxConstants.Manager.CFG_TX_SNAPSHOT_DIR, "/tmp");