private void checkDml(IgniteCache<Long,TestData> cache, Boolean dataPageScanEnabled) { DirectPageScanIndexing.expectedDataPageScanEnabled = dataPageScanEnabled; assertEquals(0L, cache.query(new SqlFieldsQuery( "update TestData set z = z + 1 where check_scan_flag(?,false)") .setDataPageScanEnabled(DirectPageScanIndexing.expectedDataPageScanEnabled) .setArgs(DirectPageScanIndexing.expectedDataPageScanEnabled) ).getAll().get(0).get(0)); checkSqlLastFindDataPageScan(dataPageScanEnabled); }
.setDataPageScanEnabled(true)).getAll(); assertEquals(1, res.size()); assertEquals(777L, res.get(0).get(0)); .setDataPageScanEnabled(true)).getAll(); assertEquals(1, res.size()); assertEquals("bla-bla", res.get(0).get(0)); .setDataPageScanEnabled(true)).getAll(); assertEquals(1, res.size()); assertEquals(3, res.get(0).get(0)); .setDataPageScanEnabled(true)).getAll(); assertEquals(1, res.size()); assertEquals(7, res.get(0).get(0)); .setDataPageScanEnabled(true)).getAll(); assertEquals(1, res.size()); assertEquals(99, res.get(0).get(0));
.setDataPageScanEnabled(false)).getAll(); .setDataPageScanEnabled(false)).getAll(); .setDataPageScanEnabled(false)).getAll(); cache.query(new SqlFieldsQuery("SELECT * FROM Value").setDataPageScanEnabled(false)).getAll(); cache.query(new SqlFieldsQuery("DELETE FROM Value").setDataPageScanEnabled(false)).getAll(); cache.query(new SqlFieldsQuery("SELECT * FROM Value").setDataPageScanEnabled(false)).getAll();
fldsQry.setPageSize(req.pageSize()); fldsQry.setLocal(true); fldsQry.setDataPageScanEnabled(req.isDataPageScanEnabled());
/** {@inheritDoc} */ @Override public UpdateSourceIterator<?> prepareDistributedUpdate(GridCacheContext<?, ?> cctx, int[] ids, int[] parts, String schema, String qry, Object[] params, int flags, int pageSize, int timeout, AffinityTopologyVersion topVer, MvccSnapshot mvccSnapshot, GridQueryCancel cancel) throws IgniteCheckedException { SqlFieldsQuery fldsQry = new SqlFieldsQuery(qry); if (params != null) fldsQry.setArgs(params); fldsQry.setEnforceJoinOrder(isFlagSet(flags, GridH2QueryRequest.FLAG_ENFORCE_JOIN_ORDER)); fldsQry.setTimeout(timeout, TimeUnit.MILLISECONDS); fldsQry.setPageSize(pageSize); fldsQry.setLocal(true); fldsQry.setDataPageScanEnabled(isDataPageScanEnabled(flags)); boolean loc = true; final boolean replicated = isFlagSet(flags, GridH2QueryRequest.FLAG_REPLICATED); GridCacheContext<?, ?> cctx0; if (!replicated && !F.isEmpty(ids) && (cctx0 = CU.firstPartitioned(cctx.shared(), ids)) != null && cctx0.config().getQueryParallelism() > 1) { fldsQry.setDistributedJoins(true); loc = false; } Connection conn = connMgr.connectionForThread().connection(schema); H2Utils.setupConnection(conn, false, fldsQry.isEnforceJoinOrder()); PreparedStatement stmt = preparedStatementWithParams(conn, fldsQry.getSql(), F.asList(fldsQry.getArgs()), true); return dmlProc.prepareDistributedUpdate(schema, conn, stmt, fldsQry, backupFilter(topVer, parts), cancel, loc, topVer, mvccSnapshot); }
"and check_scan_flag(?,true)") .setLazy(true) .setDataPageScanEnabled(DirectPageScanIndexing.expectedDataPageScanEnabled) .setArgs(1, expNestedLoops, DirectPageScanIndexing.expectedDataPageScanEnabled) .setPageSize(keysCnt / 2) // Must be less than keysCnt.
/** {@inheritDoc} */ @SuppressWarnings("deprecation") @Override public SqlFieldsQuery generateFieldsQuery(String cacheName, SqlQuery qry) { String schemaName = schema(cacheName); String type = qry.getType(); H2TableDescriptor tblDesc = schemaMgr.tableForType(schemaName, cacheName, type); if (tblDesc == null) throw new IgniteSQLException("Failed to find SQL table for type: " + type, IgniteQueryErrorCode.TABLE_NOT_FOUND); String sql; try { sql = H2Utils.generateFieldsQueryString(qry.getSql(), qry.getAlias(), tblDesc); } catch (IgniteCheckedException e) { throw new IgniteException(e); } SqlFieldsQuery res = new SqlFieldsQuery(sql); res.setArgs(qry.getArgs()); res.setDistributedJoins(qry.isDistributedJoins()); res.setLocal(qry.isLocal()); res.setPageSize(qry.getPageSize()); res.setPartitions(qry.getPartitions()); res.setReplicatedOnly(qry.isReplicatedOnly()); res.setSchema(schemaName); res.setSql(sql); res.setDataPageScanEnabled(qry.isDataPageScanEnabled()); if (qry.getTimeout() > 0) res.setTimeout(qry.getTimeout(), TimeUnit.MILLISECONDS); return res; }
fldsQry.setDataPageScanEnabled(dataPageScanEnabled);
.setPageSize(qry.getPageSize()) .setTimeout(qry.getTimeout(), TimeUnit.MILLISECONDS) .setDataPageScanEnabled(qry.isDataPageScanEnabled());
.setPageSize(fieldsQry.getPageSize()) .setTimeout((int)timeout, TimeUnit.MILLISECONDS) .setDataPageScanEnabled(fieldsQry.isDataPageScanEnabled()); .setPageSize(fieldsQry.getPageSize()) .setTimeout(fieldsQry.getTimeout(), TimeUnit.MILLISECONDS) .setDataPageScanEnabled(fieldsQry.isDataPageScanEnabled());