private PTable modifyIndexStateForOldClient(int clientVersion, PTable table) throws SQLException { if (table == null) { return table; } // PHOENIX-5073 Sets the index state based on the client version in case of old clients. // If client is not yet up to 4.12, then translate PENDING_ACTIVE to ACTIVE (as would have // been the value in those versions) since the client won't have this index state in its // enum. if (table.getIndexState() == PIndexState.PENDING_ACTIVE && clientVersion < MetaDataProtocol.MIN_PENDING_ACTIVE_INDEX) { table = PTableImpl.builderWithColumns(table, PTableImpl.getColumnsToClone(table)) .setState(PIndexState.ACTIVE).build(); } // If client is not yet up to 4.14, then translate PENDING_DISABLE to DISABLE // since the client won't have this index state in its enum. if (table.getIndexState() == PIndexState.PENDING_DISABLE && clientVersion < MetaDataProtocol.MIN_PENDING_DISABLE_INDEX) { // note: for older clients, we have to rely on the rebuilder to transition // PENDING_DISABLE -> DISABLE table = PTableImpl.builderWithColumns(table, PTableImpl.getColumnsToClone(table)) .setState(PIndexState.DISABLE).build(); } return table; }
@Override public MetaDataMutationResult updateIndexState(List<Mutation> tableMetadata, String parentTableName) throws SQLException { byte[][] rowKeyMetadata = new byte[3][]; SchemaUtil.getVarChars(tableMetadata.get(0).getRow(), rowKeyMetadata); Mutation m = MetaDataUtil.getTableHeaderRow(tableMetadata); ImmutableBytesWritable ptr = new ImmutableBytesWritable(); if (!MetaDataUtil.getMutationValue(m, INDEX_STATE_BYTES, kvBuilder, ptr)) { throw new IllegalStateException(); } PIndexState newState = PIndexState.fromSerializedValue(ptr.get()[ptr.getOffset()]); byte[] tenantIdBytes = rowKeyMetadata[PhoenixDatabaseMetaData.TENANT_ID_INDEX]; String schemaName = Bytes.toString(rowKeyMetadata[PhoenixDatabaseMetaData.SCHEMA_NAME_INDEX]); String indexName = Bytes.toString(rowKeyMetadata[PhoenixDatabaseMetaData.TABLE_NAME_INDEX]); String indexTableName = SchemaUtil.getTableName(schemaName, indexName); PName tenantId = tenantIdBytes.length == 0 ? null : PNameFactory.newName(tenantIdBytes); PTable index = metaData.getTableRef(new PTableKey(tenantId, indexTableName)).getTable(); index = PTableImpl.builderWithColumns(index, getColumnsToClone(index)) .setState(newState == PIndexState.USABLE ? PIndexState.ACTIVE : newState == PIndexState.UNUSABLE ? PIndexState.INACTIVE : newState) .build(); return new MetaDataMutationResult(MutationCode.TABLE_ALREADY_EXISTS, 0, index); }
for (PColumn column : PTableImpl.getColumnsToClone(view)) { boolean isViewReferenced = isViewColumnReferencedToBe.get(column.getPosition()); if ( (visitor.isUpdatable() || view.getPKColumns().get(MetaDataUtil.getAutoPartitionColIndex(view)).equals(column))
PTableImpl.Builder parentTableBuilder = PTableImpl.builderWithColumns(parentTableRef.getTable(), getColumnsToClone(parentTableRef.getTable())) .setIndexes(newIndexes == null ? Collections.emptyList() : newIndexes); if (tableTimeStamp != HConstants.LATEST_TIMESTAMP) {
List<PColumn> currAncestorTableCols = PTableImpl.getColumnsToClone(pTable); if (currAncestorTableCols != null) {
table = PTableImpl.builderWithColumns(table, getColumnsToClone(table)) .setIndexes(indexes == null ? Collections.emptyList() : indexes) .build();
netGain -= oldParentRef.getEstimatedSize(); newParentTable = PTableImpl.builderWithColumns(oldParentRef.getTable(), getColumnsToClone(oldParentRef.getTable())) .setIndexes(newIndexes) .setTimeStamp(table.getTimeStamp())
indexesToAdd.add(index); } else { indexesToAdd.add(PTableImpl.builderWithColumns(index, getColumnsToClone(index)) .setTableName(modifiedIndexName) .setViewStatement(viewStatement) PTable allIndexesTable = PTableImpl.builderWithColumns(view, getColumnsToClone(view)) .setIndexes(indexesToAdd == null ? Collections.emptyList() : indexesToAdd) .build();
try { writeToTable = PTableImpl.builderWithColumns(projectedTable, getColumnsToClone(projectedTable)) .setRowKeyOrderOptimizable(true) .build();
@Override public MetaDataMutationResult updateIndexState(List<Mutation> tableMetadata, String parentTableName) throws SQLException { byte[][] rowKeyMetadata = new byte[3][]; SchemaUtil.getVarChars(tableMetadata.get(0).getRow(), rowKeyMetadata); Mutation m = MetaDataUtil.getTableHeaderRow(tableMetadata); ImmutableBytesWritable ptr = new ImmutableBytesWritable(); if (!MetaDataUtil.getMutationValue(m, INDEX_STATE_BYTES, kvBuilder, ptr)) { throw new IllegalStateException(); } PIndexState newState = PIndexState.fromSerializedValue(ptr.get()[ptr.getOffset()]); byte[] tenantIdBytes = rowKeyMetadata[PhoenixDatabaseMetaData.TENANT_ID_INDEX]; String schemaName = Bytes.toString(rowKeyMetadata[PhoenixDatabaseMetaData.SCHEMA_NAME_INDEX]); String indexName = Bytes.toString(rowKeyMetadata[PhoenixDatabaseMetaData.TABLE_NAME_INDEX]); String indexTableName = SchemaUtil.getTableName(schemaName, indexName); PName tenantId = tenantIdBytes.length == 0 ? null : PNameFactory.newName(tenantIdBytes); PTable index = metaData.getTableRef(new PTableKey(tenantId, indexTableName)).getTable(); index = PTableImpl.builderWithColumns(index, getColumnsToClone(index)) .setState(newState == PIndexState.USABLE ? PIndexState.ACTIVE : newState == PIndexState.UNUSABLE ? PIndexState.INACTIVE : newState) .build(); return new MetaDataMutationResult(MutationCode.TABLE_ALREADY_EXISTS, 0, index); }
for (PColumn column : PTableImpl.getColumnsToClone(view)) { boolean isViewReferenced = isViewColumnReferencedToBe.get(column.getPosition()); if ( (visitor.isUpdatable() || view.getPKColumns().get(MetaDataUtil.getAutoPartitionColIndex(view)).equals(column))
PTableImpl.Builder parentTableBuilder = PTableImpl.builderWithColumns(parentTableRef.getTable(), getColumnsToClone(parentTableRef.getTable())) .setIndexes(newIndexes == null ? Collections.emptyList() : newIndexes); if (tableTimeStamp != HConstants.LATEST_TIMESTAMP) {
table = PTableImpl.builderWithColumns(table, getColumnsToClone(table)) .setIndexes(indexes == null ? Collections.emptyList() : indexes) .build();
netGain -= oldParentRef.getEstimatedSize(); newParentTable = PTableImpl.builderWithColumns(oldParentRef.getTable(), getColumnsToClone(oldParentRef.getTable())) .setIndexes(newIndexes) .setTimeStamp(table.getTimeStamp())
indexesToAdd.add(index); } else { indexesToAdd.add(PTableImpl.builderWithColumns(index, getColumnsToClone(index)) .setTableName(modifiedIndexName) .setViewStatement(viewStatement) PTable allIndexesTable = PTableImpl.builderWithColumns(view, getColumnsToClone(view)) .setIndexes(indexesToAdd == null ? Collections.emptyList() : indexesToAdd) .build();
public static PTableImpl makePTable(PTable table, PName tableName, long timeStamp, List<PName> physicalNames, List<PTable> indexes, String viewStatement, long updateCacheFrequency, PName tenantId) throws SQLException { return new PTableImpl( tenantId, table.getSchemaName(), tableName, table.getType(), table.getIndexState(), timeStamp, table.getSequenceNumber(), table.getPKName(), table.getBucketNum(), getColumnsToClone(table), table.getParentSchemaName(), table.getParentTableName(), indexes, table.isImmutableRows(), physicalNames, table.getDefaultFamilyName(), viewStatement, table.isWALDisabled(), table.isMultiTenant(), table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), table.getIndexType(), table.getBaseColumnCount(), table.rowKeyOrderOptimizable(), table.getTransactionProvider(), updateCacheFrequency, table.getIndexDisableTimestamp(), table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema(), table.getImmutableStorageScheme(), table.getEncodingScheme(), table.getEncodedCQCounter(), table.useStatsForParallelization()); }
public static PTableImpl makePTable(PTable table, long timeStamp, List<PTable> indexes, PName parentSchemaName, String viewStatement) throws SQLException { return new PTableImpl( table.getTenantId(), table.getSchemaName(), table.getTableName(), table.getType(), table.getIndexState(), timeStamp, table.getSequenceNumber(), table.getPKName(), table.getBucketNum(), getColumnsToClone(table), parentSchemaName, table.getParentTableName(), indexes, table.isImmutableRows(), table.getPhysicalNames(), table.getDefaultFamilyName(), viewStatement, table.isWALDisabled(), table.isMultiTenant(), table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), table.getIndexType(), table.getBaseColumnCount(), table.rowKeyOrderOptimizable(), table.getTransactionProvider(), table.getUpdateCacheFrequency(), table.getIndexDisableTimestamp(), table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema(), table.getImmutableStorageScheme(), table.getEncodingScheme(), table.getEncodedCQCounter(), table.useStatsForParallelization()); }
public static PTableImpl makePTable(PTable table, PIndexState state) throws SQLException { return new PTableImpl( table.getTenantId(), table.getSchemaName(), table.getTableName(), table.getType(), state, table.getTimeStamp(), table.getSequenceNumber(), table.getPKName(), table.getBucketNum(), getColumnsToClone(table), table.getParentSchemaName(), table.getParentTableName(), table.getIndexes(), table.isImmutableRows(), table.getPhysicalNames(), table.getDefaultFamilyName(), table.getViewStatement(), table.isWALDisabled(), table.isMultiTenant(), table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), table.getIndexType(), table.getBaseColumnCount(), table.rowKeyOrderOptimizable(), table.getTransactionProvider(), table.getUpdateCacheFrequency(), table.getIndexDisableTimestamp(), table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema(), table.getImmutableStorageScheme(), table.getEncodingScheme(), table.getEncodedCQCounter(), table.useStatsForParallelization()); }
public static PTableImpl makePTable(PTable table) throws SQLException { return new PTableImpl( table.getTenantId(), table.getSchemaName(), table.getTableName(), table.getType(), table.getIndexState(), table.getTimeStamp(), table.getSequenceNumber(), table.getPKName(), table.getBucketNum(), getColumnsToClone(table), table.getParentSchemaName(), table.getParentTableName(), table.getIndexes(), table.isImmutableRows(), table.getPhysicalNames(), table.getDefaultFamilyName(), table.getViewStatement(), table.isWALDisabled(), table.isMultiTenant(), table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), table.getIndexType(), table.getBaseColumnCount(), table.rowKeyOrderOptimizable(), table.getTransactionProvider(), table.getUpdateCacheFrequency(), table.getIndexDisableTimestamp(), table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema(), table.getImmutableStorageScheme(), table.getEncodingScheme(), table.getEncodedCQCounter(), table.useStatsForParallelization()); }
public static PTableImpl makePTable(PTable table, boolean rowKeyOrderOptimizable) throws SQLException { return new PTableImpl( table.getTenantId(), table.getSchemaName(), table.getTableName(), table.getType(), table.getIndexState(), table.getTimeStamp(), table.getSequenceNumber(), table.getPKName(), table.getBucketNum(), getColumnsToClone(table), table.getParentSchemaName(), table.getParentTableName(), table.getIndexes(), table.isImmutableRows(), table.getPhysicalNames(), table.getDefaultFamilyName(), table.getViewStatement(), table.isWALDisabled(), table.isMultiTenant(), table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), table.getIndexType(), table.getBaseColumnCount(), rowKeyOrderOptimizable, table.getTransactionProvider(), table.getUpdateCacheFrequency(), table.getIndexDisableTimestamp(), table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema(), table.getImmutableStorageScheme(), table.getEncodingScheme(), table.getEncodedCQCounter(), table.useStatsForParallelization()); }