You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ra...@apache.org on 2016/07/11 04:04:54 UTC
phoenix git commit: PHOENIX-3002 Upgrading to 4.8 doesn't recreate
local indexes-addendum2(Rajeshbabu)
Repository: phoenix
Updated Branches:
refs/heads/4.x-HBase-1.1 8a0f320d9 -> 275f716c2
PHOENIX-3002 Upgrading to 4.8 doesn't recreate local indexes-addendum2(Rajeshbabu)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/275f716c
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/275f716c
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/275f716c
Branch: refs/heads/4.x-HBase-1.1
Commit: 275f716c25c7e7ea2ecec054cf0f17d586ac4683
Parents: 8a0f320
Author: Rajeshbabu Chintaguntla <ra...@apache.org>
Authored: Mon Jul 11 09:41:42 2016 +0530
Committer: Rajeshbabu Chintaguntla <ra...@apache.org>
Committed: Mon Jul 11 09:41:42 2016 +0530
----------------------------------------------------------------------
.../end2end/QueryDatabaseMetaDataIT.java | 14 +++++++++++++
.../query/ConnectionQueryServicesImpl.java | 2 +-
.../org/apache/phoenix/util/UpgradeUtil.java | 22 ++++++++++----------
3 files changed, 26 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/275f716c/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java
index 4012d0c..12066e6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java
@@ -572,6 +572,20 @@ public class QueryDatabaseMetaDataIT extends BaseClientManagedTimeIT {
assertFalse(rs.next());
+ conn.createStatement().execute("CREATE TABLE SALTEDTABLE123 (k INTEGER PRIMARY KEY, v VARCHAR) SALT_BUCKETS=3");
+ conn.close();
+ props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10));
+ conn = DriverManager.getConnection(getUrl(), props);
+ dbmd = conn.getMetaData();
+ rs = dbmd.getPrimaryKeys(null, "", "SALTEDTABLE123");
+ assertTrue(rs.next());
+ assertEquals(null, rs.getString("TABLE_SCHEM"));
+ assertEquals("SALTEDTABLE123", rs.getString("TABLE_NAME"));
+ assertEquals(null, rs.getString("TABLE_CAT"));
+ assertEquals("K", rs.getString("COLUMN_NAME"));
+ assertEquals(1, rs.getInt("KEY_SEQ"));
+ assertEquals(null, rs.getString("PK_NAME"));
+ assertFalse(rs.next());
}
@Test
http://git-wip-us.apache.org/repos/asf/phoenix/blob/275f716c/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 99666dd..bdb5960 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
@@ -2479,11 +2479,11 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_8_0,
PhoenixDatabaseMetaData.APPEND_ONLY_SCHEMA + " "
+ PBoolean.INSTANCE.getSqlTypeName());
+ metaConnection = UpgradeUtil.disableViewIndexes(metaConnection);
if(getProps().getBoolean(QueryServices.LOCAL_INDEX_CLIENT_UPGRADE_ATTRIB,
QueryServicesOptions.DEFAULT_LOCAL_INDEX_CLIENT_UPGRADE)) {
metaConnection = UpgradeUtil.upgradeLocalIndexes(metaConnection);
}
- metaConnection = UpgradeUtil.disableViewIndexes(metaConnection);
ConnectionQueryServicesImpl.this.removeTable(null,
PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME, null,
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_8_0);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/275f716c/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java
index 9046287..7ed9f70 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java
@@ -329,10 +329,10 @@ public class UpgradeUtil {
globalConnection = new PhoenixConnection(metaConnection, metaConnection.getQueryServices(), props);
SQLException sqlEx = null;
try (HBaseAdmin admin = globalConnection.getQueryServices().getAdmin()) {
- ResultSet rs = globalConnection.createStatement().executeQuery("SELECT TABLE_SCHEM, TABLE_NAME, DATA_TABLE_NAME, TENANT_ID FROM SYSTEM.CATALOG "
+ ResultSet rs = globalConnection.createStatement().executeQuery("SELECT TABLE_SCHEM, TABLE_NAME, DATA_TABLE_NAME, TENANT_ID, MULTI_TENANT, SALT_BUCKETS FROM SYSTEM.CATALOG "
+ " WHERE COLUMN_NAME IS NULL"
+ " AND COLUMN_FAMILY IS NULL"
- + " AND INDEX_TYPE=2");
+ + " AND INDEX_TYPE=" + IndexType.LOCAL.getSerializedValue());
boolean droppedLocalIndexes = false;
while (rs.next()) {
if(!droppedLocalIndexes) {
@@ -373,12 +373,14 @@ public class UpgradeUtil {
String indexTableName = rs.getString(2);
String dataTableName = rs.getString(3);
String tenantId = rs.getString(4);
+ boolean multiTenantTable = rs.getBoolean(5);
+ int numColumnsToSkip = 1 + (multiTenantTable ? 1 : 0);
String getColumns =
"SELECT COLUMN_NAME, COLUMN_FAMILY FROM SYSTEM.CATALOG WHERE TABLE_SCHEM "
+ (schemaName == null ? "IS NULL " : "='" + schemaName+ "'")
+ " AND TENANT_ID "+(tenantId == null ? "IS NULL " : "='" + tenantId + "'")
+ " and TABLE_NAME='" + indexTableName
- + "' AND COLUMN_NAME IS NOT NULL ORDER BY KEY_SEQ";
+ + "' AND COLUMN_NAME IS NOT NULL AND KEY_SEQ > "+ numColumnsToSkip +" ORDER BY KEY_SEQ";
ResultSet getColumnsRs = globalConnection.createStatement().executeQuery(getColumns);
List<String> indexedColumns = new ArrayList<String>(1);
List<String> coveredColumns = new ArrayList<String>(1);
@@ -386,9 +388,6 @@ public class UpgradeUtil {
while (getColumnsRs.next()) {
String column = getColumnsRs.getString(1);
String columnName = IndexUtil.getDataColumnName(column);
- if (SchemaUtil.normalizeIdentifier(columnName).equals(MetaDataUtil.getViewIndexIdColumnName())) {
- continue;
- }
String columnFamily = IndexUtil.getDataColumnFamilyName(column);
if (getColumnsRs.getString(2) == null) {
if (columnFamily != null && !columnFamily.isEmpty()) {
@@ -493,7 +492,7 @@ public class UpgradeUtil {
try (HBaseAdmin admin = globalConnection.getQueryServices().getAdmin()) {
String fetchViewIndexes = "SELECT " + TENANT_ID + ", " + TABLE_SCHEM + ", " + TABLE_NAME +
", " + DATA_TABLE_NAME + " FROM " + SYSTEM_CATALOG_NAME + " WHERE " + VIEW_INDEX_ID
- + " IS NOT NULL AND " + INDEX_TYPE + "<>" + IndexType.LOCAL.getSerializedValue();
+ + " IS NOT NULL";
String disableIndexDDL = "ALTER INDEX %s ON %s DISABLE";
try (ResultSet rs = globalConnection.createStatement().executeQuery(fetchViewIndexes)) {
while (rs.next()) {
@@ -502,6 +501,7 @@ public class UpgradeUtil {
String indexName = rs.getString(3);
String viewName = rs.getString(4);
String fullIndexName = SchemaUtil.getTableName(indexSchema, indexName);
+ String fullViewName = SchemaUtil.getTableName(indexSchema, viewName);
PTable viewPTable = null;
// Disable the view index and truncate the underlying hbase table.
// Users would need to rebuild the view indexes.
@@ -510,8 +510,8 @@ public class UpgradeUtil {
newProps.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, tenantId);
PTable indexPTable = null;
try (PhoenixConnection tenantConnection = new PhoenixConnection(globalConnection, globalConnection.getQueryServices(), newProps)) {
- viewPTable = PhoenixRuntime.getTable(tenantConnection, viewName);
- tenantConnection.createStatement().execute(String.format(disableIndexDDL, fullIndexName, viewName));
+ viewPTable = PhoenixRuntime.getTable(tenantConnection, fullViewName);
+ tenantConnection.createStatement().execute(String.format(disableIndexDDL, indexName, fullViewName));
indexPTable = PhoenixRuntime.getTable(tenantConnection, fullIndexName);
}
@@ -588,8 +588,8 @@ public class UpgradeUtil {
}
globalConnection.commit();
} else {
- viewPTable = PhoenixRuntime.getTable(globalConnection, viewName);
- globalConnection.createStatement().execute(String.format(disableIndexDDL, fullIndexName, viewName));
+ viewPTable = PhoenixRuntime.getTable(globalConnection, fullViewName);
+ globalConnection.createStatement().execute(String.format(disableIndexDDL, indexName, fullViewName));
}
String indexPhysicalTableName = MetaDataUtil.getViewIndexTableName(viewPTable.getPhysicalName().getString());
if (physicalTables.add(indexPhysicalTableName)) {