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 2018/06/16 08:24:02 UTC
phoenix git commit: Set transaction provider in table properties so
it's accessible from ConnectionQueryServices
Repository: phoenix
Updated Branches:
refs/heads/omid2 5af5980ab -> e6715b0ab
Set transaction provider in table properties so it's accessible from ConnectionQueryServices
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/e6715b0a
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/e6715b0a
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/e6715b0a
Branch: refs/heads/omid2
Commit: e6715b0aba66189f9ccd5518abbae9934d2aea75
Parents: 5af5980
Author: James Taylor <ja...@apache.org>
Authored: Sat Jun 16 10:23:52 2018 +0200
Committer: James Taylor <ja...@apache.org>
Committed: Sat Jun 16 10:23:52 2018 +0200
----------------------------------------------------------------------
.../phoenix/end2end/index/MutableIndexIT.java | 6 +++---
.../org/apache/phoenix/tx/TransactionIT.java | 8 +++++++-
.../query/ConnectionQueryServicesImpl.java | 21 +++++++-------------
.../apache/phoenix/schema/MetaDataClient.java | 2 +-
4 files changed, 18 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/e6715b0a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index 4a8a21d..4dbb7d3 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -35,8 +35,6 @@ import java.util.Collection;
import java.util.List;
import java.util.Properties;
-import jline.internal.Log;
-
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableName;
@@ -75,6 +73,8 @@ import org.junit.runners.Parameterized.Parameters;
import com.google.common.primitives.Doubles;
+import jline.internal.Log;
+
@RunWith(Parameterized.class)
public class MutableIndexIT extends ParallelStatsDisabledIT {
@@ -106,7 +106,7 @@ public class MutableIndexIT extends ParallelStatsDisabledIT {
return getConnection(props);
}
- @Parameters(name="MutableIndexIT_localIndex={0},transactional={1},columnEncoded={2}") // name is used by failsafe as file name in reports
+ @Parameters(name="MutableIndexIT_localIndex={0},transactionProvider={1},columnEncoded={2}") // name is used by failsafe as file name in reports
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ false, null, false }, { false, null, true },
http://git-wip-us.apache.org/repos/asf/phoenix/blob/e6715b0a/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 853f84d..9f27fa7 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
@@ -40,6 +40,8 @@ import java.util.Properties;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
import org.apache.phoenix.exception.SQLExceptionCode;
@@ -142,7 +144,7 @@ public class TransactionIT extends ParallelStatsDisabledIT {
}
@Test
- public void testReCreateTxnTableAfterDroppingExistingNonTxnTable() throws SQLException {
+ public void testReCreateTxnTableAfterDroppingExistingNonTxnTable() throws Exception {
String tableName = generateUniqueName();
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -150,6 +152,10 @@ public class TransactionIT extends ParallelStatsDisabledIT {
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE " + tableName + "(k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR)");
stmt.execute("DROP TABLE " + tableName);
+ // Must drop metadata as Omid does not allow creating a transactional table from a non transactional one
+ Admin admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin();
+ admin.disableTable(TableName.valueOf(tableName));
+ admin.deleteTable(TableName.valueOf(tableName));
stmt.execute("CREATE TABLE " + tableName + "(k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) TRANSACTIONAL=true," + tableDDLOptions);
stmt.execute("CREATE INDEX " + tableName + "_IDX ON " + tableName + " (v1) INCLUDE(v2)");
assertTrue(conn.unwrap(PhoenixConnection.class).getTable(new PTableKey(null, tableName)).isTransactional());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/e6715b0a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index 562cc4b..cc0ead0 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -856,10 +856,8 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
if (!descriptor.hasCoprocessor(ServerCachingEndpointImpl.class.getName())) {
descriptor.addCoprocessor(ServerCachingEndpointImpl.class.getName(), null, priority, null);
}
- // For ALTER TABLE
- boolean nonTxToTx = Boolean.TRUE.equals(tableProps.get(PhoenixTransactionContext.READ_NON_TX_DATA));
- boolean isTransactional =
- Boolean.TRUE.equals(tableProps.get(TableProperty.TRANSACTIONAL.name())) || nonTxToTx;
+ TransactionFactory.Provider provider = getTransactionProvider(tableProps);
+ boolean isTransactional = (provider != null);
// TODO: better encapsulation for this
// Since indexes can't have indexes, don't install our indexing coprocessor for indexes.
// Also don't install on the SYSTEM.CATALOG and SYSTEM.STATS table because we use
@@ -922,7 +920,6 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
}
if (isTransactional) {
- TransactionFactory.Provider provider = getTransactionProvider(tableProps);
Class<? extends RegionObserver> coprocessorClass = provider.getTransactionProvider().getCoprocessor();
if (!descriptor.hasCoprocessor(coprocessorClass.getName())) {
descriptor.addCoprocessor(coprocessorClass.getName(), null, priority - 10, null);
@@ -935,9 +932,9 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
}
} else {
// Remove all potential transactional coprocessors
- for (TransactionFactory.Provider provider : TransactionFactory.Provider.values()) {
- Class<? extends RegionObserver> coprocessorClass = provider.getTransactionProvider().getCoprocessor();
- Class<? extends RegionObserver> coprocessorGCClass = provider.getTransactionProvider().getGCCoprocessor();
+ for (TransactionFactory.Provider aprovider : TransactionFactory.Provider.values()) {
+ Class<? extends RegionObserver> coprocessorClass = aprovider.getTransactionProvider().getCoprocessor();
+ Class<? extends RegionObserver> coprocessorGCClass = aprovider.getTransactionProvider().getGCCoprocessor();
if (coprocessorClass != null && descriptor.hasCoprocessor(coprocessorClass.getName())) {
descriptor.removeCoprocessor(coprocessorClass.getName());
}
@@ -953,10 +950,6 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
private TransactionFactory.Provider getTransactionProvider(Map<String,Object> tableProps) {
TransactionFactory.Provider provider = (TransactionFactory.Provider)TableProperty.TRANSACTION_PROVIDER.getValue(tableProps);
- if (provider == null) {
- String providerValue = this.props.get(QueryServices.DEFAULT_TRANSACTION_PROVIDER_ATTRIB, QueryServicesOptions.DEFAULT_TRANSACTION_PROVIDER);
- provider = (TransactionFactory.Provider)TableProperty.TRANSACTION_PROVIDER.getValue(providerValue);
- }
return provider;
}
@@ -1182,11 +1175,11 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
if (!modifyExistingMetaData) {
return existingDesc; // Caller already knows that no metadata was changed
}
- boolean willBeTx = Boolean.TRUE.equals(props.get(TableProperty.TRANSACTIONAL.name()));
+ TransactionFactory.Provider provider = getTransactionProvider(props);
+ boolean willBeTx = provider != null;
// If mapping an existing table as transactional, set property so that existing
// data is correctly read.
if (willBeTx) {
- TransactionFactory.Provider provider = getTransactionProvider(props);
if (provider.getTransactionProvider().isUnsupported(PhoenixTransactionProvider.Feature.ALTER_NONTX_TO_TX)) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.CANNOT_ALTER_TABLE_FROM_NON_TXN_TO_TXNL)
.setMessage(provider.name())
http://git-wip-us.apache.org/repos/asf/phoenix/blob/e6715b0a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
index f2600b1..cb71fba 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
@@ -2090,7 +2090,7 @@ public class MetaDataClient {
// Put potentially inferred value into tableProps as it's used by the createTable call below
// to determine which coprocessors to install on the new table.
- tableProps.put(PhoenixDatabaseMetaData.TRANSACTIONAL, transactionProvider != null);
+ tableProps.put(PhoenixDatabaseMetaData.TRANSACTION_PROVIDER, transactionProvider);
if (transactionProvider != null) {
// TODO: for Omid
// If TTL set, use Tephra TTL property name instead