Search in sources :

Example 1 with GridCacheContextInfo

use of org.apache.ignite.internal.processors.cache.GridCacheContextInfo in project ignite by apache.

the class GridQueryProcessor method processSchemaOperationLocal.

/**
 * Process schema operation.
 *
 * @param op Operation.
 * @param type Type descriptor.
 * @param depId Cache deployment ID.
 * @param cancelTok Cancel token.
 * @throws SchemaOperationException If failed.
 */
public void processSchemaOperationLocal(SchemaAbstractOperation op, QueryTypeDescriptorImpl type, IgniteUuid depId, IndexRebuildCancelToken cancelTok) throws SchemaOperationException {
    if (log.isDebugEnabled())
        log.debug("Started local index operation [opId=" + op.id() + ']');
    String cacheName = op.cacheName();
    GridCacheContextInfo<?, ?> cacheInfo = null;
    if (op instanceof SchemaAddQueryEntityOperation) {
        GridCacheContext<?, ?> cctx = ctx.cache().context().cacheContext(CU.cacheId(cacheName));
        if (cctx != null)
            cacheInfo = new GridCacheContextInfo<>(cctx, false);
        else
            return;
    } else
        cacheInfo = idx.registeredCacheInfo(cacheName);
    if (cacheInfo == null || !F.eq(depId, cacheInfo.dynamicDeploymentId()))
        throw new SchemaOperationException(SchemaOperationException.CODE_CACHE_NOT_FOUND, cacheName);
    try {
        if (op instanceof SchemaIndexCreateOperation) {
            SchemaIndexCreateOperation op0 = (SchemaIndexCreateOperation) op;
            QueryIndexDescriptorImpl idxDesc = QueryUtils.createIndexDescriptor(type, op0.index());
            SchemaIndexCacheVisitor visitor;
            if (cacheInfo.isCacheContextInited()) {
                int buildIdxPoolSize = ctx.config().getBuildIndexThreadPoolSize();
                int parallel = op0.parallel();
                if (parallel > buildIdxPoolSize) {
                    String idxName = op0.indexName();
                    log.warning("Provided parallelism " + parallel + " for creation of index " + idxName + " is greater than the number of index building threads. Will use " + buildIdxPoolSize + " threads to build index. Increase by IgniteConfiguration.setBuildIndexThreadPoolSize" + " and restart the node if you want to use more threads. [tableName=" + op0.tableName() + ", indexName=" + idxName + ", requestedParallelism=" + parallel + ", buildIndexPoolSize=" + buildIdxPoolSize + "]");
                }
                GridFutureAdapter<Void> createIdxFut = new GridFutureAdapter<>();
                GridCacheContext<?, ?> cacheCtx = cacheInfo.cacheContext();
                visitor = new SchemaIndexCacheVisitorImpl(cacheCtx, cancelTok, createIdxFut) {

                    /**
                     * {@inheritDoc}
                     */
                    @Override
                    public void visit(SchemaIndexCacheVisitorClosure clo) {
                        idxBuildStatusStorage.onStartBuildNewIndex(cacheCtx);
                        try {
                            super.visit(clo);
                            buildIdxFut.get();
                        } catch (Exception e) {
                            throw new IgniteException(e);
                        } finally {
                            idxBuildStatusStorage.onFinishBuildNewIndex(cacheName);
                        }
                    }
                };
            } else
                // For not started caches we shouldn't add any data to index.
                visitor = clo -> {
                };
            idx.dynamicIndexCreate(op0.schemaName(), op0.tableName(), idxDesc, op0.ifNotExists(), visitor);
        } else if (op instanceof SchemaIndexDropOperation) {
            SchemaIndexDropOperation op0 = (SchemaIndexDropOperation) op;
            idx.dynamicIndexDrop(op0.schemaName(), op0.indexName(), op0.ifExists());
        } else if (op instanceof SchemaAlterTableAddColumnOperation) {
            SchemaAlterTableAddColumnOperation op0 = (SchemaAlterTableAddColumnOperation) op;
            processDynamicAddColumn(type, op0.columns());
            idx.dynamicAddColumn(op0.schemaName(), op0.tableName(), op0.columns(), op0.ifTableExists(), op0.ifNotExists());
        } else if (op instanceof SchemaAlterTableDropColumnOperation) {
            SchemaAlterTableDropColumnOperation op0 = (SchemaAlterTableDropColumnOperation) op;
            processDynamicDropColumn(type, op0.columns());
            idx.dynamicDropColumn(op0.schemaName(), op0.tableName(), op0.columns(), op0.ifTableExists(), op0.ifExists());
        } else if (op instanceof SchemaAddQueryEntityOperation) {
            SchemaAddQueryEntityOperation op0 = (SchemaAddQueryEntityOperation) op;
            if (!cacheNames.contains(op0.cacheName())) {
                cacheInfo.onSchemaAddQueryEntity(op0);
                T3<Collection<QueryTypeCandidate>, Map<String, QueryTypeDescriptorImpl>, Map<String, QueryTypeDescriptorImpl>> candRes = createQueryCandidates(op0.cacheName(), op0.schemaName(), cacheInfo, op0.entities(), op0.isSqlEscape());
                registerCache0(op0.cacheName(), op.schemaName(), cacheInfo, candRes.get1(), false);
            }
            if (idxRebuildFutStorage.prepareRebuildIndexes(singleton(cacheInfo.cacheId()), null).isEmpty())
                rebuildIndexesFromHash0(cacheInfo.cacheContext(), false, cancelTok);
            else {
                if (log.isInfoEnabled())
                    log.info("Rebuilding indexes for the cache is already in progress: " + cacheInfo.name());
            }
        } else
            throw new SchemaOperationException("Unsupported operation: " + op);
    } catch (Throwable e) {
        if (e instanceof SchemaOperationException)
            throw (SchemaOperationException) e;
        else
            throw new SchemaOperationException("Schema change operation failed: " + e.getMessage(), e);
    }
}
Also used : IndexRebuildCancelToken(org.apache.ignite.internal.processors.query.schema.IndexRebuildCancelToken) SchemaOperationClientFuture(org.apache.ignite.internal.processors.query.schema.SchemaOperationClientFuture) SchemaAbstractDiscoveryMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaAbstractDiscoveryMessage) GridFutureAdapter(org.apache.ignite.internal.util.future.GridFutureAdapter) GridFinishedFuture(org.apache.ignite.internal.util.future.GridFinishedFuture) IgniteCacheObjectProcessor(org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor) CacheQueryExecutedEvent(org.apache.ignite.events.CacheQueryExecutedEvent) Map(java.util.Map) SqlQuery(org.apache.ignite.cache.query.SqlQuery) Cache(javax.cache.Cache) CacheQueryFuture(org.apache.ignite.internal.processors.cache.query.CacheQueryFuture) Objects.isNull(java.util.Objects.isNull) QueryBinaryProperty(org.apache.ignite.internal.processors.query.property.QueryBinaryProperty) TOPIC_SCHEMA(org.apache.ignite.internal.GridTopic.TOPIC_SCHEMA) BinaryMetadata(org.apache.ignite.internal.binary.BinaryMetadata) IndexBuildStatusStorage(org.apache.ignite.internal.processors.query.aware.IndexBuildStatusStorage) IndexProcessor(org.apache.ignite.internal.cache.query.index.IndexProcessor) IgniteInClosure(org.apache.ignite.lang.IgniteInClosure) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SchemaAlterTableDropColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperation) Set(java.util.Set) CacheDataRow(org.apache.ignite.internal.processors.cache.persistence.CacheDataRow) Serializable(java.io.Serializable) QueryCursor(org.apache.ignite.cache.query.QueryCursor) SchemaIndexCreateOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation) GridCacheContext(org.apache.ignite.internal.processors.cache.GridCacheContext) SchemaOperationWorker(org.apache.ignite.internal.processors.query.schema.SchemaOperationWorker) SchemaIndexCacheVisitor(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitor) SchemaOperationManager(org.apache.ignite.internal.processors.query.schema.SchemaOperationManager) SchemaAbstractOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation) IgniteBiPredicate(org.apache.ignite.lang.IgniteBiPredicate) IgniteThread(org.apache.ignite.thread.IgniteThread) U(org.apache.ignite.internal.util.typedef.internal.U) SchemaOperationStatusMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaOperationStatusMessage) IgniteOutClosureX(org.apache.ignite.internal.util.lang.IgniteOutClosureX) INDEXING(org.apache.ignite.internal.IgniteComponentType.INDEXING) ArrayList(java.util.ArrayList) GridKernalContext(org.apache.ignite.internal.GridKernalContext) LinkedHashMap(java.util.LinkedHashMap) ClusterNode(org.apache.ignite.cluster.ClusterNode) PlatformContext(org.apache.ignite.internal.processors.platform.PlatformContext) IndexQueryProcessor(org.apache.ignite.internal.cache.query.index.IndexQueryProcessor) GridDhtPartitionsExchangeFuture(org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture) CacheWriteSynchronizationMode(org.apache.ignite.cache.CacheWriteSynchronizationMode) CODE_COLUMN_EXISTS(org.apache.ignite.internal.processors.query.schema.SchemaOperationException.CODE_COLUMN_EXISTS) SchemaAddQueryEntityOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation) T3(org.apache.ignite.internal.util.typedef.T3) T2(org.apache.ignite.internal.util.typedef.T2) BinaryType(org.apache.ignite.binary.BinaryType) MvccSnapshot(org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot) CacheConfiguration(org.apache.ignite.configuration.CacheConfiguration) SchemaOperationException(org.apache.ignite.internal.processors.query.schema.SchemaOperationException) Binarylizable(org.apache.ignite.binary.Binarylizable) IgniteDataStreamer(org.apache.ignite.IgniteDataStreamer) GridProcessorAdapter(org.apache.ignite.internal.processors.GridProcessorAdapter) CacheObjectContext(org.apache.ignite.internal.processors.cache.CacheObjectContext) SchemaAlterTableAddColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation) IgniteUuid(org.apache.ignite.lang.IgniteUuid) CacheMode(org.apache.ignite.cache.CacheMode) DynamicCacheChangeBatch(org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch) DynamicCacheChangeRequest(org.apache.ignite.internal.processors.cache.DynamicCacheChangeRequest) CacheAtomicityMode(org.apache.ignite.cache.CacheAtomicityMode) IgniteInternalFuture(org.apache.ignite.internal.IgniteInternalFuture) BinaryObject(org.apache.ignite.binary.BinaryObject) DiscoveryDataBag(org.apache.ignite.spi.discovery.DiscoveryDataBag) CacheKeyConfiguration(org.apache.ignite.cache.CacheKeyConfiguration) SqlFieldsQuery(org.apache.ignite.cache.query.SqlFieldsQuery) IndexingQueryFilter(org.apache.ignite.spi.indexing.IndexingQueryFilter) IgniteSystemProperties(org.apache.ignite.IgniteSystemProperties) SB(org.apache.ignite.internal.util.typedef.internal.SB) Collections.singleton(java.util.Collections.singleton) QueryEntity(org.apache.ignite.cache.QueryEntity) PARTITIONED(org.apache.ignite.cache.CacheMode.PARTITIONED) BinaryUtils.typeByClass(org.apache.ignite.internal.binary.BinaryUtils.typeByClass) Collectors.toSet(java.util.stream.Collectors.toSet) IgniteFuture(org.apache.ignite.lang.IgniteFuture) IdentityHashMap(java.util.IdentityHashMap) Collection(java.util.Collection) IgniteException(org.apache.ignite.IgniteException) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) UUID(java.util.UUID) CacheObject(org.apache.ignite.internal.processors.cache.CacheObject) IndexQueryResult(org.apache.ignite.internal.cache.query.index.IndexQueryResult) IgniteCacheOffheapManager(org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManager) GridSpinBusyLock(org.apache.ignite.internal.util.GridSpinBusyLock) IgniteBiTuple(org.apache.ignite.lang.IgniteBiTuple) ExchangeActions(org.apache.ignite.internal.processors.cache.ExchangeActions) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) IndexRebuildFutureStorage(org.apache.ignite.internal.processors.query.aware.IndexRebuildFutureStorage) CU(org.apache.ignite.internal.util.typedef.internal.CU) KeyCacheObject(org.apache.ignite.internal.processors.cache.KeyCacheObject) Objects.nonNull(java.util.Objects.nonNull) FieldsQueryCursor(org.apache.ignite.cache.query.FieldsQueryCursor) NodeStoppingException(org.apache.ignite.internal.NodeStoppingException) GridCacheAdapter(org.apache.ignite.internal.processors.cache.GridCacheAdapter) QueryCursorImpl(org.apache.ignite.internal.processors.cache.QueryCursorImpl) PlatformProcessor(org.apache.ignite.internal.processors.platform.PlatformProcessor) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) GridTimeoutProcessor(org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor) LT(org.apache.ignite.internal.util.typedef.internal.LT) SchemaIndexCacheVisitorImpl(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorImpl) ConcurrentMap(java.util.concurrent.ConcurrentMap) HashSet(java.util.HashSet) IndexQueryDesc(org.apache.ignite.internal.processors.cache.query.IndexQueryDesc) Collections.newSetFromMap(java.util.Collections.newSetFromMap) SchemaIndexCacheVisitorClosure(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure) SchemaFinishDiscoveryMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage) CacheException(javax.cache.CacheException) LinkedList(java.util.LinkedList) GridPlainOutClosure(org.apache.ignite.internal.util.lang.GridPlainOutClosure) GridMessageListener(org.apache.ignite.internal.managers.communication.GridMessageListener) F(org.apache.ignite.internal.util.typedef.F) SchemaProposeDiscoveryMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage) SchemaIndexDropOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation) JdkMarshaller(org.apache.ignite.marshaller.jdk.JdkMarshaller) Iterator(java.util.Iterator) Collections.emptySet(java.util.Collections.emptySet) AffinityTopologyVersion(org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion) DynamicCacheDescriptor(org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor) GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo) IgniteQueryErrorCode(org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode) GridCloseableIterator(org.apache.ignite.internal.util.lang.GridCloseableIterator) CacheObjectBinaryProcessorImpl(org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl) GridBoundedConcurrentLinkedHashSet(org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashSet) SCHEMA_POOL(org.apache.ignite.internal.managers.communication.GridIoPolicy.SCHEMA_POOL) GridCacheQueryType(org.apache.ignite.internal.processors.cache.query.GridCacheQueryType) BinaryObjectException(org.apache.ignite.binary.BinaryObjectException) BinaryUtils.fieldTypeName(org.apache.ignite.internal.binary.BinaryUtils.fieldTypeName) Collections(java.util.Collections) QueryIndex(org.apache.ignite.cache.QueryIndex) GridClosureException(org.apache.ignite.internal.util.lang.GridClosureException) EVT_CACHE_QUERY_EXECUTED(org.apache.ignite.events.EventType.EVT_CACHE_QUERY_EXECUTED) SchemaIndexDropOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation) IgniteException(org.apache.ignite.IgniteException) GridFutureAdapter(org.apache.ignite.internal.util.future.GridFutureAdapter) SchemaIndexCacheVisitorClosure(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure) SchemaAlterTableDropColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperation) SchemaOperationException(org.apache.ignite.internal.processors.query.schema.SchemaOperationException) SchemaIndexCacheVisitor(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitor) SchemaIndexCreateOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation) SchemaIndexCacheVisitorImpl(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorImpl) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SchemaOperationException(org.apache.ignite.internal.processors.query.schema.SchemaOperationException) IgniteException(org.apache.ignite.IgniteException) NodeStoppingException(org.apache.ignite.internal.NodeStoppingException) CacheException(javax.cache.CacheException) BinaryObjectException(org.apache.ignite.binary.BinaryObjectException) GridClosureException(org.apache.ignite.internal.util.lang.GridClosureException) SchemaAddQueryEntityOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation) SchemaAlterTableAddColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation) Collection(java.util.Collection) GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) IdentityHashMap(java.util.IdentityHashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap) Collections.newSetFromMap(java.util.Collections.newSetFromMap)

Example 2 with GridCacheContextInfo

use of org.apache.ignite.internal.processors.cache.GridCacheContextInfo in project ignite by apache.

the class QueryParser method mvccCacheIdForSelect.

/**
 * Get ID of the first MVCC cache for SELECT.
 *
 * @param objMap Object map.
 * @return ID of the first MVCC cache or {@code null} if no MVCC caches involved.
 */
private Integer mvccCacheIdForSelect(Map<Object, Object> objMap) {
    Boolean mvccEnabled = null;
    Integer mvccCacheId = null;
    GridCacheContextInfo cctx = null;
    for (Object o : objMap.values()) {
        if (o instanceof GridSqlAlias)
            o = GridSqlAlias.unwrap((GridSqlAst) o);
        if (o instanceof GridSqlTable && ((GridSqlTable) o).dataTable() != null) {
            GridSqlTable tbl = (GridSqlTable) o;
            if (tbl.dataTable() != null) {
                GridCacheContextInfo curCctx = tbl.dataTable().cacheInfo();
                assert curCctx != null;
                boolean curMvccEnabled = curCctx.config().getAtomicityMode() == CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT;
                if (mvccEnabled == null) {
                    mvccEnabled = curMvccEnabled;
                    if (mvccEnabled)
                        mvccCacheId = curCctx.cacheId();
                    cctx = curCctx;
                } else if (mvccEnabled != curMvccEnabled)
                    MvccUtils.throwAtomicityModesMismatchException(cctx.config(), curCctx.config());
            }
        }
    }
    return mvccCacheId;
}
Also used : GridSqlAlias(org.apache.ignite.internal.processors.query.h2.sql.GridSqlAlias) GridSqlTable(org.apache.ignite.internal.processors.query.h2.sql.GridSqlTable) GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo)

Example 3 with GridCacheContextInfo

use of org.apache.ignite.internal.processors.cache.GridCacheContextInfo in project ignite by apache.

the class QueryParser method prepareDmlStatement.

/**
 * Prepare DML statement.
 *
 * @param planKey Plan key.
 * @param prepared Prepared.
 * @return Statement.
 */
private QueryParserResultDml prepareDmlStatement(QueryDescriptor planKey, Prepared prepared) {
    if (F.eq(QueryUtils.SCHEMA_SYS, planKey.schemaName()))
        throw new IgniteSQLException("DML statements are not supported on " + planKey.schemaName() + " schema", IgniteQueryErrorCode.UNSUPPORTED_OPERATION);
    // Prepare AST.
    GridSqlQueryParser parser = new GridSqlQueryParser(false, log);
    GridSqlStatement stmt = parser.parse(prepared);
    List<GridH2Table> tbls = parser.tablesForDml();
    // available on local node.
    for (GridH2Table h2tbl : tbls) H2Utils.checkAndStartNotStartedCache(idx.kernalContext(), h2tbl);
    // Check MVCC mode.
    GridCacheContextInfo ctx = null;
    boolean mvccEnabled = false;
    for (GridH2Table h2tbl : tbls) {
        GridCacheContextInfo curCtx = h2tbl.cacheInfo();
        boolean curMvccEnabled = curCtx.config().getAtomicityMode() == CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT;
        if (ctx == null) {
            ctx = curCtx;
            mvccEnabled = curMvccEnabled;
        } else if (curMvccEnabled != mvccEnabled)
            MvccUtils.throwAtomicityModesMismatchException(ctx.config(), curCtx.config());
    }
    // Get streamer info.
    GridH2Table streamTbl = null;
    if (GridSqlQueryParser.isStreamableInsertStatement(prepared)) {
        GridSqlInsert insert = (GridSqlInsert) stmt;
        streamTbl = DmlAstUtils.gridTableForElement(insert.into()).dataTable();
    }
    // Create update plan.
    UpdatePlan plan;
    try {
        plan = UpdatePlanBuilder.planForStatement(planKey, stmt, mvccEnabled, idx, log, forceFillAbsentPKsWithDefaults);
    } catch (Exception e) {
        if (e instanceof IgniteSQLException)
            throw (IgniteSQLException) e;
        else
            throw new IgniteSQLException("Failed to prepare update plan.", e);
    }
    return new QueryParserResultDml(stmt, mvccEnabled, streamTbl, plan);
}
Also used : GridSqlQueryParser(org.apache.ignite.internal.processors.query.h2.sql.GridSqlQueryParser) GridSqlStatement(org.apache.ignite.internal.processors.query.h2.sql.GridSqlStatement) GridH2Table(org.apache.ignite.internal.processors.query.h2.opt.GridH2Table) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException) GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo) GridSqlInsert(org.apache.ignite.internal.processors.query.h2.sql.GridSqlInsert) UpdatePlan(org.apache.ignite.internal.processors.query.h2.dml.UpdatePlan) SqlStrictParseException(org.apache.ignite.internal.sql.SqlStrictParseException) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SqlParseException(org.apache.ignite.internal.sql.SqlParseException) SQLException(java.sql.SQLException) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException)

Example 4 with GridCacheContextInfo

use of org.apache.ignite.internal.processors.cache.GridCacheContextInfo in project ignite by apache.

the class IgniteH2Indexing method createSortedIndex.

/**
 * Create sorted index.
 *
 * @param name Index name,
 * @param tbl Table.
 * @param pk Primary key flag.
 * @param affinityKey Affinity key flag.
 * @param unwrappedCols Unwrapped index columns for complex types.
 * @param wrappedCols Index columns as is complex types.
 * @param inlineSize Index inline size.
 * @param cacheVisitor whether index created with new cache or on existing one.
 * @return Index.
 */
@SuppressWarnings("ConstantConditions")
GridH2IndexBase createSortedIndex(String name, GridH2Table tbl, boolean pk, boolean affinityKey, List<IndexColumn> unwrappedCols, List<IndexColumn> wrappedCols, int inlineSize, @Nullable SchemaIndexCacheVisitor cacheVisitor) {
    GridCacheContextInfo cacheInfo = tbl.cacheInfo();
    if (log.isDebugEnabled())
        log.debug("Creating cache index [cacheId=" + cacheInfo.cacheId() + ", idxName=" + name + ']');
    if (cacheInfo.affinityNode()) {
        QueryIndexDefinition idxDef = new QueryIndexDefinition(tbl, name, ctx.indexProcessor().rowCacheCleaner(cacheInfo.groupId()), pk, affinityKey, unwrappedCols, wrappedCols, inlineSize);
        org.apache.ignite.internal.cache.query.index.Index index;
        if (cacheVisitor != null)
            index = ctx.indexProcessor().createIndexDynamically(tbl.cacheContext(), idxFactory, idxDef, cacheVisitor);
        else
            index = ctx.indexProcessor().createIndex(tbl.cacheContext(), idxFactory, idxDef);
        InlineIndexImpl queryIndex = index.unwrap(InlineIndexImpl.class);
        return new H2TreeIndex(queryIndex, tbl, unwrappedCols.toArray(new IndexColumn[0]), pk, log);
    } else {
        ClientIndexDefinition d = new ClientIndexDefinition(tbl, new IndexName(tbl.cacheName(), tbl.getSchema().getName(), tbl.getName(), name), unwrappedCols, inlineSize, tbl.cacheInfo().config().getSqlIndexMaxInlineSize());
        org.apache.ignite.internal.cache.query.index.Index index = ctx.indexProcessor().createIndex(tbl.cacheContext(), ClientIndexFactory.INSTANCE, d);
        InlineIndex idx = index.unwrap(InlineIndex.class);
        IndexType idxType = pk ? IndexType.createPrimaryKey(false, false) : IndexType.createNonUnique(false, false, false);
        return new H2TreeClientIndex(idx, tbl, name, unwrappedCols.toArray(new IndexColumn[0]), idxType);
    }
}
Also used : H2TreeIndex(org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex) InlineIndex(org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex) IndexColumn(org.h2.table.IndexColumn) IndexName(org.apache.ignite.internal.cache.query.index.IndexName) InlineIndexImpl(org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexImpl) QueryIndexDefinition(org.apache.ignite.internal.processors.query.h2.index.QueryIndexDefinition) GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo) H2TreeClientIndex(org.apache.ignite.internal.processors.query.h2.database.H2TreeClientIndex) ClientIndexDefinition(org.apache.ignite.internal.processors.query.h2.index.client.ClientIndexDefinition) IndexType(org.h2.index.IndexType)

Example 5 with GridCacheContextInfo

use of org.apache.ignite.internal.processors.cache.GridCacheContextInfo in project ignite by apache.

the class GridQueryProcessor method initQueryStructuresForNotStartedCache.

/**
 * Initialize query infrastructure for not started cache.
 *
 * @param cacheDesc Cache descriptor.
 * @throws IgniteCheckedException If failed.
 */
public void initQueryStructuresForNotStartedCache(DynamicCacheDescriptor cacheDesc) throws IgniteCheckedException {
    QuerySchema schema = cacheDesc.schema() != null ? cacheDesc.schema() : new QuerySchema();
    GridCacheContextInfo cacheInfo = new GridCacheContextInfo(cacheDesc);
    onCacheStart(cacheInfo, schema, cacheDesc.sql());
}
Also used : GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo)

Aggregations

GridCacheContextInfo (org.apache.ignite.internal.processors.cache.GridCacheContextInfo)6 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)2 Serializable (java.io.Serializable)1 SQLException (java.sql.SQLException)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 Collections.emptySet (java.util.Collections.emptySet)1 Collections.newSetFromMap (java.util.Collections.newSetFromMap)1 Collections.singleton (java.util.Collections.singleton)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 IdentityHashMap (java.util.IdentityHashMap)1 Iterator (java.util.Iterator)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Map (java.util.Map)1 Objects.isNull (java.util.Objects.isNull)1 Objects.nonNull (java.util.Objects.nonNull)1