/** {@inheritDoc} */ @Override public SqlFieldsQueryEx setLocal(boolean loc) { super.setLocal(loc); return this; }
/** * Make a copy of {@link SqlFieldsQuery} with all flags and preserving type. * @param oldQry Query to copy. * @return Query copy. */ private SqlFieldsQuery cloneFieldsQuery(SqlFieldsQuery oldQry) { return oldQry.copy().setLocal(oldQry.isLocal()).setPageSize(oldQry.getPageSize()); }
/** * Run DML query as SqlFieldsQuery and check that DML is not allowed or not inside transaction. Also checked that * using DML will not lead to rollback * * @param dmlQry Dml query which should be executed in transaction. * @param isLocal Is local query. * @param isAllowed true in case DML should work inside transaction, false otherwise. */ private void runDmlSqlFieldsQueryInTransactionTest(String dmlQry, boolean isLocal, boolean isAllowed) { SqlFieldsQuery query = new SqlFieldsQuery(dmlQry).setLocal(isLocal); runDmlInTransactionTest(query, isAllowed); }
/** * @param ignite Ignite. * @param orgId Organization id. * @return Count of found Person object with specified orgId */ private static int getPersonsCountBySqlFieldLocalQuery(final IgniteEx ignite, int orgId) { List res = ignite.cache(Person.class.getSimpleName()) .query(new SqlFieldsQuery( String.format("SELECT p.id FROM \"%s\".Person as p " + "WHERE p.orgId = " + orgId, Person.class.getSimpleName())).setLocal(true)) .getAll(); return res.size(); }
@Override public void run() { SqlFieldsQuery qry = new SqlFieldsQuery("select * from String").setLocal(false); cache.query(qry).getAll(); latch.countDown(); } }.start();
/** * Executes sql query using native sql api. * * @param sql sql query. * @param local perform local or non-local query. * @return fully fetched result of query. */ private List<List<?>> execute(String sql, boolean local) { return cache.query(new SqlFieldsQuery(sql).setLocal(local)).getAll(); }
/** * Number of objects of given type in index. * * @param cls Value type. * @return Objects number. * @throws IgniteCheckedException If failed. */ private long size(Class<?> cls) throws IgniteCheckedException { return (Long)grid().cache(DEFAULT_CACHE_NAME).query( new SqlFieldsQuery("select count(*) from " + QueryUtils.typeName(cls)).setLocal(true)) .getAll().get(0).get(0); }
@Override public Object call() { return node.cache("Person").query(new SqlFieldsQuery(qry).setLocal(loc)).getAll(); } }, IgniteSQLException.class, exMsg);
@Override public void run() throws Exception { node().cache("ints").query(new SqlFieldsQuery(sql).setLocal(true)).getAll(); } }, IgniteQueryErrorCode.TRANSACTION_TYPE_MISMATCH);
@Override public void run() throws Exception { node().cache("ints").query(new SqlFieldsQuery(sql).setLocal(true)).getAll(); } }, IgniteQueryErrorCode.TRANSACTION_TYPE_MISMATCH);
/** * Tests local sql query. */ @Test public void testLocalSqlFieldsQuery() { IgniteCache<Integer, Value> cache = grid(0).cache(DEFAULT_CACHE_NAME); QueryCursor<List<?>> cur = cache.query(new SqlFieldsQuery("select _val from Value").setLocal(true)); List<List<?>> all = cur.getAll(); assertFalse(all.isEmpty()); for (List<?> entry : all) ((Value)entry.get(0)).str = "after"; check(cache); }
/** * Execute DDL statement on given node. * * @param sql Statement. */ private List<List<?>> executeLocal(GridCacheContext cctx, String sql) { return queryProcessor(cctx.grid()).querySqlFields(new SqlFieldsQuery(sql).setLocal(true), true).getAll(); }
/** * Run query locally. * * @param node Node. * @param sqlText Query. * @return Results. */ private List<List<?>> runSqlLocal(Ignite node, String sqlText) { GridQueryProcessor qryProc = ((IgniteEx)node).context().query(); return qryProc.querySqlFields(new SqlFieldsQuery(sqlText).setLocal(true), false).getAll(); } }
/** * @throws Exception If failed. */ @Test public void testInformationSchema() throws Exception { jcache(String.class, String.class).query( new SqlFieldsQuery("SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS").setLocal(true)).getAll(); } }
/** * Local SQL Fields check nullification after complete */ @Test public void testSqlFieldsQueryLocalComplete() { SqlFieldsQuery qry = new SqlFieldsQuery(SELECT_MAX_SAL_SQLF); qry.setLocal(true); QueryCursor<List<?>> qryCurs = cache().query(qry); qryCurs.getAll(); H2ResultSetIterator h2It = extractGridIteratorInnerH2ResultSetIterator(qryCurs); checkIterator(h2It); }
/** * Local SQL Fields check nullification after close */ @Test public void testSqlFieldsQueryLocalClose() { SqlFieldsQuery qry = new SqlFieldsQuery(SELECT_MAX_SAL_SQLF); qry.setLocal(true); QueryCursor<List<?>> qryCurs = cache().query(qry); qryCurs.iterator(); qryCurs.close(); H2ResultSetIterator h2It = extractGridIteratorInnerH2ResultSetIterator(qryCurs); checkIterator(h2It); }
/** * @param cache Cache. * @param qry Query. * @return Query plan. */ protected final String queryPlan(IgniteCache<?, ?> cache, SqlFieldsQuery qry) { return (String)cache.query(new SqlFieldsQuery("explain " + qry.getSql()) .setArgs(qry.getArgs()) .setLocal(qry.isLocal()) .setCollocated(qry.isCollocated()) .setPageSize(qry.getPageSize()) .setDistributedJoins(qry.isDistributedJoins()) .setEnforceJoinOrder(qry.isEnforceJoinOrder())) .getAll().get(0).get(0); }
/** * @param firstCacheMode First cache mode. * @param secondCacheMode Second cache mode. * @param replicatedOnly Replicated only query flag. * @param loc Local query flag. */ private void createCachesAndExecuteQuery(TestCacheMode firstCacheMode, TestCacheMode secondCacheMode, boolean replicatedOnly, boolean loc) { Ignite node = ignite(0); node.createCache(cacheConfig(PERSON_CAHE_NAME, firstCacheMode, Integer.class, Person.class)); node.createCache(cacheConfig(ORG_CACHE_NAME, secondCacheMode, Integer.class, Organization.class)); IgniteCache<Integer, Person> c = node.cache(PERSON_CAHE_NAME); c.query(new SqlFieldsQuery(SELECT).setReplicatedOnly(replicatedOnly).setLocal(loc)).getAll(); }
/** * Checking that DML can be executed without a errors outside transaction. * * @throws Exception In case failure. */ @Test public void testDmlNotInTransaction() throws Exception { prepareIgnite(); for (String dmlQuery : DML_QUERIES) { grid(0).cache(CACHE_PERSON).query(new SqlFieldsQuery(dmlQuery)); grid(0).cache(CACHE_PERSON).clear(); grid(0).cache(CACHE_PERSON).query(new SqlFieldsQuery(dmlQuery).setLocal(true)); } }
/** * */ @Test public void testMergeFromSubquery() { IgniteCache p = ignite(0).cache("S2P").withKeepBinary(); p.query(new SqlFieldsQuery("merge into String (_key, _val) values ('s', ?), " + "('a', ?)").setArgs("Sergi", "Alex").setLocal(true)); assertEquals("Sergi", p.get("s")); assertEquals("Alex", p.get("a")); p.query(new SqlFieldsQuery("merge into Person(_key, id, firstName) " + "(select substring(lower(_val), 0, 2), cast(length(_val) as int), _val from String)")); assertEquals(createPerson(5, "Sergi"), p.get("se")); assertEquals(createPerson(4, "Alex"), p.get("al")); }