[
https://issues.apache.org/jira/browse/PHOENIX-1674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15005101#comment-15005101
]
ASF GitHub Bot commented on PHOENIX-1674:
-----------------------------------------
Github user samarthjain commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/127#discussion_r44853416
--- Diff: phoenix-core/src/it/java/org/apache/phoenix/tx/UpdateCacheIT.java
---
@@ -0,0 +1,122 @@
+package org.apache.phoenix.tx;
+
+import static org.apache.phoenix.util.TestUtil.INDEX_DATA_SCHEMA;
+import static org.apache.phoenix.util.TestUtil.MUTABLE_INDEX_DATA_TABLE;
+import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.apache.phoenix.util.TestUtil.TRANSACTIONAL_DATA_TABLE;
+import static org.junit.Assert.assertFalse;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Properties;
+
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
+import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver;
+import org.apache.phoenix.query.ConnectionQueryServices;
+import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.schema.MetaDataClient;
+import org.apache.phoenix.schema.PName;
+import org.apache.phoenix.schema.types.PVarchar;
+import org.apache.phoenix.util.PhoenixRuntime;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * Verifies the number of rpcs calls from {@link MetaDataClient}
updateCache()
+ * for transactional and non-transactional tables.
+ */
+public class UpdateCacheIT extends BaseHBaseManagedTimeIT {
+
+ @Before
+ public void setUp() throws SQLException {
+ ensureTableCreated(getUrl(), TRANSACTIONAL_DATA_TABLE);
+ ensureTableCreated(getUrl(), MUTABLE_INDEX_DATA_TABLE);
+ }
+
+ @Test
+ public void testUpdateCacheForTxnTable() throws Exception {
+ helpTestUpdateCache(true, null);
+ }
+
+ @Test
+ public void testUpdateCacheForNonTxnTable() throws Exception {
+ helpTestUpdateCache(false, null);
+ }
+
+ public static void helpTestUpdateCache(boolean isTransactional, Long
scn) throws Exception {
+ String tableName = isTransactional ? TRANSACTIONAL_DATA_TABLE :
MUTABLE_INDEX_DATA_TABLE;
+ String fullTableName = INDEX_DATA_SCHEMA +
QueryConstants.NAME_SEPARATOR + tableName;
+ String selectSql = "SELECT * FROM "+fullTableName;
+ // use a spyed ConnectionQueryServices so we can verify calls
to getTable
+ ConnectionQueryServices connectionQueryServices =
Mockito.spy(driver.getConnectionQueryServices(getUrl(),
PropertiesUtil.deepCopy(TEST_PROPERTIES)));
+ Properties props = new Properties();
+ props.putAll(PhoenixEmbeddedDriver.DEFFAULT_PROPS.asMap());
+ if (scn!=null) {
+ props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB,
Long.toString(scn));
+ }
+ Connection conn = connectionQueryServices.connect(getUrl(),
props);
+ try {
+ conn.setAutoCommit(false);
+ String upsert = "UPSERT INTO " + fullTableName + "(varchar_pk,
char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+ PreparedStatement stmt = conn.prepareStatement(upsert);
+ // upsert three rows
+ TestUtil.setRowKeyColumns(stmt, 1);
+ stmt.execute();
+ TestUtil.setRowKeyColumns(stmt, 2);
+ stmt.execute();
+ TestUtil.setRowKeyColumns(stmt, 3);
+ stmt.execute();
+ conn.commit();
+ // for non txn tables verify only one rpc to fetch
table metadata,
+ // for txn tables the table will already be present in
the cache because MetaDataClient.createTableInternal starts a txn
+// if (!isTransactional) {
--- End diff --
Minor nit: remove commented code, please
> Snapshot isolation transaction support through Tephra
> -----------------------------------------------------
>
> Key: PHOENIX-1674
> URL: https://issues.apache.org/jira/browse/PHOENIX-1674
> Project: Phoenix
> Issue Type: Improvement
> Reporter: James Taylor
> Labels: SFDC
>
> Tephra (http://tephra.io/ and https://github.com/caskdata/tephra) is one
> option for getting transaction support in Phoenix. Let's use this JIRA to
> discuss the way in which this could be integrated along with the pros and
> cons.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)