PHOENIX-3547 Supporting more number of indices per table.
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/9125d203 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9125d203 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9125d203 Branch: refs/heads/4.x-HBase-1.4 Commit: 9125d203665168b728c7f10babb3f09566ca891d Parents: 8d2c12f Author: Mahdi Salarkia <msalar...@box.com> Authored: Fri Aug 31 11:06:32 2018 -0700 Committer: Thomas D'Silva <tdsi...@apache.org> Committed: Fri Aug 31 15:55:03 2018 -0700 ---------------------------------------------------------------------- .../end2end/BaseTenantSpecificViewIndexIT.java | 4 +- .../org/apache/phoenix/end2end/BaseViewIT.java | 8 +- .../end2end/TenantSpecificViewIndexIT.java | 6 +- .../org/apache/phoenix/end2end/UpgradeIT.java | 2 +- .../java/org/apache/phoenix/end2end/ViewIT.java | 10 +- .../index/ChildViewsUseParentViewIndexIT.java | 4 +- .../index/GlobalIndexOptimizationIT.java | 2 +- .../phoenix/end2end/index/IndexUsageIT.java | 4 +- .../phoenix/end2end/index/LocalIndexIT.java | 2 +- .../end2end/index/MutableIndexFailureIT.java | 4 +- .../phoenix/end2end/index/ViewIndexIT.java | 6 +- .../IndexHalfStoreFileReaderGenerator.java | 3 +- .../phoenix/compile/CreateTableCompiler.java | 5 +- .../apache/phoenix/compile/DeleteCompiler.java | 4 +- .../apache/phoenix/compile/FromCompiler.java | 2 +- .../apache/phoenix/compile/JoinCompiler.java | 2 +- .../compile/TupleProjectionCompiler.java | 4 +- .../apache/phoenix/compile/UnionCompiler.java | 2 +- .../apache/phoenix/compile/UpsertCompiler.java | 4 +- .../apache/phoenix/compile/WhereOptimizer.java | 2 +- .../coprocessor/MetaDataEndpointImpl.java | 53 ++- .../phoenix/coprocessor/MetaDataProtocol.java | 53 ++- .../coprocessor/generated/MetaDataProtos.java | 471 +++++++++++++------ .../coprocessor/generated/PTableProtos.java | 156 ++++-- .../generated/ServerCachingProtos.java | 128 ++++- .../apache/phoenix/index/IndexMaintainer.java | 15 +- .../index/PhoenixIndexFailurePolicy.java | 4 +- .../apache/phoenix/iterate/ExplainTable.java | 13 +- .../phoenix/jdbc/PhoenixDatabaseMetaData.java | 2 + .../query/ConnectionQueryServicesImpl.java | 8 + .../query/ConnectionlessQueryServicesImpl.java | 2 +- .../apache/phoenix/query/QueryConstants.java | 5 +- .../apache/phoenix/schema/DelegateTable.java | 8 +- .../apache/phoenix/schema/MetaDataClient.java | 21 +- .../java/org/apache/phoenix/schema/PTable.java | 3 +- .../org/apache/phoenix/schema/PTableImpl.java | 50 +- .../org/apache/phoenix/util/MetaDataUtil.java | 4 + .../TenantSpecificViewIndexCompileTest.java | 6 +- .../phoenix/execute/CorrelatePlanTest.java | 2 +- .../execute/LiteralResultIteratorPlanTest.java | 2 +- phoenix-protocol/src/main/MetaDataService.proto | 6 +- phoenix-protocol/src/main/PTable.proto | 3 +- .../src/main/ServerCachingService.proto | 1 + 43 files changed, 782 insertions(+), 314 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java index 9bd689e..26e2860 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseTenantSpecificViewIndexIT.java @@ -148,9 +148,9 @@ public class BaseTenantSpecificViewIndexIT extends SplitSystemCatalogIT { + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs)); } else { String expected = saltBuckets == null ? - "CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + tableName + " [-32768,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + "CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + tableName + " [-9223372036854775808,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + " SERVER FILTER BY FIRST KEY ONLY" : - "CLIENT PARALLEL 3-WAY RANGE SCAN OVER _IDX_" + tableName + " [0,-32768,'" + tenantId + "','" + valuePrefix + "v2-1'] - ["+(saltBuckets.intValue()-1)+",-32768,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + "CLIENT PARALLEL 3-WAY RANGE SCAN OVER _IDX_" + tableName + " [0,-9223372036854775808,'" + tenantId + "','" + valuePrefix + "v2-1'] - ["+(saltBuckets.intValue()-1)+",-9223372036854775808,'" + tenantId + "','" + valuePrefix + "v2-1']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT"; http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java index 5728a20..c3d553a 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseViewIT.java @@ -196,8 +196,8 @@ public abstract class BaseViewIT extends ParallelStatsEnabledIT { queryPlan); } else { assertEquals(saltBuckets == null - ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName +" [" + Short.MIN_VALUE + ",51]" - : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [0," + Short.MIN_VALUE + ",51] - ["+(saltBuckets.intValue()-1)+"," + Short.MIN_VALUE + ",51]\nCLIENT MERGE SORT", + ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName +" [" + Long.MIN_VALUE + ",51]" + : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [0," + Long.MIN_VALUE + ",51] - ["+(saltBuckets.intValue()-1)+"," + Long.MIN_VALUE + ",51]\nCLIENT MERGE SORT", queryPlan); } @@ -237,9 +237,9 @@ public abstract class BaseViewIT extends ParallelStatsEnabledIT { } else { physicalTableName = viewIndexPhysicalName; assertEquals(saltBuckets == null - ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName +" [" + (Short.MIN_VALUE+1) + ",'foo']\n" + ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName +" [" + (Long.MIN_VALUE+1) + ",'foo']\n" + " SERVER FILTER BY FIRST KEY ONLY" - : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [0," + (Short.MIN_VALUE+1) + ",'foo'] - ["+(saltBuckets.intValue()-1)+"," + (Short.MIN_VALUE+1) + ",'foo']\n" + : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [0," + (Long.MIN_VALUE+1) + ",'foo'] - ["+(saltBuckets.intValue()-1)+"," + (Long.MIN_VALUE+1) + ",'foo']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs)); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java index 31f3569..a317693 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java @@ -130,8 +130,8 @@ public class TenantSpecificViewIndexIT extends BaseTenantSpecificViewIndexIT { String sequenceNameA = getViewIndexSequenceName(PNameFactory.newName(tableName), PNameFactory.newName(tenantId2), isNamespaceEnabled); String sequenceNameB = getViewIndexSequenceName(PNameFactory.newName(tableName), PNameFactory.newName(tenantId1), isNamespaceEnabled); String sequenceSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(tableName), isNamespaceEnabled); - verifySequenceValue(isNamespaceEnabled? tenantId2 : null, sequenceNameA, sequenceSchemaName, -32767); - verifySequenceValue(isNamespaceEnabled? tenantId1 : null, sequenceNameB, sequenceSchemaName, -32767); + verifySequenceValue(isNamespaceEnabled? tenantId2 : null, sequenceNameA, sequenceSchemaName, -9223372036854775807L); + verifySequenceValue(isNamespaceEnabled? tenantId1 : null, sequenceNameB, sequenceSchemaName, -9223372036854775807L); Properties props = new Properties(); props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, tenantId2); @@ -207,7 +207,7 @@ public class TenantSpecificViewIndexIT extends BaseTenantSpecificViewIndexIT { assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + Bytes.toString(MetaDataUtil.getViewIndexPhysicalName( SchemaUtil.getPhysicalTableName(Bytes.toBytes(tableName), isNamespaceMapped).toBytes())) - + " [-32768,'" + tenantId + "','f']\n" + " SERVER FILTER BY FIRST KEY ONLY", + + " [-9223372036854775808,'" + tenantId + "','f']\n" + " SERVER FILTER BY FIRST KEY ONLY", QueryUtil.getExplainPlan(rs)); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java index c2cf9e6..a27d8dc 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java @@ -188,7 +188,7 @@ public class UpgradeIT extends ParallelStatsDisabledIT { + " IS NULL AND " + PhoenixDatabaseMetaData.SEQUENCE_SCHEMA + " = '" + newSchemaName + "' AND " + PhoenixDatabaseMetaData.SEQUENCE_NAME + "='" + newSequenceName + "'"); assertTrue(rs.next()); - assertEquals("-32765", rs.getString(1)); + assertEquals("-9223372036854775805", rs.getString(1)); rs = phxConn.createStatement().executeQuery("SELECT " + PhoenixDatabaseMetaData.SEQUENCE_SCHEMA + "," + PhoenixDatabaseMetaData.SEQUENCE_SCHEMA + "," + PhoenixDatabaseMetaData.CURRENT_VALUE + " FROM " + PhoenixDatabaseMetaData.SYSTEM_SEQUENCE + " WHERE " + PhoenixDatabaseMetaData.TENANT_ID http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java index c1a7ff5..5e465b4 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java @@ -1258,9 +1258,9 @@ public class ViewIT extends SplitSystemCatalogIT { queryPlan); } else { assertEquals(saltBuckets == null - ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [" + Short.MIN_VALUE + ",51]" + ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [" + Long.MIN_VALUE + ",51]" : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [0," - + Short.MIN_VALUE + ",51] - [" + (saltBuckets.intValue() - 1) + "," + Short.MIN_VALUE + + Long.MIN_VALUE + ",51] - [" + (saltBuckets.intValue() - 1) + "," + Long.MIN_VALUE + ",51]\nCLIENT MERGE SORT", queryPlan); } @@ -1302,10 +1302,10 @@ public class ViewIT extends SplitSystemCatalogIT { assertEquals( saltBuckets == null ? "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + viewIndexPhysicalName + " [" - + (Short.MIN_VALUE + 1) + ",'foo']\n" + " SERVER FILTER BY FIRST KEY ONLY" + + (Long.MIN_VALUE + 1) + ",'foo']\n" + " SERVER FILTER BY FIRST KEY ONLY" : "CLIENT PARALLEL " + saltBuckets + "-WAY RANGE SCAN OVER " + viewIndexPhysicalName - + " [0," + (Short.MIN_VALUE + 1) + ",'foo'] - [" + (saltBuckets.intValue() - 1) - + "," + (Short.MIN_VALUE + 1) + ",'foo']\n" + + " [0," + (Long.MIN_VALUE + 1) + ",'foo'] - [" + (saltBuckets.intValue() - 1) + + "," + (Long.MIN_VALUE + 1) + ",'foo']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs)); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java index f3ee2cb..54528a9 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ChildViewsUseParentViewIndexIT.java @@ -161,7 +161,7 @@ public class ChildViewsUseParentViewIndexIT extends ParallelStatsDisabledIT { ResultSet rs = conn.prepareStatement("EXPLAIN " + sql).executeQuery(); String childViewScanKey = isChildView ? ",'Y'" : ""; assertEquals( - "CLIENT PARALLEL 1-WAY SKIP SCAN ON 3 KEYS OVER _IDX_" + baseTableName + " [-32768,'1'" + childViewScanKey + "] - [-32768,'3'" + childViewScanKey + "]\n" + + "CLIENT PARALLEL 1-WAY SKIP SCAN ON 3 KEYS OVER _IDX_" + baseTableName + " [-9223372036854775808,'1'" + childViewScanKey + "] - [-9223372036854775808,'3'" + childViewScanKey + "]\n" + " SERVER FILTER BY FIRST KEY ONLY", QueryUtil.getExplainPlan(rs)); @@ -264,7 +264,7 @@ public class ChildViewsUseParentViewIndexIT extends ParallelStatsDisabledIT { " ORDER BY WO_ID, A_DATE DESC"; ResultSet rs = conn.prepareStatement("EXPLAIN " + sql).executeQuery(); assertEquals( - "CLIENT PARALLEL 1-WAY SKIP SCAN ON 5 RANGES OVER _IDX_" + baseTableName + " [-32768,'00Dxxxxxxxxxxx1','003xxxxxxxxxxx1',*] - [-32768,'00Dxxxxxxxxxxx1','003xxxxxxxxxxx5',~'2016-01-01 06:00:00.000']\n" + + "CLIENT PARALLEL 1-WAY SKIP SCAN ON 5 RANGES OVER _IDX_" + baseTableName + " [-9223372036854775808,'00Dxxxxxxxxxxx1','003xxxxxxxxxxx1',*] - [-9223372036854775808,'00Dxxxxxxxxxxx1','003xxxxxxxxxxx5',~'2016-01-01 06:00:00.000']\n" + " SERVER FILTER BY FIRST KEY ONLY", QueryUtil.getExplainPlan(rs)); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java index 51e9de9..09003b0 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java @@ -344,7 +344,7 @@ public class GlobalIndexOptimizationIT extends ParallelStatsDisabledIT { "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + dataTableName + "\n" + " SERVER FILTER BY V1 = 'a'\n" + " SKIP-SCAN-JOIN TABLE 0\n" + - " CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER _IDX_" + dataTableName + " \\[-32768,1\\] - \\[-32768,2\\]\n" + + " CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER _IDX_" + dataTableName + " \\[-9223372036854775808,1\\] - \\[-9223372036854775808,2\\]\n" + " SERVER FILTER BY FIRST KEY ONLY AND \"K2\" IN \\(3,4\\)\n" + " DYNAMIC SERVER FILTER BY \\(\"" + viewName + ".T_ID\", \"" + viewName + ".K1\", \"" + viewName + ".K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; assertTrue("Expected:\n" + expected + "\ndid not match\n" + actual, Pattern.matches(expected,actual)); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexUsageIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexUsageIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexUsageIT.java index 14b569a..f114010 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexUsageIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexUsageIT.java @@ -496,7 +496,7 @@ public class IndexUsageIT extends ParallelStatsDisabledIT { assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + dataTableName + " [1,173]\n" + "CLIENT MERGE SORT", queryPlan); } else { - assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + dataTableName + " [" + Short.MIN_VALUE + ",173]", queryPlan); + assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + dataTableName + " [" + Long.MIN_VALUE + ",173]", queryPlan); } rs = conn.createStatement().executeQuery(query); assertTrue(rs.next()); @@ -516,7 +516,7 @@ public class IndexUsageIT extends ParallelStatsDisabledIT { + ",'foo2_bar2']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + "CLIENT MERGE SORT", QueryUtil.getExplainPlan(rs)); } else { - assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + dataTableName + " [" + (Short.MIN_VALUE + 1) + ",'foo2_bar2']\n" + assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER _IDX_" + dataTableName + " [" + (Long.MIN_VALUE + 1) + ",'foo2_bar2']\n" + " SERVER FILTER BY FIRST KEY ONLY", QueryUtil.getExplainPlan(rs)); } rs = conn.createStatement().executeQuery(query); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index 0dcf1d5..913d4b1 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -199,7 +199,7 @@ public class LocalIndexIT extends BaseLocalIndexIT { Connection conn1 = getConnection(); Connection conn2 = getConnection(); conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)"); - verifySequenceValue(null, sequenceName, sequenceSchemaName,-32767); + verifySequenceValue(null, sequenceName, sequenceSchemaName,-9223372036854775807L); conn2.createStatement().executeQuery("SELECT * FROM " + tableName).next(); conn1.createStatement().execute("DROP TABLE "+ tableName); verifySequenceNotExists(null, sequenceName, sequenceSchemaName); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java index 8f88513..0611478 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java @@ -591,9 +591,9 @@ public class MutableIndexFailureIT extends BaseTest { if (Bytes.toString(family).startsWith(QueryConstants.LOCAL_INDEX_COLUMN_FAMILY_PREFIX)) { int regionStartKeyLen = c.getEnvironment().getRegionInfo().getStartKey().length; Cell firstCell = entry.getValue().get(0); - short indexId = MetaDataUtil.getViewIndexIdDataType().getCodec().decodeShort(firstCell.getRowArray(), firstCell.getRowOffset() + regionStartKeyLen, SortOrder.getDefault()); + long indexId = MetaDataUtil.getViewIndexIdDataType().getCodec().decodeLong(firstCell.getRowArray(), firstCell.getRowOffset() + regionStartKeyLen, SortOrder.getDefault()); // Only throw for first local index as the test may have multiple local indexes - if (indexId == Short.MIN_VALUE) { + if (indexId == Long.MIN_VALUE) { throwException = true; break; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java index 3ce6ae5..11cfc5c9 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ViewIndexIT.java @@ -124,10 +124,10 @@ public class ViewIndexIT extends SplitSystemCatalogIT { String sequenceSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(fullTableName), isNamespaceMapped); String seqName = getViewIndexSequenceName(PNameFactory.newName(fullTableName), null, !isNamespaceMapped); String seqSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(fullTableName), !isNamespaceMapped); - verifySequenceValue(null, sequenceName, sequenceSchemaName, -32767); - verifySequenceValue(null, sequenceName, sequenceSchemaName, -32767); + verifySequenceValue(null, sequenceName, sequenceSchemaName, -9223372036854775807L); + verifySequenceValue(null, sequenceName, sequenceSchemaName, -9223372036854775807L); conn1.createStatement().execute("CREATE INDEX " + indexName + "_2 ON " + fullViewName + " (v1)"); - verifySequenceValue(null, sequenceName, sequenceSchemaName, -32766); + verifySequenceValue(null, sequenceName, sequenceSchemaName, -9223372036854775806L); // Check other format of sequence is not there as Sequences format is different for views/indexes created on // table which are namespace mapped and which are not. verifySequenceNotExists(null, seqName, seqSchemaName); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java index bf83147..095e589 100644 --- a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java +++ b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java @@ -157,8 +157,7 @@ public class IndexHalfStoreFileReaderGenerator extends BaseRegionObserver { for (PTable index : indexes) { if (index.getIndexType() == IndexType.LOCAL) { IndexMaintainer indexMaintainer = index.getIndexMaintainer(dataTable, conn); - indexMaintainers.put(new ImmutableBytesWritable(MetaDataUtil - .getViewIndexIdDataType().toBytes(index.getViewIndexId())), + indexMaintainers.put(new ImmutableBytesWritable(index.getViewIndexType().toBytes(index.getViewIndexId())), indexMaintainer); } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/CreateTableCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/CreateTableCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/CreateTableCompiler.java index d67899c..c9fd3b2 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/CreateTableCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/CreateTableCompiler.java @@ -64,6 +64,7 @@ import org.apache.phoenix.schema.TableRef; import org.apache.phoenix.schema.types.PDataType; import org.apache.phoenix.schema.types.PVarbinary; import org.apache.phoenix.util.ByteUtil; +import org.apache.phoenix.util.MetaDataUtil; import org.apache.phoenix.util.QueryUtil; import com.google.common.collect.Iterators; @@ -189,7 +190,7 @@ public class CreateTableCompiler { @Override public MutationState execute() throws SQLException { try { - return client.createTable(finalCreate, splits, parent, viewStatement, viewType, viewColumnConstants, isViewColumnReferenced); + return client.createTable(finalCreate, splits, parent, viewStatement, viewType, MetaDataUtil.getViewIndexIdDataType(), viewColumnConstants, isViewColumnReferenced); } finally { if (client.getConnection() != connection) { client.getConnection().close(); @@ -340,4 +341,4 @@ public class CreateTableCompiler { } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java index 5f9c76c..c2dfeab 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java @@ -156,7 +156,7 @@ public class DeleteCompiler { int offset = (table.getBucketNum() == null ? 0 : 1); byte[][] values = new byte[pkColumns.size()][]; if (isSharedViewIndex) { - values[offset++] = MetaDataUtil.getViewIndexIdDataType().toBytes(table.getViewIndexId()); + values[offset++] = table.getViewIndexType().toBytes(table.getViewIndexId()); } if (isMultiTenant) { values[offset++] = tenantIdBytes; @@ -977,4 +977,4 @@ public class DeleteCompiler { return table.getIndexType() != IndexType.LOCAL && (table.isImmutableRows() || table.isTransactional()); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java index 4adc805..6eb5952 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java @@ -828,7 +828,7 @@ public class FromCompiler { PTable t = PTableImpl.makePTable(null, PName.EMPTY_NAME, PName.EMPTY_NAME, PTableType.SUBQUERY, null, MetaDataProtocol.MIN_TABLE_TIMESTAMP, PTable.INITIAL_SEQ_NUM, null, null, columns, null, null, Collections.<PTable> emptyList(), false, Collections.<PName> emptyList(), null, null, false, false, - false, null, null, null, false, null, 0, 0L, SchemaUtil + false, null, null, null, null, false, null, 0, 0L, SchemaUtil .isNamespaceMappingEnabled(PTableType.SUBQUERY, connection.getQueryServices().getProps()), null, false, ImmutableStorageScheme.ONE_CELL_PER_COLUMN, QualifierEncodingScheme.NON_ENCODED_QUALIFIERS, PTable.EncodedCQCounter.NULL_COUNTER, true); String alias = subselectNode.getAlias(); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java index 824d933..36bfc5f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java @@ -1275,7 +1275,7 @@ public class JoinCompiler { left.getType(), left.getIndexState(), left.getTimeStamp(), left.getSequenceNumber(), left.getPKName(), left.getBucketNum(), merged, left.getParentSchemaName(), left.getParentTableName(), left.getIndexes(), left.isImmutableRows(), Collections.<PName> emptyList(), null, null, PTable.DEFAULT_DISABLE_WAL, - left.isMultiTenant(), left.getStoreNulls(), left.getViewType(), left.getViewIndexId(), + left.isMultiTenant(), left.getStoreNulls(), left.getViewType(), left.getViewIndexType(), left.getViewIndexId(), left.getIndexType(), left.rowKeyOrderOptimizable(), left.getTransactionProvider(), left.getUpdateCacheFrequency(), left.getIndexDisableTimestamp(), left.isNamespaceMapped(), left.getAutoPartitionSeqName(), left.isAppendOnlySchema(), ONE_CELL_PER_COLUMN, NON_ENCODED_QUALIFIERS, PTable.EncodedCQCounter.NULL_COUNTER, left.useStatsForParallelization()); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/TupleProjectionCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/TupleProjectionCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/TupleProjectionCompiler.java index 91be356..a2937bf 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/TupleProjectionCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/TupleProjectionCompiler.java @@ -166,7 +166,7 @@ public class TupleProjectionCompiler { table.getPKName(), table.getBucketNum(), projectedColumns, table.getParentSchemaName(), table.getParentTableName(), table.getIndexes(), table.isImmutableRows(), Collections.<PName> emptyList(), table.getDefaultFamilyName(), table.getViewStatement(), table.isWALDisabled(), table.isMultiTenant(), table.getStoreNulls(), table.getViewType(), - table.getViewIndexId(), + table.getViewIndexType(), table.getViewIndexId(), table.getIndexType(), table.rowKeyOrderOptimizable(), table.getTransactionProvider(), table.getUpdateCacheFrequency(), table.getIndexDisableTimestamp(), table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema(), table.getImmutableStorageScheme(), table.getEncodingScheme(), table.getEncodedCQCounter(), table.useStatsForParallelization()); } @@ -198,7 +198,7 @@ public class TupleProjectionCompiler { table.getBucketNum(), projectedColumns, null, null, Collections.<PTable> emptyList(), table.isImmutableRows(), Collections.<PName> emptyList(), null, null, table.isWALDisabled(), table.isMultiTenant(), table.getStoreNulls(), table.getViewType(), - table.getViewIndexId(), null, table.rowKeyOrderOptimizable(), table.getTransactionProvider(), + table.getViewIndexType(), table.getViewIndexId(), null, table.rowKeyOrderOptimizable(), table.getTransactionProvider(), table.getUpdateCacheFrequency(), table.getIndexDisableTimestamp(), table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema(), table.getImmutableStorageScheme(), table.getEncodingScheme(), cqCounter, table.useStatsForParallelization()); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/UnionCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/UnionCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/UnionCompiler.java index c94634b..c0c63eb 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/UnionCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/UnionCompiler.java @@ -100,7 +100,7 @@ public class UnionCompiler { UNION_SCHEMA_NAME, UNION_TABLE_NAME, PTableType.SUBQUERY, null, HConstants.LATEST_TIMESTAMP, scn == null ? HConstants.LATEST_TIMESTAMP : scn, null, null, projectedColumns, null, null, null, true, null, null, null, true, - true, true, null, null, null, false, null, 0, 0L, + true, true, null, null, null, null, false, null, 0, 0L, SchemaUtil.isNamespaceMappingEnabled(PTableType.SUBQUERY, statement.getConnection().getQueryServices().getProps()), null, false, ImmutableStorageScheme.ONE_CELL_PER_COLUMN, QualifierEncodingScheme.NON_ENCODED_QUALIFIERS, PTable.EncodedCQCounter.NULL_COUNTER, true); TableRef tableRef = new TableRef(null, tempTable, 0, false); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java index d0dd2cf..6d81f8b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java @@ -726,7 +726,7 @@ public class UpsertCompiler { final byte[][] values = new byte[nValuesToSet][]; int nodeIndex = 0; if (isSharedViewIndex) { - values[nodeIndex++] = MetaDataUtil.getViewIndexIdDataType().toBytes(table.getViewIndexId()); + values[nodeIndex++] = table.getViewIndexType().toBytes(table.getViewIndexId()); } if (isTenantSpecific) { PName tenantId = connection.getTenantId(); @@ -1347,4 +1347,4 @@ public class UpsertCompiler { return queryPlan.getEstimateInfoTimestamp(); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java index a5287cb..12e09d2 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java @@ -179,7 +179,7 @@ public class WhereOptimizer { // Add unique index ID for shared indexes on views. This ensures // that different indexes don't interleave. if (hasViewIndex) { - byte[] viewIndexBytes = MetaDataUtil.getViewIndexIdDataType().toBytes(table.getViewIndexId()); + byte[] viewIndexBytes = table.getViewIndexType().toBytes(table.getViewIndexId()); KeyRange indexIdKeyRange = KeyRange.getKeyRange(viewIndexBytes); cnf.add(Collections.singletonList(indexIdKeyRange)); pkPos++; http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index e748115..cf5828d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -74,6 +74,7 @@ import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_CONSTANT_BYTE import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_INDEX_ID_BYTES; import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_STATEMENT_BYTES; import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_TYPE_BYTES; +import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_INDEX_ID_DATA_TYPE_BYTES; import static org.apache.phoenix.query.QueryConstants.DIVERGED_VIEW_BASE_COLUMN_COUNT; import static org.apache.phoenix.schema.PTableType.INDEX; import static org.apache.phoenix.schema.PTableType.TABLE; @@ -316,6 +317,10 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso private static final KeyValue MULTI_TENANT_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY, TABLE_FAMILY_BYTES, MULTI_TENANT_BYTES); private static final KeyValue VIEW_TYPE_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY, TABLE_FAMILY_BYTES, VIEW_TYPE_BYTES); private static final KeyValue VIEW_INDEX_ID_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY, TABLE_FAMILY_BYTES, VIEW_INDEX_ID_BYTES); + /** + * A designator for choosing the right type for viewIndex (Short vs Long) to be backward compatible. + * **/ + private static final KeyValue VIEW_INDEX_ID_DATA_TYPE_BYTES_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY, TABLE_FAMILY_BYTES, VIEW_INDEX_ID_DATA_TYPE_BYTES); private static final KeyValue INDEX_TYPE_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY, TABLE_FAMILY_BYTES, INDEX_TYPE_BYTES); private static final KeyValue INDEX_DISABLE_TIMESTAMP_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY, TABLE_FAMILY_BYTES, INDEX_DISABLE_TIMESTAMP_BYTES); private static final KeyValue STORE_NULLS_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY, TABLE_FAMILY_BYTES, STORE_NULLS_BYTES); @@ -349,6 +354,7 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso MULTI_TENANT_KV, VIEW_TYPE_KV, VIEW_INDEX_ID_KV, + VIEW_INDEX_ID_DATA_TYPE_BYTES_KV, INDEX_TYPE_KV, INDEX_DISABLE_TIMESTAMP_KV, STORE_NULLS_KV, @@ -381,6 +387,7 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso private static final int DISABLE_WAL_INDEX = TABLE_KV_COLUMNS.indexOf(DISABLE_WAL_KV); private static final int MULTI_TENANT_INDEX = TABLE_KV_COLUMNS.indexOf(MULTI_TENANT_KV); private static final int VIEW_TYPE_INDEX = TABLE_KV_COLUMNS.indexOf(VIEW_TYPE_KV); + private static final int VIEW_INDEX_ID_DATA_TYPE_INDEX = TABLE_KV_COLUMNS.indexOf(VIEW_INDEX_ID_DATA_TYPE_BYTES_KV); private static final int VIEW_INDEX_ID_INDEX = TABLE_KV_COLUMNS.indexOf(VIEW_INDEX_ID_KV); private static final int INDEX_TYPE_INDEX = TABLE_KV_COLUMNS.indexOf(INDEX_TYPE_KV); private static final int STORE_NULLS_INDEX = TABLE_KV_COLUMNS.indexOf(STORE_NULLS_KV); @@ -1345,8 +1352,8 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso } Cell viewTypeKv = tableKeyValues[VIEW_TYPE_INDEX]; ViewType viewType = viewTypeKv == null ? null : ViewType.fromSerializedValue(viewTypeKv.getValueArray()[viewTypeKv.getValueOffset()]); - Cell viewIndexIdKv = tableKeyValues[VIEW_INDEX_ID_INDEX]; - Short viewIndexId = viewIndexIdKv == null ? null : (Short)MetaDataUtil.getViewIndexIdDataType().getCodec().decodeShort(viewIndexIdKv.getValueArray(), viewIndexIdKv.getValueOffset(), SortOrder.getDefault()); + PDataType viewIndexType = getViewIndexType(tableKeyValues); + Long viewIndexId = getViewIndexId(tableKeyValues, viewIndexType); Cell indexTypeKv = tableKeyValues[INDEX_TYPE_INDEX]; IndexType indexType = indexTypeKv == null ? null : IndexType.fromSerializedValue(indexTypeKv.getValueArray()[indexTypeKv.getValueOffset()]); Cell baseColumnCountKv = tableKeyValues[BASE_COLUMN_COUNT_INDEX]; @@ -1427,10 +1434,35 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso // server while holding this lock is a bad idea and likely to cause contention. return PTableImpl.makePTable(tenantId, schemaName, tableName, tableType, indexState, timeStamp, tableSeqNum, pkName, saltBucketNum, columns, parentSchemaName, parentTableName, indexes, isImmutableRows, physicalTables, defaultFamilyName, - viewStatement, disableWAL, multiTenant, storeNulls, viewType, viewIndexId, indexType, + viewStatement, disableWAL, multiTenant, storeNulls, viewType, viewIndexType, viewIndexId, indexType, rowKeyOrderOptimizable, transactionProvider, updateCacheFrequency, baseColumnCount, indexDisableTimestamp, isNamespaceMapped, autoPartitionSeq, isAppendOnlySchema, storageScheme, encodingScheme, cqCounter, useStatsForParallelization); } + private Long getViewIndexId(Cell[] tableKeyValues, PDataType viewIndexType) { + Cell viewIndexIdKv = tableKeyValues[VIEW_INDEX_ID_INDEX]; + return viewIndexIdKv == null ? null : + decodeViewIndexId(viewIndexIdKv, viewIndexType); + } + + /** + * Returns viewIndexId based on its underlying data type + * + * @param tableKeyValues + * @param viewIndexType + * @return + */ + private Long decodeViewIndexId(Cell viewIndexIdKv, PDataType viewIndexType) { + return viewIndexType.getCodec().decodeLong(viewIndexIdKv.getValueArray(), + viewIndexIdKv.getValueOffset(), SortOrder.getDefault()); + } + + private PDataType getViewIndexType(Cell[] tableKeyValues) { + Cell dataTypeKv = tableKeyValues[VIEW_INDEX_ID_DATA_TYPE_INDEX]; + return dataTypeKv == null ? + MetaDataUtil.getLegacyViewIndexIdDataType() : + PDataType.fromTypeId(PInteger.INSTANCE.getCodec() + .decodeInt(dataTypeKv.getValueArray(), dataTypeKv.getValueOffset(), SortOrder.getDefault())); + } private boolean isQualifierCounterKV(Cell kv) { int cmp = @@ -2147,7 +2179,7 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso cell.getTimestamp(), Type.codeToType(cell.getTypeByte()), bytes); cells.add(viewConstantCell); } - Short indexId = null; + Long indexId = null; if (request.hasAllocateIndexId() && request.getAllocateIndexId()) { String tenantIdStr = tenantIdBytes.length == 0 ? null : Bytes.toString(tenantIdBytes); try (PhoenixConnection connection = QueryUtil.getConnectionOnServer(env.getConfiguration()).unwrap(PhoenixConnection.class)) { @@ -2161,7 +2193,7 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso long sequenceTimestamp = HConstants.LATEST_TIMESTAMP; try { connection.getQueryServices().createSequence(key.getTenantId(), key.getSchemaName(), key.getSequenceName(), - Short.MIN_VALUE, 1, 1, Long.MIN_VALUE, Long.MAX_VALUE, false, sequenceTimestamp); + Long.MIN_VALUE, 1, 1, Long.MIN_VALUE, Long.MAX_VALUE, false, sequenceTimestamp); } catch (SequenceAlreadyExistsException e) { } long[] seqValues = new long[1]; @@ -2172,12 +2204,6 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso throw sqlExceptions[0]; } long seqValue = seqValues[0]; - if (seqValue > Short.MAX_VALUE) { - builder.setReturnCode(MetaDataProtos.MutationCode.TOO_MANY_INDEXES); - builder.setMutationTime(EnvironmentEdgeManager.currentTimeMillis()); - done.run(builder.build()); - return; - } Put tableHeaderPut = MetaDataUtil.getPutOnlyTableHeaderRow(tableMetadata); NavigableMap<byte[], List<Cell>> familyCellMap = tableHeaderPut.getFamilyCellMap(); @@ -2190,7 +2216,7 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso Cell indexIdCell = new KeyValue(cell.getRow(), cell.getFamily(), VIEW_INDEX_ID_BYTES, cell.getTimestamp(), Type.codeToType(cell.getTypeByte()), bytes); cells.add(indexIdCell); - indexId = (short) seqValue; + indexId = seqValue; } } @@ -2269,7 +2295,8 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso long currentTimeStamp = MetaDataUtil.getClientTimeStamp(tableMetadata); builder.setReturnCode(MetaDataProtos.MutationCode.TABLE_NOT_FOUND); if (indexId != null) { - builder.setViewIndexId(indexId); + builder.setViewIndexId(indexId); + builder.setViewIndexType(PLong.INSTANCE.getSqlType()); } builder.setMutationTime(currentTimeStamp); done.run(builder.build()); http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java index 29cf2a3..115d45b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java @@ -38,11 +38,13 @@ import org.apache.phoenix.schema.PName; import org.apache.phoenix.schema.PNameFactory; import org.apache.phoenix.schema.PTable; import org.apache.phoenix.schema.PTableImpl; +import org.apache.phoenix.schema.types.PDataType; import org.apache.phoenix.util.ByteUtil; import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.protobuf.ByteString; +import org.apache.phoenix.util.MetaDataUtil; /** * @@ -170,7 +172,8 @@ public abstract class MetaDataProtocol extends MetaDataService { private PName tableName; private List<PColumn> columns; private List<PName> physicalNames; - private Short viewIndexId; + private PDataType viewIndexType; + private Long viewIndexId; public SharedTableState(PTable table) { this.tenantId = table.getTenantId(); @@ -178,6 +181,7 @@ public abstract class MetaDataProtocol extends MetaDataService { this.tableName = table.getTableName(); this.columns = table.getColumns(); this.physicalNames = table.getPhysicalNames(); + this.viewIndexType = table.getViewIndexType(); this.viewIndexId = table.getViewIndexId(); } @@ -200,7 +204,10 @@ public abstract class MetaDataProtocol extends MetaDataService { return PNameFactory.newName(physicalName.toByteArray()); } }); - this.viewIndexId = (short)sharedTable.getViewIndexId(); + this.viewIndexId = sharedTable.getViewIndexId(); + this.viewIndexType = sharedTable.hasViewIndexType() + ? PDataType.fromTypeId(sharedTable.getViewIndexType()) + : MetaDataUtil.getLegacyViewIndexIdDataType(); } public PName getTenantId() { @@ -223,10 +230,13 @@ public abstract class MetaDataProtocol extends MetaDataService { return physicalNames; } - public Short getViewIndexId() { + public Long getViewIndexId() { return viewIndexId; } - + + public PDataType getViewIndexType() { + return viewIndexType; + } } public static class MetaDataMutationResult { @@ -239,8 +249,8 @@ public abstract class MetaDataProtocol extends MetaDataService { private byte[] familyName; private boolean wasUpdated; private PSchema schema; - private Short viewIndexId; - + private Long viewIndexId; + private PDataType viewIndexType; private List<PFunction> functions = new ArrayList<PFunction>(1); private long autoPartitionNum; @@ -285,9 +295,10 @@ public abstract class MetaDataProtocol extends MetaDataService { this.tableNamesToDelete = tableNamesToDelete; } - public MetaDataMutationResult(MutationCode returnCode, int currentTime, PTable table, int viewIndexId) { + public MetaDataMutationResult(MutationCode returnCode, int currentTime, PTable table, long viewIndexId, PDataType viewIndexType ) { this(returnCode, currentTime, table, Collections.<byte[]> emptyList()); - this.viewIndexId = (short)viewIndexId; + this.viewIndexId = viewIndexId; + this.viewIndexType = viewIndexType; } public MetaDataMutationResult(MutationCode returnCode, long currentTime, PTable table, List<byte[]> tableNamesToDelete, List<SharedTableState> sharedTablesToDelete) { @@ -343,10 +354,14 @@ public abstract class MetaDataProtocol extends MetaDataService { return autoPartitionNum; } - public Short getViewIndexId() { + public Long getViewIndexId() { return viewIndexId; } + public PDataType getViewIndexType() { + return viewIndexType; + } + public static MetaDataMutationResult constructFromProto(MetaDataResponse proto) { MetaDataMutationResult result = new MetaDataMutationResult(); result.returnCode = MutationCode.values()[proto.getReturnCode().ordinal()]; @@ -388,9 +403,13 @@ public abstract class MetaDataProtocol extends MetaDataService { if (proto.hasAutoPartitionNum()) { result.autoPartitionNum = proto.getAutoPartitionNum(); } - if (proto.hasViewIndexId()) { - result.viewIndexId = (short)proto.getViewIndexId(); - } + if (proto.hasViewIndexId()) { + result.viewIndexId = proto.getViewIndexId(); + } + + result.viewIndexType = proto.hasViewIndexType() + ? PDataType.fromTypeId(proto.getViewIndexType()) + : MetaDataUtil.getLegacyViewIndexIdDataType(); return result; } @@ -431,6 +450,7 @@ public abstract class MetaDataProtocol extends MetaDataService { sharedTableStateBuilder.setSchemaName(ByteStringer.wrap(sharedTableState.getSchemaName().getBytes())); sharedTableStateBuilder.setTableName(ByteStringer.wrap(sharedTableState.getTableName().getBytes())); sharedTableStateBuilder.setViewIndexId(sharedTableState.getViewIndexId()); + sharedTableStateBuilder.setViewIndexType(sharedTableState.viewIndexType.getSqlType()); builder.addSharedTablesToDelete(sharedTableStateBuilder.build()); } } @@ -438,9 +458,12 @@ public abstract class MetaDataProtocol extends MetaDataService { builder.setSchema(PSchema.toProto(result.schema)); } builder.setAutoPartitionNum(result.getAutoPartitionNum()); - if (result.getViewIndexId() != null) { - builder.setViewIndexId(result.getViewIndexId()); - } + if (result.getViewIndexId() != null) { + builder.setViewIndexId(result.getViewIndexId()); + } + builder.setViewIndexType(result.getViewIndexType() == null + ? MetaDataUtil.getLegacyViewIndexIdDataType().getSqlType() + : result.getViewIndexType().getSqlType()); } return builder.build(); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/9125d203/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java index 744dc7e..360dd77 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/MetaDataProtos.java @@ -369,15 +369,25 @@ public final class MetaDataProtos { */ com.google.protobuf.ByteString getPhysicalNames(int index); - // required int32 viewIndexId = 6; + // required int64 viewIndexId = 6; /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ boolean hasViewIndexId(); /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ - int getViewIndexId(); + long getViewIndexId(); + + // optional int32 viewIndexType = 7 [default = 5]; + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + boolean hasViewIndexType(); + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + int getViewIndexType(); } /** * Protobuf type {@code SharedTableState} @@ -463,7 +473,12 @@ public final class MetaDataProtos { } case 48: { bitField0_ |= 0x00000008; - viewIndexId_ = input.readInt32(); + viewIndexId_ = input.readInt64(); + break; + } + case 56: { + bitField0_ |= 0x00000010; + viewIndexType_ = input.readInt32(); break; } } @@ -619,29 +634,46 @@ public final class MetaDataProtos { return physicalNames_.get(index); } - // required int32 viewIndexId = 6; + // required int64 viewIndexId = 6; public static final int VIEWINDEXID_FIELD_NUMBER = 6; - private int viewIndexId_; + private long viewIndexId_; /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ public boolean hasViewIndexId() { return ((bitField0_ & 0x00000008) == 0x00000008); } /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ - public int getViewIndexId() { + public long getViewIndexId() { return viewIndexId_; } + // optional int32 viewIndexType = 7 [default = 5]; + public static final int VIEWINDEXTYPE_FIELD_NUMBER = 7; + private int viewIndexType_; + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + public boolean hasViewIndexType() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + public int getViewIndexType() { + return viewIndexType_; + } + private void initFields() { tenantId_ = com.google.protobuf.ByteString.EMPTY; schemaName_ = com.google.protobuf.ByteString.EMPTY; tableName_ = com.google.protobuf.ByteString.EMPTY; columns_ = java.util.Collections.emptyList(); physicalNames_ = java.util.Collections.emptyList(); - viewIndexId_ = 0; + viewIndexId_ = 0L; + viewIndexType_ = 5; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -689,7 +721,10 @@ public final class MetaDataProtos { output.writeBytes(5, physicalNames_.get(i)); } if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeInt32(6, viewIndexId_); + output.writeInt64(6, viewIndexId_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeInt32(7, viewIndexType_); } getUnknownFields().writeTo(output); } @@ -727,7 +762,11 @@ public final class MetaDataProtos { } if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeInt32Size(6, viewIndexId_); + .computeInt64Size(6, viewIndexId_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(7, viewIndexType_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; @@ -776,6 +815,11 @@ public final class MetaDataProtos { result = result && (getViewIndexId() == other.getViewIndexId()); } + result = result && (hasViewIndexType() == other.hasViewIndexType()); + if (hasViewIndexType()) { + result = result && (getViewIndexType() + == other.getViewIndexType()); + } result = result && getUnknownFields().equals(other.getUnknownFields()); return result; @@ -811,7 +855,11 @@ public final class MetaDataProtos { } if (hasViewIndexId()) { hash = (37 * hash) + VIEWINDEXID_FIELD_NUMBER; - hash = (53 * hash) + getViewIndexId(); + hash = (53 * hash) + hashLong(getViewIndexId()); + } + if (hasViewIndexType()) { + hash = (37 * hash) + VIEWINDEXTYPE_FIELD_NUMBER; + hash = (53 * hash) + getViewIndexType(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; @@ -937,8 +985,10 @@ public final class MetaDataProtos { } physicalNames_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000010); - viewIndexId_ = 0; + viewIndexId_ = 0L; bitField0_ = (bitField0_ & ~0x00000020); + viewIndexType_ = 5; + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -997,6 +1047,10 @@ public final class MetaDataProtos { to_bitField0_ |= 0x00000008; } result.viewIndexId_ = viewIndexId_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000010; + } + result.viewIndexType_ = viewIndexType_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -1061,6 +1115,9 @@ public final class MetaDataProtos { if (other.hasViewIndexId()) { setViewIndexId(other.getViewIndexId()); } + if (other.hasViewIndexType()) { + setViewIndexType(other.getViewIndexType()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -1526,35 +1583,68 @@ public final class MetaDataProtos { return this; } - // required int32 viewIndexId = 6; - private int viewIndexId_ ; + // required int64 viewIndexId = 6; + private long viewIndexId_ ; /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ public boolean hasViewIndexId() { return ((bitField0_ & 0x00000020) == 0x00000020); } /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ - public int getViewIndexId() { + public long getViewIndexId() { return viewIndexId_; } /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ - public Builder setViewIndexId(int value) { + public Builder setViewIndexId(long value) { bitField0_ |= 0x00000020; viewIndexId_ = value; onChanged(); return this; } /** - * <code>required int32 viewIndexId = 6;</code> + * <code>required int64 viewIndexId = 6;</code> */ public Builder clearViewIndexId() { bitField0_ = (bitField0_ & ~0x00000020); - viewIndexId_ = 0; + viewIndexId_ = 0L; + onChanged(); + return this; + } + + // optional int32 viewIndexType = 7 [default = 5]; + private int viewIndexType_ = 5; + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + public boolean hasViewIndexType() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + public int getViewIndexType() { + return viewIndexType_; + } + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + public Builder setViewIndexType(int value) { + bitField0_ |= 0x00000040; + viewIndexType_ = value; + onChanged(); + return this; + } + /** + * <code>optional int32 viewIndexType = 7 [default = 5];</code> + */ + public Builder clearViewIndexType() { + bitField0_ = (bitField0_ & ~0x00000040); + viewIndexType_ = 5; onChanged(); return this; } @@ -1725,15 +1815,25 @@ public final class MetaDataProtos { */ long getAutoPartitionNum(); - // optional int32 viewIndexId = 12; + // optional int64 viewIndexId = 12; /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ boolean hasViewIndexId(); /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ - int getViewIndexId(); + long getViewIndexId(); + + // optional int32 viewIndexType = 13 [default = 5]; + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + boolean hasViewIndexType(); + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + int getViewIndexType(); } /** * Protobuf type {@code MetaDataResponse} @@ -1874,7 +1974,12 @@ public final class MetaDataProtos { } case 96: { bitField0_ |= 0x00000100; - viewIndexId_ = input.readInt32(); + viewIndexId_ = input.readInt64(); + break; + } + case 104: { + bitField0_ |= 0x00000200; + viewIndexType_ = input.readInt32(); break; } } @@ -2161,22 +2266,38 @@ public final class MetaDataProtos { return autoPartitionNum_; } - // optional int32 viewIndexId = 12; + // optional int64 viewIndexId = 12; public static final int VIEWINDEXID_FIELD_NUMBER = 12; - private int viewIndexId_; + private long viewIndexId_; /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ public boolean hasViewIndexId() { return ((bitField0_ & 0x00000100) == 0x00000100); } /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ - public int getViewIndexId() { + public long getViewIndexId() { return viewIndexId_; } + // optional int32 viewIndexType = 13 [default = 5]; + public static final int VIEWINDEXTYPE_FIELD_NUMBER = 13; + private int viewIndexType_; + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + public boolean hasViewIndexType() { + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + public int getViewIndexType() { + return viewIndexType_; + } + private void initFields() { returnCode_ = org.apache.phoenix.coprocessor.generated.MetaDataProtos.MutationCode.TABLE_ALREADY_EXISTS; mutationTime_ = 0L; @@ -2189,7 +2310,8 @@ public final class MetaDataProtos { sharedTablesToDelete_ = java.util.Collections.emptyList(); schema_ = org.apache.phoenix.coprocessor.generated.PSchemaProtos.PSchema.getDefaultInstance(); autoPartitionNum_ = 0L; - viewIndexId_ = 0; + viewIndexId_ = 0L; + viewIndexType_ = 5; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -2261,7 +2383,10 @@ public final class MetaDataProtos { output.writeInt64(11, autoPartitionNum_); } if (((bitField0_ & 0x00000100) == 0x00000100)) { - output.writeInt32(12, viewIndexId_); + output.writeInt64(12, viewIndexId_); + } + if (((bitField0_ & 0x00000200) == 0x00000200)) { + output.writeInt32(13, viewIndexType_); } getUnknownFields().writeTo(output); } @@ -2323,7 +2448,11 @@ public final class MetaDataProtos { } if (((bitField0_ & 0x00000100) == 0x00000100)) { size += com.google.protobuf.CodedOutputStream - .computeInt32Size(12, viewIndexId_); + .computeInt64Size(12, viewIndexId_); + } + if (((bitField0_ & 0x00000200) == 0x00000200)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(13, viewIndexType_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; @@ -2399,6 +2528,11 @@ public final class MetaDataProtos { result = result && (getViewIndexId() == other.getViewIndexId()); } + result = result && (hasViewIndexType() == other.hasViewIndexType()); + if (hasViewIndexType()) { + result = result && (getViewIndexType() + == other.getViewIndexType()); + } result = result && getUnknownFields().equals(other.getUnknownFields()); return result; @@ -2458,7 +2592,11 @@ public final class MetaDataProtos { } if (hasViewIndexId()) { hash = (37 * hash) + VIEWINDEXID_FIELD_NUMBER; - hash = (53 * hash) + getViewIndexId(); + hash = (53 * hash) + hashLong(getViewIndexId()); + } + if (hasViewIndexType()) { + hash = (37 * hash) + VIEWINDEXTYPE_FIELD_NUMBER; + hash = (53 * hash) + getViewIndexType(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; @@ -2611,8 +2749,10 @@ public final class MetaDataProtos { bitField0_ = (bitField0_ & ~0x00000200); autoPartitionNum_ = 0L; bitField0_ = (bitField0_ & ~0x00000400); - viewIndexId_ = 0; + viewIndexId_ = 0L; bitField0_ = (bitField0_ & ~0x00000800); + viewIndexType_ = 5; + bitField0_ = (bitField0_ & ~0x00001000); return this; } @@ -2708,6 +2848,10 @@ public final class MetaDataProtos { to_bitField0_ |= 0x00000100; } result.viewIndexId_ = viewIndexId_; + if (((from_bitField0_ & 0x00001000) == 0x00001000)) { + to_bitField0_ |= 0x00000200; + } + result.viewIndexType_ = viewIndexType_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -2813,6 +2957,9 @@ public final class MetaDataProtos { if (other.hasViewIndexId()) { setViewIndexId(other.getViewIndexId()); } + if (other.hasViewIndexType()) { + setViewIndexType(other.getViewIndexType()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -3860,35 +4007,68 @@ public final class MetaDataProtos { return this; } - // optional int32 viewIndexId = 12; - private int viewIndexId_ ; + // optional int64 viewIndexId = 12; + private long viewIndexId_ ; /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ public boolean hasViewIndexId() { return ((bitField0_ & 0x00000800) == 0x00000800); } /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ - public int getViewIndexId() { + public long getViewIndexId() { return viewIndexId_; } /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ - public Builder setViewIndexId(int value) { + public Builder setViewIndexId(long value) { bitField0_ |= 0x00000800; viewIndexId_ = value; onChanged(); return this; } /** - * <code>optional int32 viewIndexId = 12;</code> + * <code>optional int64 viewIndexId = 12;</code> */ public Builder clearViewIndexId() { bitField0_ = (bitField0_ & ~0x00000800); - viewIndexId_ = 0; + viewIndexId_ = 0L; + onChanged(); + return this; + } + + // optional int32 viewIndexType = 13 [default = 5]; + private int viewIndexType_ = 5; + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + public boolean hasViewIndexType() { + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + public int getViewIndexType() { + return viewIndexType_; + } + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + public Builder setViewIndexType(int value) { + bitField0_ |= 0x00001000; + viewIndexType_ = value; + onChanged(); + return this; + } + /** + * <code>optional int32 viewIndexType = 13 [default = 5];</code> + */ + public Builder clearViewIndexType() { + bitField0_ = (bitField0_ & ~0x00001000); + viewIndexType_ = 5; onChanged(); return this; } @@ -17647,104 +17827,105 @@ public final class MetaDataProtos { static { java.lang.String[] descriptorData = { "\n\025MetaDataService.proto\032\014PTable.proto\032\017P" + - "Function.proto\032\rPSchema.proto\"\222\001\n\020Shared" + + "Function.proto\032\rPSchema.proto\"\254\001\n\020Shared" + "TableState\022\020\n\010tenantId\030\001 \001(\014\022\022\n\nschemaNa" + "me\030\002 \002(\014\022\021\n\ttableName\030\003 \002(\014\022\031\n\007columns\030\004" + " \003(\0132\010.PColumn\022\025\n\rphysicalNames\030\005 \003(\014\022\023\n" + - "\013viewIndexId\030\006 \002(\005\"\321\002\n\020MetaDataResponse\022" + - "!\n\nreturnCode\030\001 \001(\0162\r.MutationCode\022\024\n\014mu" + - "tationTime\030\002 \001(\003\022\026\n\005table\030\003 \001(\0132\007.PTable" + - "\022\026\n\016tablesToDelete\030\004 \003(\014\022\022\n\ncolumnName\030\005" + - " \001(\014\022\022\n\nfamilyName\030\006 \001(\014\022\024\n\014functionName", - "\030\007 \001(\014\022\034\n\010function\030\010 \003(\0132\n.PFunction\022/\n\024" + - "sharedTablesToDelete\030\t \003(\0132\021.SharedTable" + - "State\022\030\n\006schema\030\n \001(\0132\010.PSchema\022\030\n\020autoP" + - "artitionNum\030\013 \001(\003\022\023\n\013viewIndexId\030\014 \001(\005\"\364" + - "\001\n\017GetTableRequest\022\020\n\010tenantId\030\001 \002(\014\022\022\n\n" + - "schemaName\030\002 \002(\014\022\021\n\ttableName\030\003 \002(\014\022\026\n\016t" + - "ableTimestamp\030\004 \002(\003\022\027\n\017clientTimestamp\030\005" + - " \002(\003\022\025\n\rclientVersion\030\006 \001(\005\022\037\n\027skipAddin" + - "gParentColumns\030\007 \001(\010\022\031\n\021skipAddingIndexe" + - "s\030\010 \001(\010\022$\n\023lockedAncestorTable\030\t \001(\0132\007.P", - "Table\"\212\001\n\023GetFunctionsRequest\022\020\n\010tenantI" + - "d\030\001 \002(\014\022\025\n\rfunctionNames\030\002 \003(\014\022\032\n\022functi" + - "onTimestamps\030\003 \003(\003\022\027\n\017clientTimestamp\030\004 " + - "\002(\003\022\025\n\rclientVersion\030\005 \001(\005\"V\n\020GetSchemaR" + - "equest\022\022\n\nschemaName\030\001 \002(\t\022\027\n\017clientTime" + - "stamp\030\002 \002(\003\022\025\n\rclientVersion\030\003 \002(\005\"d\n\022Cr" + - "eateTableRequest\022\036\n\026tableMetadataMutatio" + - "ns\030\001 \003(\014\022\025\n\rclientVersion\030\002 \001(\005\022\027\n\017alloc" + - "ateIndexId\030\003 \001(\010\"r\n\025CreateFunctionReques" + - "t\022\036\n\026tableMetadataMutations\030\001 \003(\014\022\021\n\ttem", - "porary\030\002 \002(\010\022\017\n\007replace\030\003 \001(\010\022\025\n\rclientV" + - "ersion\030\004 \001(\005\"`\n\023CreateSchemaRequest\022\036\n\026t" + - "ableMetadataMutations\030\001 \003(\014\022\022\n\nschemaNam" + - "e\030\002 \002(\t\022\025\n\rclientVersion\030\003 \002(\005\"\216\001\n\020DropT" + - "ableRequest\022\036\n\026tableMetadataMutations\030\001 " + - "\003(\014\022\021\n\ttableType\030\002 \002(\t\022\017\n\007cascade\030\003 \001(\010\022" + - "\025\n\rclientVersion\030\004 \001(\005\022\037\n\027skipAddingPare" + - "ntColumns\030\005 \001(\010\"_\n\021DropSchemaRequest\022\037\n\027" + - "schemaMetadataMutations\030\001 \003(\014\022\022\n\nschemaN" + - "ame\030\002 \002(\t\022\025\n\rclientVersion\030\003 \002(\005\"I\n\020AddC", - "olumnRequest\022\036\n\026tableMetadataMutations\030\001" + - " \003(\014\022\025\n\rclientVersion\030\002 \001(\005\"J\n\021DropColum" + - "nRequest\022\036\n\026tableMetadataMutations\030\001 \003(\014" + - "\022\025\n\rclientVersion\030\002 \001(\005\"^\n\023DropFunctionR" + - "equest\022\036\n\026tableMetadataMutations\030\001 \003(\014\022\020" + - "\n\010ifExists\030\002 \001(\010\022\025\n\rclientVersion\030\003 \001(\005\"" + - "P\n\027UpdateIndexStateRequest\022\036\n\026tableMetad" + - "ataMutations\030\001 \003(\014\022\025\n\rclientVersion\030\002 \001(" + - "\005\"*\n\021ClearCacheRequest\022\025\n\rclientVersion\030" + - "\001 \001(\005\"*\n\022ClearCacheResponse\022\024\n\014unfreedBy", - "tes\030\001 \001(\003\"*\n\021GetVersionRequest\022\025\n\rclient" + - "Version\030\001 \001(\005\"E\n\022GetVersionResponse\022\017\n\007v" + - "ersion\030\001 \002(\003\022\036\n\026systemCatalogTimestamp\030\002" + - " \001(\003\"\205\001\n\032ClearTableFromCacheRequest\022\020\n\010t" + - "enantId\030\001 \002(\014\022\022\n\nschemaName\030\002 \002(\014\022\021\n\ttab" + - "leName\030\003 \002(\014\022\027\n\017clientTimestamp\030\004 \002(\003\022\025\n" + - "\rclientVersion\030\005 \001(\005\"\035\n\033ClearTableFromCa" + - "cheResponse*\271\005\n\014MutationCode\022\030\n\024TABLE_AL" + - "READY_EXISTS\020\000\022\023\n\017TABLE_NOT_FOUND\020\001\022\024\n\020C" + - "OLUMN_NOT_FOUND\020\002\022\031\n\025COLUMN_ALREADY_EXIS", - "TS\020\003\022\035\n\031CONCURRENT_TABLE_MUTATION\020\004\022\027\n\023T" + - "ABLE_NOT_IN_REGION\020\005\022\025\n\021NEWER_TABLE_FOUN" + - "D\020\006\022\034\n\030UNALLOWED_TABLE_MUTATION\020\007\022\021\n\rNO_" + - "PK_COLUMNS\020\010\022\032\n\026PARENT_TABLE_NOT_FOUND\020\t" + - "\022\033\n\027FUNCTION_ALREADY_EXISTS\020\n\022\026\n\022FUNCTIO" + - "N_NOT_FOUND\020\013\022\030\n\024NEWER_FUNCTION_FOUND\020\014\022" + - "\032\n\026FUNCTION_NOT_IN_REGION\020\r\022\031\n\025SCHEMA_AL" + - "READY_EXISTS\020\016\022\026\n\022NEWER_SCHEMA_FOUND\020\017\022\024" + - "\n\020SCHEMA_NOT_FOUND\020\020\022\030\n\024SCHEMA_NOT_IN_RE" + - "GION\020\021\022\032\n\026TABLES_EXIST_ON_SCHEMA\020\022\022\035\n\031UN", - "ALLOWED_SCHEMA_MUTATION\020\023\022%\n!AUTO_PARTIT" + - "ION_SEQUENCE_NOT_FOUND\020\024\022#\n\037CANNOT_COERC" + - "E_AUTO_PARTITION_ID\020\025\022\024\n\020TOO_MANY_INDEXE" + - "S\020\026\022\037\n\033UNABLE_TO_CREATE_CHILD_LINK\020\027\022!\n\035" + - "UNABLE_TO_UPDATE_PARENT_TABLE\020\0302\345\006\n\017Meta" + - "DataService\022/\n\010getTable\022\020.GetTableReques" + - "t\032\021.MetaDataResponse\0227\n\014getFunctions\022\024.G" + - "etFunctionsRequest\032\021.MetaDataResponse\0221\n" + - "\tgetSchema\022\021.GetSchemaRequest\032\021.MetaData" + - "Response\0225\n\013createTable\022\023.CreateTableReq", - "uest\032\021.MetaDataResponse\022;\n\016createFunctio" + - "n\022\026.CreateFunctionRequest\032\021.MetaDataResp" + - "onse\0227\n\014createSchema\022\024.CreateSchemaReque" + - "st\032\021.MetaDataResponse\0221\n\tdropTable\022\021.Dro" + - "pTableRequest\032\021.MetaDataResponse\0223\n\ndrop" + - "Schema\022\022.DropSchemaRequest\032\021.MetaDataRes" + - "ponse\0227\n\014dropFunction\022\024.DropFunctionRequ" + - "est\032\021.MetaDataResponse\0221\n\taddColumn\022\021.Ad" + - "dColumnRequest\032\021.MetaDataResponse\0223\n\ndro" + - "pColumn\022\022.DropColumnRequest\032\021.MetaDataRe", - "sponse\022?\n\020updateIndexState\022\030.UpdateIndex" + - "StateRequest\032\021.MetaDataResponse\0225\n\nclear" + - "Cache\022\022.ClearCacheRequest\032\023.ClearCacheRe" + - "sponse\0225\n\ngetVersion\022\022.GetVersionRequest" + - "\032\023.GetVersionResponse\022P\n\023clearTableFromC" + - "ache\022\033.ClearTableFromCacheRequest\032\034.Clea" + - "rTableFromCacheResponseBB\n(org.apache.ph" + - "oenix.coprocessor.generatedB\016MetaDataPro" + - "tosH\001\210\001\001\240\001\001" + "\013viewIndexId\030\006 \002(\003\022\030\n\rviewIndexType\030\007 \001(" + + "\005:\0015\"\353\002\n\020MetaDataResponse\022!\n\nreturnCode\030" + + "\001 \001(\0162\r.MutationCode\022\024\n\014mutationTime\030\002 \001" + + "(\003\022\026\n\005table\030\003 \001(\0132\007.PTable\022\026\n\016tablesToDe" + + "lete\030\004 \003(\014\022\022\n\ncolumnName\030\005 \001(\014\022\022\n\nfamily", + "Name\030\006 \001(\014\022\024\n\014functionName\030\007 \001(\014\022\034\n\010func" + + "tion\030\010 \003(\0132\n.PFunction\022/\n\024sharedTablesTo" + + "Delete\030\t \003(\0132\021.SharedTableState\022\030\n\006schem" + + "a\030\n \001(\0132\010.PSchema\022\030\n\020autoPartitionNum\030\013 " + + "\001(\003\022\023\n\013viewIndexId\030\014 \001(\003\022\030\n\rviewIndexTyp" + + "e\030\r \001(\005:\0015\"\364\001\n\017GetTableRequest\022\020\n\010tenant" + + "Id\030\001 \002(\014\022\022\n\nschemaName\030\002 \002(\014\022\021\n\ttableNam" + + "e\030\003 \002(\014\022\026\n\016tableTimestamp\030\004 \002(\003\022\027\n\017clien" + + "tTimestamp\030\005 \002(\003\022\025\n\rclientVersion\030\006 \001(\005\022" + + "\037\n\027skipAddingParentColumns\030\007 \001(\010\022\031\n\021skip", + "AddingIndexes\030\010 \001(\010\022$\n\023lockedAncestorTab" + + "le\030\t \001(\0132\007.PTable\"\212\001\n\023GetFunctionsReques" + + "t\022\020\n\010tenantId\030\001 \002(\014\022\025\n\rfunctionNames\030\002 \003" + + "(\014\022\032\n\022functionTimestamps\030\003 \003(\003\022\027\n\017client" + + "Timestamp\030\004 \002(\003\022\025\n\rclientVersion\030\005 \001(\005\"V" + + "\n\020GetSchemaRequest\022\022\n\nschemaName\030\001 \002(\t\022\027" + + "\n\017clientTimestamp\030\002 \002(\003\022\025\n\rclientVersion" + + "\030\003 \002(\005\"d\n\022CreateTableRequest\022\036\n\026tableMet" + + "adataMutations\030\001 \003(\014\022\025\n\rclientVersion\030\002 " + + "\001(\005\022\027\n\017allocateIndexId\030\003 \001(\010\"r\n\025CreateFu", + "nctionRequest\022\036\n\026tableMetadataMutations\030" + + "\001 \003(\014\022\021\n\ttemporary\030\002 \002(\010\022\017\n\007replace\030\003 \001(" + + "\010\022\025\n\rclientVersion\030\004 \001(\005\"`\n\023CreateSchema" + + "Request\022\036\n\026tableMetadataMutations\030\001 \003(\014\022" + + "\022\n\nschemaName\030\002 \002(\t\022\025\n\rclientVersion\030\003 \002" + + "(\005\"\216\001\n\020DropTableRequest\022\036\n\026tableMetadata" + + "Mutations\030\001 \003(\014\022\021\n\ttableType\030\002 \002(\t\022\017\n\007ca" + + "scade\030\003 \001(\010\022\025\n\rclientVersion\030\004 \001(\005\022\037\n\027sk" + + "ipAddingParentColumns\030\005 \001(\010\"_\n\021DropSchem" + + "aRequest\022\037\n\027schemaMetadataMutations\030\001 \003(", + "\014\022\022\n\nschemaName\030\002 \002(\t\022\025\n\rclientVersion\030\003" + + " \002(\005\"I\n\020AddColumnRequest\022\036\n\026tableMetadat" + + "aMutations\030\001 \003(\014\022\025\n\rclientVersion\030\002 \001(\005\"" + + "J\n\021DropColumnRequest\022\036\n\026tableMetadataMut" + + "ations\030\001 \003(\014\022\025\n\rclientVersion\030\002 \001(\005\"^\n\023D" + + "ropFunctionRequest\022\036\n\026tableMetadataMutat" + + "ions\030\001 \003(\014\022\020\n\010ifExists\030\002 \001(\010\022\025\n\rclientVe" + + "rsion\030\003 \001(\005\"P\n\027UpdateIndexStateRequest\022\036" + + "\n\026tableMetadataMutations\030\001 \003(\014\022\025\n\rclient" + + "Version\030\002 \001(\005\"*\n\021ClearCacheRequest\022\025\n\rcl", + "ientVersion\030\001 \001(\005\"*\n\022ClearCacheResponse\022" + + "\024\n\014unfreedBytes\030\001 \001(\003\"*\n\021GetVersionReque" + + "st\022\025\n\rclientVersion\030\001 \001(\005\"E\n\022GetVersionR" + + "esponse\022\017\n\007version\030\001 \002(\003\022\036\n\026systemCatalo" + + "gTimestamp\030\002 \001(\003\"\205\001\n\032ClearTableFromCache" + + "Request\022\020\n\010tenantId\030\001 \002(\014\022\022\n\nschemaName\030" + + "\002 \002(\014\022\021\n\ttableName\030\003 \002(\014\022\027\n\017clientTimest" + + "amp\030\004 \002(\003\022\025\n\rclientVersion\030\005 \001(\005\"\035\n\033Clea" + + "rTableFromCacheResponse*\271\005\n\014MutationCode" + + "\022\030\n\024TABLE_ALREADY_EXISTS\020\000\022\023\n\017TABLE_NOT_", + "FOUND\020\001\022\024\n\020COLUMN_NOT_FOUND\020\002\022\031\n\025COLUMN_" + + "ALREADY_EXISTS\020\003\022\035\n\031CONCURRENT_TABLE_MUT" + + "ATION\020\004\022\027\n\023TABLE_NOT_IN_REGION\020\005\022\025\n\021NEWE" + + "R_TABLE_FOUND\020\006\022\034\n\030UNALLOWED_TABLE_MUTAT" + + "ION\020\007\022\021\n\rNO_PK_COLUMNS\020\010\022\032\n\026PARENT_TABLE" + + "_NOT_FOUND\020\t\022\033\n\027FUNCTION_ALREADY_EXISTS\020" + + "\n\022\026\n\022FUNCTION_NOT_FOUND\020\013\022\030\n\024NEWER_FUNCT" + + "ION_FOUND\020\014\022\032\n\026FUNCTION_NOT_IN_REGION\020\r\022" + + "\031\n\025SCHEMA_ALREADY_EXISTS\020\016\022\026\n\022NEWER_SCHE" + + "MA_FOUND\020\017\022\024\n\020SCHEMA_NOT_FOUND\020\020\022\030\n\024SCHE", + "MA_NOT_IN_REGION\020\021\022\032\n\026TABLES_EXIST_ON_SC" + + "HEMA\020\022\022\035\n\031UNALLOWED_SCHEMA_MUTATION\020\023\022%\n" + + "!AUTO_PARTITION_SEQUENCE_NOT_FOUND\020\024\022#\n\037" + + "CANNOT_COERCE_AUTO_PARTITION_ID\020\025\022\024\n\020TOO" + + "_MANY_INDEXES\020\026\022\037\n\033UNABLE_TO_CREATE_CHIL" + + "D_LINK\020\027\022!\n\035UNABLE_TO_UPDATE_PARENT_TABL" + + "E\020\0302\345\006\n\017MetaDataService\022/\n\010getTable\022\020.Ge" + + "tTableRequest\032\021.MetaDataResponse\0227\n\014getF" + + "unctions\022\024.GetFunctionsRequest\032\021.MetaDat" + + "aResponse\0221\n\tgetSchema\022\021.GetSchemaReques", + "t\032\021.MetaDataResponse\0225\n\013createTable\022\023.Cr" + + "eateTableRequest\032\021.MetaDataResponse\022;\n\016c" + + "reateFunction\022\026.CreateFunctionRequest\032\021." + + "MetaDataResponse\0227\n\014createSchema\022\024.Creat" + + "eSchemaRequest\032\021.MetaDataResponse\0221\n\tdro" + + "pTable\022\021.DropTableRequest\032\021.MetaDataResp" + + "onse\0223\n\ndropSchema\022\022.DropSchemaRequest\032\021" + + ".MetaDataResponse\0227\n\014dropFunction\022\024.Drop" + + "FunctionRequest\032\021.MetaDataResponse\0221\n\tad" + + "dColumn\022\021.AddColumnRequest\032\021.MetaDataRes", + "ponse\0223\n\ndropColumn\022\022.DropColumnRequest\032" + + "\021.MetaDataResponse\022?\n\020updateIndexState\022\030" + + ".UpdateIndexStateRequest\032\021.MetaDataRespo" + + "nse\0225\n\nclearCache\022\022.ClearCacheRequest\032\023." + + "ClearCacheResponse\0225\n\ngetVersion\022\022.GetVe" + + "rsionRequest\032\023.GetVersionResponse\022P\n\023cle" + + "arTableFromCache\022\033.ClearTableFromCacheRe" + + "quest\032\034.ClearTableFromCacheResponseBB\n(o" + + "rg.apache.phoenix.coprocessor.generatedB" + + "\016MetaDataProtosH\001\210\001\001\240\001\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -17756,13 +17937,13 @@ public final class MetaDataProtos { internal_static_SharedTableState_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_SharedTableState_descriptor, - new java.lang.String[] { "TenantId", "SchemaName", "TableName", "Columns", "PhysicalNames", "ViewIndexId", }); + new java.lang.String[] { "TenantId", "SchemaName", "TableName", "Columns", "PhysicalNames", "ViewIndexId", "ViewIndexType", }); internal_static_MetaDataResponse_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_MetaDataResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_MetaDataResponse_descriptor, - new java.lang.String[] { "ReturnCode", "MutationTime", "Table", "TablesToDelete", "ColumnName", "FamilyName", "FunctionName", "Function", "SharedTablesToDelete", "Schema", "AutoPartitionNum", "ViewIndexId", }); + new java.lang.String[] { "ReturnCode", "MutationTime", "Table", "TablesToDelete", "ColumnName", "FamilyName", "FunctionName", "Function", "SharedTablesToDelete", "Schema", "AutoPartitionNum", "ViewIndexId", "ViewIndexType", }); internal_static_GetTableRequest_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_GetTableRequest_fieldAccessorTable = new