You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ka...@apache.org on 2019/10/31 17:36:28 UTC
[phoenix] branch 4.14-HBase-1.3 updated: PHOENIX-5553:
Transactional views should not get GlobalIndexChecker coproc
This is an automated email from the ASF dual-hosted git repository.
kadir pushed a commit to branch 4.14-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/4.14-HBase-1.3 by this push:
new 570ab68 PHOENIX-5553: Transactional views should not get GlobalIndexChecker coproc
570ab68 is described below
commit 570ab68f2ffd5821ec60f5412a3f2282ad9f99ed
Author: Gokcen Iskender <gi...@salesforce.com>
AuthorDate: Tue Oct 29 18:02:47 2019 -0700
PHOENIX-5553: Transactional views should not get GlobalIndexChecker coproc
Signed-off-by: Kadir <ko...@salesforce.com>
---
.../end2end/ParameterizedIndexUpgradeToolIT.java | 27 ++++++++++++++++++++++
.../phoenix/query/ConnectionQueryServicesImpl.java | 14 ++++++++++-
2 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParameterizedIndexUpgradeToolIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParameterizedIndexUpgradeToolIT.java
index 0e1da0c..f1cbb9a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParameterizedIndexUpgradeToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ParameterizedIndexUpgradeToolIT.java
@@ -69,10 +69,14 @@ public class ParameterizedIndexUpgradeToolIT extends BaseTest {
private static final String [] INDEXES_LIST_NAMESPACE = {"TEST:INDEX1", "TEST:INDEX2"
, "TEST1:INDEX3", "TEST1:INDEX2","TEST1:INDEX1"
, "TEST:INDEX3", "TEST:_IDX_MOCK1", "TEST1:_IDX_MOCK2"};
+ private static final String [] TRANSACTIONAL_INDEXES_LIST = {"TRANSACTIONAL_INDEX",
+ "_IDX_TRANSACTIONAL_TABLE"};
+
private static final String [] TABLE_LIST = {"TEST.MOCK1","TEST1.MOCK2","TEST.MOCK3","TEST.MULTI_TENANT_TABLE"};
private static final String [] TABLE_LIST_NAMESPACE = {"TEST:MOCK1","TEST1:MOCK2","TEST:MOCK3",
"TEST:MULTI_TENANT_TABLE"};
+ private static final String [] TRANSACTIONAL_TABLE_LIST = {"TRANSACTIONAL_TABLE"};
private static final String INPUT_LIST = "TEST.MOCK1,TEST1.MOCK2,TEST.MOCK3,TEST.MULTI_TENANT_TABLE";
private static final String INPUT_FILE = "/tmp/input_file_index_upgrade.csv";
@@ -158,6 +162,10 @@ public class ParameterizedIndexUpgradeToolIT extends BaseTest {
"CREATE TABLE TEST.MULTI_TENANT_TABLE " + " (TENANT_ID VARCHAR(15) NOT NULL,ID INTEGER NOT NULL"
+ ", NAME VARCHAR, CONSTRAINT PK_1 PRIMARY KEY (TENANT_ID, ID)) MULTI_TENANT=true";
conn.createStatement().execute(createTblStr);
+ conn.createStatement().execute("CREATE TABLE TRANSACTIONAL_TABLE(id bigint NOT NULL "
+ + "PRIMARY KEY, a.name varchar, sal bigint, address varchar) "
+ + " TRANSACTIONAL=true "//", TRANSACTION_PROVIDER='TEPHRA' "
+ + ((tableDDLOptions.trim().length() > 0) ? "," : "") + tableDDLOptions);
//views
conn.createStatement().execute("CREATE VIEW TEST.MOCK1_VIEW (view_column varchar) "
@@ -166,11 +174,15 @@ public class ParameterizedIndexUpgradeToolIT extends BaseTest {
+ " zip varchar) AS SELECT * FROM TEST.MOCK1 WHERE a.name = 'a'");
conn.createStatement().execute("CREATE VIEW TEST1.MOCK2_VIEW (view_column varchar,"
+ " state varchar) AS SELECT * FROM TEST1.MOCK2 WHERE name = 'c'");
+ conn.createStatement().execute("CREATE VIEW TRANSACTIONAL_VIEW (view_column varchar,"
+ + " state varchar) AS SELECT * FROM TRANSACTIONAL_TABLE WHERE name = 'c'");
+
//view-indexes
conn.createStatement().execute("CREATE INDEX MOCK1_INDEX1 ON TEST.MOCK1_VIEW1 " + "(view_column)");
conn.createStatement().execute("CREATE INDEX MOCK1_INDEX2 ON TEST.MOCK1_VIEW1 " + "(zip)");
conn.createStatement().execute("CREATE INDEX MOCK2_INDEX1 ON TEST1.MOCK2_VIEW " + "(state, city)");
conn.createStatement().execute("CREATE INDEX MOCK1_INDEX3 ON TEST.MOCK1_VIEW " + "(view_column)");
+ conn.createStatement().execute("CREATE INDEX TRANSACTIONAL_VIEW_INDEX ON TRANSACTIONAL_VIEW " + "(view_column)");
//indexes
conn.createStatement().execute("CREATE INDEX INDEX1 ON TEST.MOCK1 (sal, a.name)");
conn.createStatement().execute("CREATE INDEX INDEX2 ON TEST.MOCK1 (a.name)");
@@ -178,6 +190,7 @@ public class ParameterizedIndexUpgradeToolIT extends BaseTest {
conn.createStatement().execute("CREATE INDEX INDEX2 ON TEST1.MOCK2 (phone)");
conn.createStatement().execute("CREATE INDEX INDEX3 ON TEST1.MOCK2 (name)");
conn.createStatement().execute("CREATE INDEX INDEX3 ON TEST.MOCK3 (age, name)");
+ conn.createStatement().execute("CREATE INDEX TRANSACTIONAL_INDEX ON TRANSACTIONAL_TABLE(sal)");
// Tenant ones
connTenant.createStatement().execute(
@@ -225,6 +238,15 @@ public class ParameterizedIndexUpgradeToolIT extends BaseTest {
Assert.assertTrue(admin.getTableDescriptor(TableName.valueOf(index))
.hasCoprocessor(GlobalIndexChecker.class.getName()));
}
+ // Transactional indexes should not have new coprocessors
+ for (String index : TRANSACTIONAL_INDEXES_LIST) {
+ Assert.assertFalse(admin.getTableDescriptor(TableName.valueOf(index))
+ .hasCoprocessor(GlobalIndexChecker.class.getName()));
+ }
+ for (String table : TRANSACTIONAL_TABLE_LIST) {
+ Assert.assertFalse(admin.getTableDescriptor(TableName.valueOf(table))
+ .hasCoprocessor(IndexRegionObserver.class.getName()));
+ }
}
private void checkOldIndexingCoprocessors(String [] indexList, String [] tableList)
@@ -323,15 +345,18 @@ public class ParameterizedIndexUpgradeToolIT extends BaseTest {
conn.createStatement().execute("DROP INDEX INDEX3 ON TEST1.MOCK2");
conn.createStatement().execute("DROP INDEX INDEX3 ON TEST.MOCK3");
connTenant.createStatement().execute("DROP INDEX MULTI_TENANT_INDEX ON TEST.TEST_TENANT_VIEW");
+ conn.createStatement().execute("DROP INDEX TRANSACTIONAL_INDEX ON TRANSACTIONAL_TABLE");
conn.createStatement().execute("DROP INDEX MOCK1_INDEX3 ON TEST.MOCK1_VIEW");
conn.createStatement().execute("DROP INDEX MOCK1_INDEX1 ON TEST.MOCK1_VIEW1");
conn.createStatement().execute("DROP INDEX MOCK1_INDEX2 ON TEST.MOCK1_VIEW1");
conn.createStatement().execute("DROP INDEX MOCK2_INDEX1 ON TEST1.MOCK2_VIEW");
+ conn.createStatement().execute("DROP INDEX TRANSACTIONAL_VIEW_INDEX ON TRANSACTIONAL_VIEW");
conn.createStatement().execute("DROP VIEW TEST.MOCK1_VIEW");
conn.createStatement().execute("DROP VIEW TEST.MOCK1_VIEW1");
conn.createStatement().execute("DROP VIEW TEST1.MOCK2_VIEW");
+ conn.createStatement().execute("DROP VIEW TRANSACTIONAL_VIEW");
connTenant.createStatement().execute("DROP VIEW TEST.TEST_TENANT_VIEW");
conn.createStatement().execute("DROP TABLE TEST.MOCK1");
@@ -339,6 +364,8 @@ public class ParameterizedIndexUpgradeToolIT extends BaseTest {
conn.createStatement().execute("DROP TABLE TEST.MOCK3");
conn.createStatement().execute("DROP TABLE TEST.MULTI_TENANT_TABLE");
+ conn.createStatement().execute("DROP TABLE TRANSACTIONAL_TABLE");
+
if (isNamespaceEnabled) {
conn.createStatement().execute("DROP SCHEMA TEST");
conn.createStatement().execute("DROP SCHEMA TEST1");
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 9f098d3..e59c7e9 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
@@ -47,6 +47,7 @@ import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.SYSTEM_STATS_NAME;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.TABLE_NAME;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.TABLE_SCHEM;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.TENANT_ID;
+import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.TRANSACTIONAL;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_CONSTANT;
import static org.apache.phoenix.monitoring.GlobalClientMetrics.GLOBAL_HCONNECTIONS_COUNTER;
import static org.apache.phoenix.monitoring.GlobalClientMetrics.GLOBAL_PHOENIX_CONNECTIONS_THROTTLED_COUNTER;
@@ -861,11 +862,22 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
QueryServices.INDEX_REGION_OBSERVER_ENABLED_ATTRIB,
QueryServicesOptions.DEFAULT_INDEX_REGION_OBSERVER_ENABLED);
- if ((tableType == PTableType.INDEX && !isTransactional) || isViewIndex ) {
+ boolean isViewBaseTransactional = false;
+ if (!isTransactional && isViewIndex) {
+ if (Boolean.TRUE.equals(tableProps.getOrDefault(TRANSACTIONAL, Boolean.FALSE))) {
+ isViewBaseTransactional = true;
+ }
+ }
+
+ if (!isTransactional && !isViewBaseTransactional
+ && (tableType == PTableType.INDEX || isViewIndex)) {
if (!indexRegionObserverEnabled && descriptor.hasCoprocessor(GlobalIndexChecker.class.getName())) {
descriptor.removeCoprocessor(GlobalIndexChecker.class.getName());
} else if (indexRegionObserverEnabled && !descriptor.hasCoprocessor(GlobalIndexChecker.class.getName()) &&
!isLocalIndexTable(descriptor.getFamiliesKeys())) {
+ if (descriptor.hasCoprocessor(IndexRegionObserver.class.getName())) {
+ descriptor.removeCoprocessor(IndexRegionObserver.class.getName());
+ }
descriptor.addCoprocessor(GlobalIndexChecker.class.getName(), null, priority - 1, null);
}
}