private static boolean sendIndexMaintainer(PTable index) { PIndexState indexState = index.getIndexState(); return ! ( PIndexState.DISABLE == indexState || PIndexState.PENDING_ACTIVE == indexState ); }
@Override public PIndexState getIndexState() { return delegate.getIndexState(); }
private List<PTable> getClientSideMaintainedIndexes(TableRef tableRef) { PTable table = tableRef.getTable(); if (!table.getIndexes().isEmpty()) { List<PTable> nonDisabledIndexes = Lists.newArrayListWithExpectedSize(table.getIndexes().size()); for (PTable index : table.getIndexes()) { if (index.getIndexState() != PIndexState.DISABLE && isMaintainedOnClient(index)) { nonDisabledIndexes.add(index); } } return nonDisabledIndexes; } return Collections.emptyList(); }
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; }
private static boolean hasInactiveIndex(PMetaData metaCache, PTableKey key) throws TableNotFoundException { PTable table = metaCache.getTableRef(key).getTable(); for (PTable index : table.getIndexes()) { if (index.getIndexState() == PIndexState.INACTIVE) { return true; } } return false; }
private static boolean hasIndexWithState(PMetaData metaCache, PTableKey key, PIndexState expectedState) throws TableNotFoundException { PTable table = metaCache.getTableRef(key).getTable(); for (PTable index : table.getIndexes()) { if (index.getIndexState() == expectedState) { return true; } } return false; }
List<PTable> disabledPIndexes = new ArrayList<PTable>(); for (PTable index : pdataTable.getIndexes()) { if (index.getIndexState().equals(PIndexState.BUILDING)) { disableIndexes.add(index.getTableName().getString()); disabledPIndexes.add(index);
PTable table = metaCache.getTableRef(key).getTable(); for (PTable index : table.getIndexes()) { assertEquals(PIndexState.DISABLE, index.getIndexState());
private static final void dumpStateOfIndexes(Connection conn, String tableName, boolean beforeRebuildTaskRun) throws SQLException { PhoenixConnection phxConn = conn.unwrap(PhoenixConnection.class); PTable table = phxConn.getTable(new PTableKey(phxConn.getTenantId(), tableName)); List<PTable> indexes = table.getIndexes(); String s = beforeRebuildTaskRun ? "before rebuild run" : "after rebuild run"; System.out.println("************Index state in connection " + s + "******************"); for (PTable idx : indexes) { System.out.println( "Index Name: " + idx.getName().getString() + " State: " + idx.getIndexState() + " Disable timestamp: " + idx.getIndexDisableTimestamp()); } System.out.println("************Index state from server " + s + "******************"); table = PhoenixRuntime.getTableNoCache(phxConn, fullTableName); for (PTable idx : table.getIndexes()) { System.out.println( "Index Name: " + idx.getName().getString() + " State: " + idx.getIndexState() + " Disable timestamp: " + idx.getIndexDisableTimestamp()); } }
dataTableToIndexesMap.put(dataPTable, indexesToPartiallyRebuild); LOG.debug("We have found " + indexPTable.getIndexState() + " Index:" + indexPTable.getName() + " on data table:" + dataPTable.getName() + " which failed to be updated at " + indexPTable.getIndexDisableTimestamp()); } else { IndexUtil.updateIndexState(conn, indexTableFullName, indexPTable.getIndexState(), scanEndTime * signOfDisableTimeStamp, latestUpperBoundTimestamp); Long noOfBatches = batchExecutedPerTableMap.get(dataPTable.getName());
disableIndexTimestamp = index.getIndexDisableTimestamp(); if (disableIndexTimestamp > 0 && (index.getIndexState() == PIndexState.ACTIVE || index.getIndexState() == PIndexState.PENDING_ACTIVE || index.getIndexState() == PIndexState.PENDING_DISABLE) && disableIndexTimestamp < minNonZerodisableIndexTimestamp) { minNonZerodisableIndexTimestamp = disableIndexTimestamp;
rs.next(); PTable pindexTable = PhoenixRuntime.getTable(conn, SchemaUtil.getTableName(schemaName, indxTable)); assertEquals(PIndexState.BUILDING, pindexTable.getIndexState()); assertEquals(rs.getLong(1), pindexTable.getTimeStamp());
for (QueryPlan plan : queryPlans) { PTable planTable = plan.getTableRef().getTable(); if (planTable.getIndexState() != PIndexState.BUILDING) { bestPlanToBe = plan; break;
if ((idxTtable.getIndexState() == PIndexState.ACTIVE || idxTtable.getIndexState() == PIndexState.PENDING_ACTIVE) && idxTtable.getIndexDisableTimestamp() > 0) { throw new SQLExceptionInfo.Builder( SQLExceptionCode.INDEX_FAILURE_BLOCK_WRITE).setSchemaName(table.getSchemaName().getString())
.setMessage(" currentState=" + indexRef.getTable().getIndexState() + ". requestedState=" + newIndexState ) .setSchemaName(schemaName).setTableName(indexName).build().buildException();
Map<TableRef, QueryPlan> dataPlans = Collections.singletonMap(indexTableRef, dataPlan); PTable indexTable = indexTableRef.getTable(); PIndexState indexState = indexTable.getIndexState(); if (indexState == PIndexState.ACTIVE || indexState == PIndexState.PENDING_ACTIVE || (indexState == PIndexState.PENDING_DISABLE && isUnderPendingDisableThreshold(indexTableRef.getCurrentTime(), indexTable.getIndexDisableTimestamp()))) { indexState = indexTable.getIndexState();
.setState(left.getIndexState()) .setTimeStamp(left.getTimeStamp()) .setIndexDisableTimestamp(left.getIndexDisableTimestamp())
return new PTableImpl.Builder() .setType(table.getType()) .setState(table.getIndexState()) .setTimeStamp(table.getTimeStamp()) .setIndexDisableTimestamp(table.getIndexDisableTimestamp())
builder.setTableType(ProtobufUtil.toPTableTypeProto(table.getType())); if (table.getType() == PTableType.INDEX) { if(table.getIndexState() != null) { builder.setIndexState(table.getIndexState().getSerializedValue());
public static PTableImpl makePTable(PTable table, long timeStamp, long sequenceNumber, Collection<PColumn> columns, boolean isImmutableRows) throws SQLException { return new PTableImpl( table.getTenantId(), table.getSchemaName(), table.getTableName(), table.getType(), table.getIndexState(), timeStamp, sequenceNumber, table.getPKName(), table.getBucketNum(), columns, table.getParentSchemaName(), table.getParentTableName(), table.getIndexes(), 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()); }