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;
}
}
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();
}
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);
}
}
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;
}
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());
}
Aggregations