Search in sources :

Example 16 with AND

use of org.apache.ignite.internal.processors.query.h2.sql.GridSqlOperationType.AND in project ignite by apache.

the class DmlStatementsProcessor method updateSqlFieldsBatched.

/**
 * Execute DML statement, possibly with few re-attempts in case of concurrent data modifications.
 *
 * @param schemaName Schema.
 * @param conn Connection.
 * @param prepared Prepared statement.
 * @param fieldsQry Original query.
 * @param loc Query locality flag.
 * @param filters Cache name and key filter.
 * @param cancel Cancel.
 * @return Update result (modified items count and failed keys).
 * @throws IgniteCheckedException if failed.
 */
private Collection<UpdateResult> updateSqlFieldsBatched(String schemaName, Connection conn, Prepared prepared, SqlFieldsQueryEx fieldsQry, boolean loc, IndexingQueryFilter filters, GridQueryCancel cancel) throws IgniteCheckedException {
    List<Object[]> argss = fieldsQry.batchedArguments();
    UpdatePlan plan = getPlanForStatement(schemaName, conn, prepared, fieldsQry, loc, null);
    if (plan.hasRows() && plan.mode() == UpdateMode.INSERT) {
        GridCacheContext<?, ?> cctx = plan.cacheContext();
        CacheOperationContext opCtx = setKeepBinaryContext(cctx);
        try {
            List<List<List<?>>> cur = plan.createRows(argss);
            List<UpdateResult> res = processDmlSelectResultBatched(plan, cur, fieldsQry.getPageSize());
            return res;
        } finally {
            cctx.operationContextPerCall(opCtx);
        }
    } else {
        // Fallback to previous mode.
        Collection<UpdateResult> ress = new ArrayList<>(argss.size());
        SQLException batchException = null;
        int[] cntPerRow = new int[argss.size()];
        int cntr = 0;
        for (Object[] args : argss) {
            SqlFieldsQueryEx qry0 = (SqlFieldsQueryEx) fieldsQry.copy();
            qry0.clearBatchedArgs();
            qry0.setArgs(args);
            UpdateResult res;
            try {
                res = updateSqlFields(schemaName, conn, prepared, qry0, loc, filters, cancel);
                cntPerRow[cntr++] = (int) res.counter();
                ress.add(res);
            } catch (Exception e) {
                String sqlState;
                int code;
                if (e instanceof IgniteSQLException) {
                    sqlState = ((IgniteSQLException) e).sqlState();
                    code = ((IgniteSQLException) e).statusCode();
                } else {
                    sqlState = SqlStateCode.INTERNAL_ERROR;
                    code = IgniteQueryErrorCode.UNKNOWN;
                }
                batchException = chainException(batchException, new SQLException(e.getMessage(), sqlState, code, e));
                cntPerRow[cntr++] = Statement.EXECUTE_FAILED;
            }
        }
        if (batchException != null) {
            BatchUpdateException e = new BatchUpdateException(batchException.getMessage(), batchException.getSQLState(), batchException.getErrorCode(), cntPerRow, batchException);
            throw new IgniteCheckedException(e);
        }
        return ress;
    }
}
Also used : CacheOperationContext(org.apache.ignite.internal.processors.cache.CacheOperationContext) SQLException(java.sql.SQLException) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException) ArrayList(java.util.ArrayList) IgniteQueryErrorCode.createJdbcSqlException(org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode.createJdbcSqlException) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) IgniteException(org.apache.ignite.IgniteException) BatchUpdateException(java.sql.BatchUpdateException) EntryProcessorException(javax.cache.processor.EntryProcessorException) SQLException(java.sql.SQLException) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SqlFieldsQueryEx(org.apache.ignite.internal.processors.cache.query.SqlFieldsQueryEx) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException) List(java.util.List) ArrayList(java.util.ArrayList) UpdatePlan(org.apache.ignite.internal.processors.query.h2.dml.UpdatePlan) BatchUpdateException(java.sql.BatchUpdateException)

Example 17 with AND

use of org.apache.ignite.internal.processors.query.h2.sql.GridSqlOperationType.AND in project ignite by apache.

the class SqlFieldsQuerySelfTest method testQueryCaching.

/**
 * @throws Exception If error.
 */
public void testQueryCaching() throws Exception {
    startGrid(0);
    PreparedStatement stmt = null;
    for (int i = 0; i < 2; i++) {
        createAndFillCache();
        PreparedStatement stmt0 = grid(0).context().query().prepareNativeStatement("person", INSERT);
        // Statement should either be parsed initially or in response to schema change...
        assertTrue(stmt != stmt0);
        stmt = stmt0;
        // ...and be properly compiled considering schema changes to be properly parsed
        new GridSqlQueryParser(false).parse(GridSqlQueryParser.prepared(stmt));
        destroyCache();
    }
    stmt = null;
    createAndFillCache();
    // Now let's do the same without restarting the cache.
    for (int i = 0; i < 2; i++) {
        PreparedStatement stmt0 = grid(0).context().query().prepareNativeStatement("person", INSERT);
        // Statement should either be parsed or taken from cache as no schema changes occurred...
        assertTrue(stmt == null || stmt == stmt0);
        stmt = stmt0;
        // ...and be properly compiled considering schema changes to be properly parsed
        new GridSqlQueryParser(false).parse(GridSqlQueryParser.prepared(stmt));
    }
    destroyCache();
}
Also used : GridSqlQueryParser(org.apache.ignite.internal.processors.query.h2.sql.GridSqlQueryParser) PreparedStatement(java.sql.PreparedStatement)

Example 18 with AND

use of org.apache.ignite.internal.processors.query.h2.sql.GridSqlOperationType.AND in project ignite by apache.

the class GridMapQueryExecutor method sendNextPage.

/**
 * @param nodeRess Results.
 * @param node Node.
 * @param qr Query results.
 * @param qry Query.
 * @param segmentId Index segment ID.
 * @param pageSize Page size.
 */
private void sendNextPage(MapNodeResults nodeRess, ClusterNode node, MapQueryResults qr, int qry, int segmentId, int pageSize) {
    MapQueryResult res = qr.result(qry);
    assert res != null;
    if (res.closed())
        return;
    int page = res.page();
    List<Value[]> rows = new ArrayList<>(Math.min(64, pageSize));
    boolean last = res.fetchNextPage(rows, pageSize);
    if (last) {
        res.close();
        if (qr.isAllClosed()) {
            nodeRess.remove(qr.queryRequestId(), segmentId, qr);
            // Release reservations if the last page fetched, all requests are closed and this is a lazy worker.
            if (MapQueryLazyWorker.currentWorker() != null)
                releaseReservations();
        }
    }
    try {
        boolean loc = node.isLocal();
        GridQueryNextPageResponse msg = new GridQueryNextPageResponse(qr.queryRequestId(), segmentId, qry, page, page == 0 ? res.rowCount() : -1, res.columnCount(), loc ? null : toMessages(rows, new ArrayList<Message>(res.columnCount())), loc ? rows : null, last);
        if (loc)
            h2.reduceQueryExecutor().onMessage(ctx.localNodeId(), msg);
        else
            ctx.io().sendToGridTopic(node, GridTopic.TOPIC_QUERY, msg, QUERY_POOL);
    } catch (IgniteCheckedException e) {
        U.error(log, "Failed to send message.", e);
        throw new IgniteException(e);
    }
}
Also used : IgniteCheckedException(org.apache.ignite.IgniteCheckedException) Message(org.apache.ignite.plugin.extensions.communication.Message) IgniteException(org.apache.ignite.IgniteException) GridQueryNextPageResponse(org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryNextPageResponse) ArrayList(java.util.ArrayList)

Example 19 with AND

use of org.apache.ignite.internal.processors.query.h2.sql.GridSqlOperationType.AND in project ignite by apache.

the class IgniteCacheQuerySelfTestSuite method suite.

/**
 * @return Test suite.
 * @throws Exception If failed.
 */
public static TestSuite suite() throws Exception {
    IgniteTestSuite suite = new IgniteTestSuite("Ignite Cache Queries Test Suite");
    suite.addTestSuite(SqlParserCreateIndexSelfTest.class);
    suite.addTestSuite(SqlParserDropIndexSelfTest.class);
    suite.addTestSuite(SqlParserBulkLoadSelfTest.class);
    suite.addTestSuite(SqlParserSetStreamingSelfTest.class);
    suite.addTestSuite(SqlConnectorConfigurationValidationSelfTest.class);
    suite.addTestSuite(ClientConnectorConfigurationValidationSelfTest.class);
    suite.addTestSuite(SqlSchemaSelfTest.class);
    suite.addTestSuite(MultipleStatementsSqlQuerySelfTest.class);
    // Misc tests.
    // TODO: Enable when IGNITE-1094 is fixed.
    // suite.addTest(new TestSuite(QueryEntityValidationSelfTest.class));
    suite.addTest(new TestSuite(DuplicateKeyValueClassesSelfTest.class));
    suite.addTest(new TestSuite(GridCacheLazyQueryPartitionsReleaseTest.class));
    // Dynamic index create/drop tests.
    suite.addTest(new TestSuite(SchemaExchangeSelfTest.class));
    suite.addTest(new TestSuite(DynamicIndexServerCoordinatorBasicSelfTest.class));
    suite.addTest(new TestSuite(DynamicIndexServerBasicSelfTest.class));
    suite.addTest(new TestSuite(DynamicIndexServerNodeFilterCoordinatorBasicSelfTest.class));
    suite.addTest(new TestSuite(DynamicIndexServerNodeFIlterBasicSelfTest.class));
    suite.addTest(new TestSuite(DynamicIndexClientBasicSelfTest.class));
    // H2 tests.
    // TODO: IGNITE-4994: Restore mock.
    // suite.addTest(new TestSuite(GridH2TableSelfTest.class));
    suite.addTest(new TestSuite(GridH2IndexingInMemSelfTest.class));
    suite.addTest(new TestSuite(GridH2IndexingOffheapSelfTest.class));
    // Parsing
    suite.addTestSuite(GridQueryParsingTest.class);
    suite.addTestSuite(IgniteCacheSqlQueryErrorSelfTest.class);
    // Config.
    suite.addTestSuite(IgniteCacheDuplicateEntityConfigurationSelfTest.class);
    suite.addTestSuite(IncorrectQueryEntityTest.class);
    // Queries tests.
    suite.addTestSuite(LazyQuerySelfTest.class);
    suite.addTestSuite(IgniteSqlSplitterSelfTest.class);
    suite.addTestSuite(SqlPushDownFunctionTest.class);
    suite.addTestSuite(IgniteSqlSegmentedIndexSelfTest.class);
    suite.addTestSuite(IgniteCachelessQueriesSelfTest.class);
    suite.addTestSuite(IgniteSqlSegmentedIndexMultiNodeSelfTest.class);
    suite.addTestSuite(IgniteSqlSchemaIndexingTest.class);
    suite.addTestSuite(GridCacheQueryIndexDisabledSelfTest.class);
    suite.addTestSuite(IgniteCacheQueryLoadSelfTest.class);
    suite.addTestSuite(IgniteCacheLocalQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheLocalAtomicQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheReplicatedQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheReplicatedQueryP2PDisabledSelfTest.class);
    suite.addTestSuite(IgniteCacheReplicatedQueryEvtsDisabledSelfTest.class);
    suite.addTestSuite(IgniteCachePartitionedQuerySelfTest.class);
    suite.addTestSuite(IgniteCachePartitionedSnapshotEnabledQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheAtomicQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheAtomicNearEnabledQuerySelfTest.class);
    suite.addTestSuite(IgniteCachePartitionedQueryP2PDisabledSelfTest.class);
    suite.addTestSuite(IgniteCachePartitionedQueryEvtsDisabledSelfTest.class);
    suite.addTestSuite(IgniteCacheQueryIndexSelfTest.class);
    suite.addTestSuite(IgniteCacheCollocatedQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheLargeResultSelfTest.class);
    suite.addTestSuite(GridCacheQueryInternalKeysSelfTest.class);
    suite.addTestSuite(IgniteSqlBigIntegerKeyTest.class);
    suite.addTestSuite(IgniteCacheOffheapEvictQueryTest.class);
    suite.addTestSuite(IgniteCacheOffheapIndexScanTest.class);
    suite.addTestSuite(IgniteCacheQueryAbstractDistributedJoinSelfTest.class);
    suite.addTestSuite(GridCacheCrossCacheQuerySelfTest.class);
    suite.addTestSuite(GridCacheQuerySerializationSelfTest.class);
    suite.addTestSuite(IgniteBinaryObjectFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteStableBaselineBinObjFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteBinaryWrappedObjectFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheQueryH2IndexingLeakTest.class);
    suite.addTestSuite(IgniteCacheQueryNoRebalanceSelfTest.class);
    suite.addTestSuite(GridCacheQueryTransformerSelfTest.class);
    suite.addTestSuite(IgniteCachePrimitiveFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheJoinQueryWithAffinityKeyTest.class);
    suite.addTestSuite(IgniteCacheJoinPartitionedAndReplicatedTest.class);
    suite.addTestSuite(IgniteCrossCachesJoinsQueryTest.class);
    suite.addTestSuite(IgniteCacheMultipleIndexedTypesTest.class);
    // DML.
    suite.addTestSuite(IgniteCacheMergeSqlQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheInsertSqlQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheUpdateSqlQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheDeleteSqlQuerySelfTest.class);
    suite.addTestSuite(IgniteSqlSkipReducerOnUpdateDmlSelfTest.class);
    suite.addTestSuite(IgniteSqlSkipReducerOnUpdateDmlFlagSelfTest.class);
    suite.addTestSuite(IgniteBinaryObjectQueryArgumentsTest.class);
    suite.addTestSuite(IgniteBinaryObjectLocalQueryArgumentsTest.class);
    suite.addTestSuite(IndexingSpiQuerySelfTest.class);
    suite.addTestSuite(IndexingSpiQueryTxSelfTest.class);
    suite.addTestSuite(IgniteCacheMultipleIndexedTypesTest.class);
    suite.addTestSuite(IgniteSqlQueryMinMaxTest.class);
    // DDL.
    suite.addTestSuite(H2DynamicIndexTransactionalReplicatedSelfTest.class);
    suite.addTestSuite(H2DynamicIndexTransactionalPartitionedSelfTest.class);
    suite.addTestSuite(H2DynamicIndexTransactionalPartitionedNearSelfTest.class);
    suite.addTestSuite(H2DynamicIndexAtomicReplicatedSelfTest.class);
    suite.addTestSuite(H2DynamicIndexAtomicPartitionedSelfTest.class);
    suite.addTestSuite(H2DynamicIndexAtomicPartitionedNearSelfTest.class);
    suite.addTestSuite(H2DynamicTableSelfTest.class);
    suite.addTestSuite(H2DynamicColumnsClientBasicSelfTest.class);
    suite.addTestSuite(H2DynamicColumnsServerBasicSelfTest.class);
    suite.addTestSuite(H2DynamicColumnsServerCoordinatorBasicSelfTest.class);
    // DML+DDL.
    suite.addTestSuite(H2DynamicIndexingComplexClientAtomicPartitionedTest.class);
    suite.addTestSuite(H2DynamicIndexingComplexClientAtomicReplicatedTest.class);
    suite.addTestSuite(H2DynamicIndexingComplexClientTransactionalPartitionedTest.class);
    suite.addTestSuite(H2DynamicIndexingComplexClientTransactionalReplicatedTest.class);
    suite.addTestSuite(H2DynamicIndexingComplexServerAtomicPartitionedTest.class);
    suite.addTestSuite(H2DynamicIndexingComplexServerAtomicReplicatedTest.class);
    suite.addTestSuite(H2DynamicIndexingComplexServerTransactionalPartitionedTest.class);
    suite.addTestSuite(H2DynamicIndexingComplexServerTransactionalReplicatedTest.class);
    // Fields queries.
    suite.addTestSuite(SqlFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheLocalFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheReplicatedFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheReplicatedFieldsQueryROSelfTest.class);
    suite.addTestSuite(IgniteCacheReplicatedFieldsQueryP2PEnabledSelfTest.class);
    suite.addTestSuite(IgniteCacheReplicatedFieldsQueryJoinNoPrimaryPartitionsSelfTest.class);
    suite.addTestSuite(IgniteCachePartitionedFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheAtomicFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheAtomicNearEnabledFieldsQuerySelfTest.class);
    suite.addTestSuite(IgniteCachePartitionedFieldsQueryP2PEnabledSelfTest.class);
    suite.addTestSuite(IgniteCacheFieldsQueryNoDataSelfTest.class);
    suite.addTestSuite(GridCacheQueryIndexingDisabledSelfTest.class);
    suite.addTestSuite(GridOrderedMessageCancelSelfTest.class);
    suite.addTestSuite(CacheQueryEvictDataLostTest.class);
    // Full text queries.
    suite.addTestSuite(GridCacheFullTextQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheFullTextQueryNodeJoiningSelfTest.class);
    // Ignite cache and H2 comparison.
    suite.addTestSuite(BaseH2CompareQueryTest.class);
    suite.addTestSuite(H2CompareBigQueryTest.class);
    suite.addTestSuite(H2CompareBigQueryDistributedJoinsTest.class);
    // Cache query metrics.
    suite.addTestSuite(CacheLocalQueryMetricsSelfTest.class);
    suite.addTestSuite(CachePartitionedQueryMetricsDistributedSelfTest.class);
    suite.addTestSuite(CachePartitionedQueryMetricsLocalSelfTest.class);
    suite.addTestSuite(CacheReplicatedQueryMetricsDistributedSelfTest.class);
    suite.addTestSuite(CacheReplicatedQueryMetricsLocalSelfTest.class);
    // Cache query metrics.
    suite.addTestSuite(CacheLocalQueryDetailMetricsSelfTest.class);
    suite.addTestSuite(CachePartitionedQueryDetailMetricsDistributedSelfTest.class);
    suite.addTestSuite(CachePartitionedQueryDetailMetricsLocalSelfTest.class);
    suite.addTestSuite(CacheReplicatedQueryDetailMetricsDistributedSelfTest.class);
    suite.addTestSuite(CacheReplicatedQueryDetailMetricsLocalSelfTest.class);
    // Unmarshalling query test.
    suite.addTestSuite(IgniteCacheP2pUnmarshallingQueryErrorTest.class);
    suite.addTestSuite(IgniteCacheNoClassQuerySelfTest.class);
    // Cancellation.
    suite.addTestSuite(IgniteCacheDistributedQueryCancelSelfTest.class);
    suite.addTestSuite(IgniteCacheLocalQueryCancelOrTimeoutSelfTest.class);
    // Distributed joins.
    suite.addTestSuite(H2CompareBigQueryDistributedJoinsTest.class);
    suite.addTestSuite(IgniteCacheDistributedJoinCollocatedAndNotTest.class);
    suite.addTestSuite(IgniteCacheDistributedJoinCustomAffinityMapper.class);
    suite.addTestSuite(IgniteCacheDistributedJoinNoIndexTest.class);
    suite.addTestSuite(IgniteCacheDistributedJoinPartitionedAndReplicatedTest.class);
    suite.addTestSuite(IgniteCacheDistributedJoinQueryConditionsTest.class);
    suite.addTestSuite(IgniteCacheDistributedJoinTest.class);
    suite.addTestSuite(IgniteSqlDistributedJoinSelfTest.class);
    // Other.
    suite.addTestSuite(CacheIteratorScanQueryTest.class);
    suite.addTestSuite(CacheQueryNewClientSelfTest.class);
    suite.addTestSuite(CacheOffheapBatchIndexingSingleTypeTest.class);
    suite.addTestSuite(CacheSqlQueryValueCopySelfTest.class);
    suite.addTestSuite(IgniteCacheQueryCacheDestroySelfTest.class);
    suite.addTestSuite(IgniteQueryDedicatedPoolTest.class);
    suite.addTestSuite(IgniteSqlEntryCacheModeAgnosticTest.class);
    suite.addTestSuite(QueryEntityCaseMismatchTest.class);
    suite.addTestSuite(IgniteCacheDistributedPartitionQuerySelfTest.class);
    suite.addTestSuite(IgniteCacheDistributedPartitionQueryNodeRestartsSelfTest.class);
    suite.addTestSuite(IgniteCacheDistributedPartitionQueryConfigurationSelfTest.class);
    suite.addTestSuite(IgniteSqlKeyValueFieldsTest.class);
    suite.addTestSuite(IgniteSqlRoutingTest.class);
    suite.addTestSuite(IgniteSqlNotNullConstraintTest.class);
    suite.addTestSuite(LongIndexNameTest.class);
    suite.addTestSuite(GridCacheQuerySqlFieldInlineSizeSelfTest.class);
    suite.addTestSuite(IgniteSqlParameterizedQueryTest.class);
    suite.addTestSuite(H2ConnectionLeaksSelfTest.class);
    suite.addTestSuite(IgniteCheckClusterStateBeforeExecuteQueryTest.class);
    suite.addTestSuite(OptimizedMarshallerIndexNameTest.class);
    suite.addTestSuite(IgniteSqlDefaultValueTest.class);
    // H2 Rows on-heap cache
    suite.addTestSuite(H2RowCacheSelfTest.class);
    suite.addTestSuite(H2RowCachePageEvictionTest.class);
    // User operation SQL
    suite.addTestSuite(SqlParserUserSelfTest.class);
    suite.addTestSuite(SqlUserCommandSelfTest.class);
    return suite;
}
Also used : DynamicIndexServerBasicSelfTest(org.apache.ignite.internal.processors.cache.index.DynamicIndexServerBasicSelfTest) TestSuite(junit.framework.TestSuite) IgniteTestSuite(org.apache.ignite.testframework.IgniteTestSuite) SchemaExchangeSelfTest(org.apache.ignite.internal.processors.cache.index.SchemaExchangeSelfTest) DynamicIndexServerCoordinatorBasicSelfTest(org.apache.ignite.internal.processors.cache.index.DynamicIndexServerCoordinatorBasicSelfTest) DynamicIndexServerNodeFilterCoordinatorBasicSelfTest(org.apache.ignite.internal.processors.cache.index.DynamicIndexServerNodeFilterCoordinatorBasicSelfTest) GridH2IndexingInMemSelfTest(org.apache.ignite.internal.processors.query.h2.GridH2IndexingInMemSelfTest) GridCacheLazyQueryPartitionsReleaseTest(org.apache.ignite.internal.processors.cache.GridCacheLazyQueryPartitionsReleaseTest) DynamicIndexClientBasicSelfTest(org.apache.ignite.internal.processors.cache.index.DynamicIndexClientBasicSelfTest) DuplicateKeyValueClassesSelfTest(org.apache.ignite.internal.processors.cache.index.DuplicateKeyValueClassesSelfTest) DynamicIndexServerNodeFIlterBasicSelfTest(org.apache.ignite.internal.processors.cache.index.DynamicIndexServerNodeFIlterBasicSelfTest) GridH2IndexingOffheapSelfTest(org.apache.ignite.internal.processors.query.h2.GridH2IndexingOffheapSelfTest) IgniteTestSuite(org.apache.ignite.testframework.IgniteTestSuite)

Example 20 with AND

use of org.apache.ignite.internal.processors.query.h2.sql.GridSqlOperationType.AND in project ignite by apache.

the class GridIndexRebuildSelfTest method testDataRaceWhenMarkIdxRebuild.

/**
 * Test checks that there will be no data race between notifications about index rebuilding
 * and an indication that index has been rebuilt.
 *
 * Steps:
 * 1)Create a node with data filling;
 * 2)Stopping a node with deletion index.bin;
 * 3)Set a delay between notification and a note about index rebuilding;
 * 4)Restarting node with waiting index rebuild;
 * 5)Checking that index is not being rebuilt.
 *
 * @throws Exception if failed.
 */
@Test
public void testDataRaceWhenMarkIdxRebuild() throws Exception {
    IgniteEx srv = startServer();
    IgniteInternalCache internalCache = createAndFillTableWithIndex(srv);
    File idxFile = indexFile(internalCache);
    stopAllGrids();
    assertTrue(delete(idxFile));
    BlockingIndexesRebuildTask.slowRebuildIdxFut = true;
    srv = startServer();
    srv.cache(CACHE_NAME).indexReadyFuture().get();
    IgniteH2Indexing idx = (IgniteH2Indexing) srv.context().query().getIndexing();
    GridH2Table tbl = idx.schemaManager().dataTable(DFLT_SCHEMA, CACHE_NAME);
    assertNotNull(tbl);
    assertFalse(tbl.rebuildFromHashInProgress());
}
Also used : IgniteEx(org.apache.ignite.internal.IgniteEx) GridH2Table(org.apache.ignite.internal.processors.query.h2.opt.GridH2Table) IgniteInternalCache(org.apache.ignite.internal.processors.cache.IgniteInternalCache) File(java.io.File) DynamicIndexAbstractSelfTest(org.apache.ignite.internal.processors.cache.index.DynamicIndexAbstractSelfTest) Test(org.junit.Test)

Aggregations

IgniteCheckedException (org.apache.ignite.IgniteCheckedException)37 IgniteSQLException (org.apache.ignite.internal.processors.query.IgniteSQLException)33 ArrayList (java.util.ArrayList)26 GridH2Table (org.apache.ignite.internal.processors.query.h2.opt.GridH2Table)25 List (java.util.List)22 IgniteException (org.apache.ignite.IgniteException)21 SQLException (java.sql.SQLException)15 GridCacheContext (org.apache.ignite.internal.processors.cache.GridCacheContext)15 GridH2RowDescriptor (org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor)13 HashMap (java.util.HashMap)12 Column (org.h2.table.Column)12 LinkedHashMap (java.util.LinkedHashMap)11 GridQueryTypeDescriptor (org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor)11 Index (org.h2.index.Index)11 PreparedStatement (java.sql.PreparedStatement)9 SqlFieldsQuery (org.apache.ignite.cache.query.SqlFieldsQuery)9 GridQueryProperty (org.apache.ignite.internal.processors.query.GridQueryProperty)9 UpdatePlan (org.apache.ignite.internal.processors.query.h2.dml.UpdatePlan)9 GridSqlColumn (org.apache.ignite.internal.processors.query.h2.sql.GridSqlColumn)9 GridSqlElement (org.apache.ignite.internal.processors.query.h2.sql.GridSqlElement)9