This is an automated email from the ASF dual-hosted git repository.
alexpl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new c92eba5a373 IGNITE-23251 SQL Calcite: Add number of passed query
parameters validation - Fixes #11547.
c92eba5a373 is described below
commit c92eba5a373fcec58b1c992348725950714e437e
Author: Vladimir Steshin <[email protected]>
AuthorDate: Fri Apr 4 10:27:27 2025 +0300
IGNITE-23251 SQL Calcite: Add number of passed query parameters validation
- Fixes #11547.
Signed-off-by: Aleksey Plekhanov <[email protected]>
---
.../query/calcite/CalciteQueryProcessor.java | 31 +++-
.../calcite/sql/stat/IgniteSqlStatisticsTable.java | 7 +-
.../CalciteBasicSecondaryIndexIntegrationTest.java | 4 +-
.../DynamicParametersIntegrationTest.java | 179 ++++++++++++++++++++-
.../integration/LimitOffsetIntegrationTest.java | 4 +-
.../QueryWithPartitionsIntegrationTest.java | 18 ++-
.../query/calcite/planner/PlannerTest.java | 2 +-
7 files changed, 224 insertions(+), 21 deletions(-)
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessor.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessor.java
index f060d32c011..9d63235146f 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessor.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessor.java
@@ -417,7 +417,7 @@ public class CalciteQueryProcessor extends
GridProcessorAdapter implements Query
String sql,
Object... params
) throws IgniteSQLException {
- return parseAndProcessQuery(qryCtx, executionSvc::executePlan,
schemaName, sql, params);
+ return parseAndProcessQuery(qryCtx, executionSvc::executePlan,
schemaName, sql, true, params);
}
/** {@inheritDoc} */
@@ -426,7 +426,7 @@ public class CalciteQueryProcessor extends
GridProcessorAdapter implements Query
String schemaName,
String sql
) throws IgniteSQLException {
- return parseAndProcessQuery(ctx, (qry, plan) -> fieldsMeta(plan,
true), schemaName, sql);
+ return parseAndProcessQuery(ctx, (qry, plan) -> fieldsMeta(plan,
true), schemaName, sql, false);
}
/** {@inheritDoc} */
@@ -435,7 +435,7 @@ public class CalciteQueryProcessor extends
GridProcessorAdapter implements Query
String schemaName,
String sql
) throws IgniteSQLException {
- return parseAndProcessQuery(ctx, (qry, plan) -> fieldsMeta(plan,
false), schemaName, sql);
+ return parseAndProcessQuery(ctx, (qry, plan) -> fieldsMeta(plan,
false), schemaName, sql, false);
}
/** {@inheritDoc} */
@@ -511,6 +511,7 @@ public class CalciteQueryProcessor extends
GridProcessorAdapter implements Query
BiFunction<RootQuery<Object[]>, QueryPlan, T> action,
@Nullable String schemaName,
String sql,
+ boolean validateParamsCnt,
Object... params
) throws IgniteSQLException {
ensureTransactionModeSupported(qryCtx);
@@ -540,6 +541,9 @@ public class CalciteQueryProcessor extends
GridProcessorAdapter implements Query
IgniteQueryErrorCode.UNSUPPORTED_OPERATION);
}
+ if (validateParamsCnt)
+ checkDynamicParamsCount(qryList, params);
+
List<T> res = new ArrayList<>(qryList.size());
List<RootQuery<Object[]>> qrys = new ArrayList<>(qryList.size());
@@ -565,6 +569,27 @@ public class CalciteQueryProcessor extends
GridProcessorAdapter implements Query
return res;
}
+ /** */
+ private void checkDynamicParamsCount(SqlNode node, Object[] params) {
+ int[] maxDynParIdx = new int[] {-1};
+
+ node.accept(new SqlShuttle() {
+ @Override public SqlNode visit(SqlDynamicParam param) {
+ if (param.getIndex() > maxDynParIdx[0])
+ maxDynParIdx[0] = param.getIndex();
+
+ return param;
+ }
+ });
+
+ int paramsCnt = params == null ? 0 : params.length;
+
+ if (paramsCnt != maxDynParIdx[0] + 1) {
+ throw new IgniteSQLException("Wrong number of query parameters.
Expected: " + (maxDynParIdx[0] + 1) + ", passed: "
+ + paramsCnt + '.', IgniteQueryErrorCode.PARSING);
+ }
+ }
+
/** */
private String removeSensitive(SqlNode qry) {
if (QueryUtils.INCLUDE_SENSITIVE)
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/stat/IgniteSqlStatisticsTable.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/stat/IgniteSqlStatisticsTable.java
index b589552534d..d81f959d309 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/stat/IgniteSqlStatisticsTable.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/stat/IgniteSqlStatisticsTable.java
@@ -52,10 +52,9 @@ public class IgniteSqlStatisticsTable extends SqlCall {
) {
super(pos);
this.name = name;
- if (!F.isEmpty(columns))
- this.columns = SqlNodeList.of(columns.getParserPosition(),
columns.getList());
- else
- this.columns = null;
+ this.columns = F.isEmpty(columns)
+ ? SqlNodeList.EMPTY
+ : SqlNodeList.of(columns.getParserPosition(), columns.getList());
}
/** {@inheritDoc} */
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CalciteBasicSecondaryIndexIntegrationTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CalciteBasicSecondaryIndexIntegrationTest.java
index 28146315298..7016a65f3d1 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CalciteBasicSecondaryIndexIntegrationTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CalciteBasicSecondaryIndexIntegrationTest.java
@@ -572,8 +572,8 @@ public class CalciteBasicSecondaryIndexIntegrationTest
extends AbstractBasicInte
/** */
@Test
public void testIndexedFieldGreaterThanFilter() {
- assertQuery("SELECT * FROM Developer WHERE depId>21")
- .withParams(3)
+ assertQuery("SELECT * FROM Developer WHERE depId>?")
+ .withParams(21)
.matches(containsIndexScan("PUBLIC", "DEVELOPER", DEPID_IDX))
.returns(23, "Musorgskii", 22, "", -1)
.check();
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DynamicParametersIntegrationTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DynamicParametersIntegrationTest.java
index af3f92dd25b..daa39e374a0 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DynamicParametersIntegrationTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DynamicParametersIntegrationTest.java
@@ -35,6 +35,22 @@ import org.junit.Test;
* Dynamic parameters types inference test.
*/
public class DynamicParametersIntegrationTest extends
AbstractBasicIntegrationTest {
+ /** {@inheritDoc} */
+ @Override public void beforeTest() throws Exception {
+ super.beforeTest();
+
+ sql("CREATE TABLE t1 (id INTEGER PRIMARY KEY, val1 INTEGER NOT NULL,
val2 INTEGER)");
+ sql("CREATE TABLE t2 (id2 INTEGER PRIMARY KEY, val3 INTEGER NOT NULL,
val4 INTEGER)");
+ }
+
+ /** {@inheritDoc} */
+ @Override public void afterTest() throws Exception {
+ sql("DROP TABLE IF EXISTS t1");
+ sql("DROP TABLE IF EXISTS t2");
+
+ super.afterTest();
+ }
+
/** */
@Test
public void testMetadataTypesForDynamicParameters() {
@@ -65,9 +81,9 @@ public class DynamicParametersIntegrationTest extends
AbstractBasicIntegrationTe
/** */
@Test
public void testMissedValue() {
- assertThrows("SELECT ?", IgniteSQLException.class, "Illegal use of
dynamic parameter");
+ assertUnexpectedNumberOfParameters("SELECT ?");
- assertThrows("SELECT ?, ?", IgniteSQLException.class, "Illegal use of
dynamic parameter", "arg0");
+ assertUnexpectedNumberOfParameters("SELECT ?, ?", "arg0");
}
/** */
@@ -160,4 +176,163 @@ public class DynamicParametersIntegrationTest extends
AbstractBasicIntegrationTe
assertQuery("SELECT
UPPER(TYPEOF(?))").withParams(1).returns("INTEGER").check();
assertQuery("SELECT
UPPER(TYPEOF(?))").withParams(1d).returns("DOUBLE").check();
}
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInSelectList() {
+ assertUnexpectedNumberOfParameters("SELECT 1", 1);
+ assertUnexpectedNumberOfParameters("SELECT ?", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT COALESCE(?)");
+ assertUnexpectedNumberOfParameters("SELECT COALESCE(?)", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT * FROM (VALUES(1, 2, ?))
t1");
+ assertUnexpectedNumberOfParameters("SELECT * FROM (VALUES(1, 2, ?))
t1", 1, 2);
+ }
+
+ /** */
+ @Test
+ public void testDynamicParametersInExplain() {
+ sql("EXPLAIN PLAN FOR SELECT * FROM t1 WHERE id > ?", 1);
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInDelete() {
+ assertUnexpectedNumberOfParameters("DELETE FROM t1 WHERE id = 1 AND
val1=1", 1);
+ assertUnexpectedNumberOfParameters("DELETE FROM t1 WHERE id = ? AND
val1=1", 1, 2);
+ assertUnexpectedNumberOfParameters("DELETE FROM t1 WHERE id = ? AND
val1=1");
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInInsert() {
+ assertUnexpectedNumberOfParameters("INSERT INTO t1 VALUES(1, 2, 3)",
1);
+ assertUnexpectedNumberOfParameters("INSERT INTO t1 VALUES(1, 2, ?)",
1, 2);
+ assertUnexpectedNumberOfParameters("INSERT INTO t1 VALUES(1, 2, ?)");
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInExplain() {
+ assertUnexpectedNumberOfParameters("EXPLAIN PLAN FOR SELECT * FROM t1
WHERE id > ?");
+ assertUnexpectedNumberOfParameters("EXPLAIN PLAN FOR SELECT * FROM t1
WHERE id > ?", 1, 2);
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInSubqueries() {
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val2 from t1 where val2>? and val2!=val1)", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val2 from t1 where val2>? and val2!=val1)");
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val2 from t1 where val2>? and val2!=val1 " +
+ "LIMIT ? OFFSET 1)", 1, 2, 3);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val2 from t1 where val2>? and val2!=val1 " +
+ "LIMIT ? OFFSET ?)", 1);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val2 from t1 where val2>? and val2!=val1 " +
+ "LIMIT ? OFFSET ?) LIMIT ?",
+ 1, 2, 3);
+
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val3 from t2 where val3>? and val4!=val1)", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val3 from t2 where val3>? and val4!=val1)");
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val3 from t2 where val3>? and val4!=val1 " +
+ "LIMIT ? OFFSET 1)", 1, 2, 3);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val3 from t2 where val3>? and val4!=val1 " +
+ "LIMIT ? OFFSET ?)", 1);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 where val1 in
(SELECT val3 from t2 where val3>? and val4!=val1 " +
+ "LIMIT ? OFFSET ?) LIMIT ?", 1, 2, 3);
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInJoins() {
+ assertUnexpectedNumberOfParameters("SELECT val1, val3 FROM t1 JOIN t2
on val2=val4", 1);
+ assertUnexpectedNumberOfParameters("SELECT val1 * ?, val3 FROM t1 JOIN
t2 on val2=val4*?");
+ assertUnexpectedNumberOfParameters("SELECT val1 * ?, val3 FROM t1 JOIN
t2 on val2=val4*?", 1);
+ assertUnexpectedNumberOfParameters("SELECT val1 * ?, val3 FROM t1 JOIN
t2 on val2=val4*?", 1, 2, 3);
+
+ assertUnexpectedNumberOfParameters("SELECT val1 * ?, val3 FROM t1 JOIN
t2 on val2=val4*? WHERE val3>? ORDER BY " +
+ "val1 LIMIT ? OFFSET ?", 1, 2, 3, 4);
+ assertUnexpectedNumberOfParameters("SELECT val1 * ?, val3 FROM t1 JOIN
t2 on val2=val4*? WHERE val3>? ORDER BY " +
+ "val1 LIMIT ? OFFSET ?", 1, 2, 3, 4, 5, 6);
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInUnion() {
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=?", 1);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=?", 1, 2, 3);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=?");
+
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=? " +
+ "LIMIT 5 OFFSET 3", 1);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=? " +
+ "LIMIT 5 OFFSET 3", 1, 2, 3);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=? " +
+ "LIMIT 5 OFFSET 3");
+
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=? " +
+ "LIMIT ? OFFSET ?", 1, 2, 3);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=? " +
+ "LIMIT ? OFFSET ?", 1, 2, 3, 4, 5);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
UNION ALL SELECT val3 FROM t2 where val4=? " +
+ "LIMIT ? OFFSET ?");
+
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where
val2=(SELECT val3 from T2 where val3 > val1 + ? LIMIT ?) " +
+ "UNION ALL SELECT val3 FROM t2 where val4=?");
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where
val2=(SELECT val3 from T2 where val3 > val1 + ? LIMIT ?) " +
+ "UNION ALL SELECT val3 FROM t2 where val4=?", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where
val2=(SELECT val3 from T2 where val3 > val1 + ? LIMIT ?) " +
+ "UNION ALL SELECT val3 FROM t2 where val4=?", 1, 2, 3, 4);
+
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?+1
and val1>? UNION ALL SELECT val3 FROM t2 " +
+ "where val4=? LIMIT 1 OFFSET 2");
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?+1
and val1>? UNION ALL SELECT val3 FROM t2 " +
+ "where val4=? LIMIT 1 OFFSET 2", 1);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?+1
and val1>? UNION ALL SELECT val3 FROM t2 " +
+ "where val4=? LIMIT 1 OFFSET 2", 1, 2, 3, 4);
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInSeveralQueries() {
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?;
SELECT val3 FROM t2 where val4=?");
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?;
SELECT val3 FROM t2 where val4=?", 1);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?;
SELECT val3 FROM t2 where val4=?", 1);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?;
SELECT val3 FROM t2 where val4=?", 1, 2, 3);
+
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
LIMIT ? OFFSET ?; SELECT val3 FROM t2 " +
+ "where val4=? LIMIT ?", 1, 2, 3, 4);
+ assertUnexpectedNumberOfParameters("SELECT val1 FROM t1 where val2=?
LIMIT ? OFFSET ?; SELECT val3 FROM t2 " +
+ "where val4=? LIMIT ?", 1, 2, 3, 4, 5, 6);
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInLimitOffset() {
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT 1", 1);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT ?", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT ?");
+
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT 1 OFFSET
1", 1);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT ? OFFSET
?", 1, 2, 3);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT ? OFFSET
?", 1);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT 1 OFFSET
?", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 LIMIT 1 OFFSET
?");
+
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 OFFSET 1", 1);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 OFFSET ?", 1, 2);
+ assertUnexpectedNumberOfParameters("SELECT * FROM t1 OFFSET ?");
+ }
+
+ /** */
+ @Test
+ public void testWrongParametersNumberInUpdate() {
+ assertUnexpectedNumberOfParameters("UPDATE t1 SET val1=? WHERE id =
1");
+ assertUnexpectedNumberOfParameters("UPDATE t1 SET val1=? WHERE id =
1", 1, 2);
+ assertUnexpectedNumberOfParameters("UPDATE t1 SET val1=10 WHERE id =
?");
+ assertUnexpectedNumberOfParameters("UPDATE t1 SET val1=10 WHERE id =
?", 1, 2);
+ }
+
+ /** */
+ private void assertUnexpectedNumberOfParameters(String qry, Object...
params) {
+ assertThrows(qry, IgniteSQLException.class, "Wrong number of query
parameters", params);
+ }
}
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java
index 89b2d73ffda..428d4d273d9 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java
@@ -225,7 +225,7 @@ public class LimitOffsetIntegrationTest extends
AbstractBasicIntegrationTransact
log.info("SQL: " + sql + (param ? "params=" + Arrays.toString(params)
: ""));
- List<List<?>> res = sql(sql, params);
+ List<List<?>> res = sql(sql, param ? params : X.EMPTY_OBJECT_ARRAY);
assertEquals("Invalid results size. [rows=" + rows + ", limit=" + lim
+ ", off=" + off
+ ", res=" + res.size() + ']', expectedSize(rows, lim, off),
res.size());
@@ -253,7 +253,7 @@ public class LimitOffsetIntegrationTest extends
AbstractBasicIntegrationTransact
/**
* @param lim Limit.
* @param off Offset.
- * @param param Flag to place limit/offset by parameter or literal.
+ * @param param Flag to place limit/offset by parameter or literal.
* @return SQL query string.
*/
private String createSql(int lim, int off, boolean param, boolean sorted) {
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryWithPartitionsIntegrationTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryWithPartitionsIntegrationTest.java
index 660ee91dc3e..e5e68334974 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryWithPartitionsIntegrationTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryWithPartitionsIntegrationTest.java
@@ -34,6 +34,7 @@ import
org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.query.QueryContext;
import org.apache.ignite.internal.processors.query.calcite.QueryChecker;
import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.X;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -96,6 +97,9 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
/** {@inheritDoc} */
@Override protected List<List<?>> sql(String sql, Object... params) {
+ if (params.length == 1 && params[0] == X.EMPTY_OBJECT_ARRAY)
+ params = X.EMPTY_OBJECT_ARRAY;
+
return sql(local ? grid(0) : client, sql, params);
}
@@ -138,7 +142,7 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
/** */
@Test
public void testSingle() {
- Stream.of(Pair.of("SELECT * FROM T1", null),
+ Stream.of(Pair.of("SELECT * FROM T1", X.EMPTY_OBJECT_ARRAY),
Pair.of("SELECT * FROM T1 WHERE ID < ?", ENTRIES_COUNT))
.forEach(query -> {
long cnt = sql(query.left, query.right).size();
@@ -146,7 +150,7 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
assertEquals(cacheSize("T1_CACHE", parts), cnt);
});
- Stream.of(Pair.of("SELECT count(*) FROM T1", null),
+ Stream.of(Pair.of("SELECT count(*) FROM T1", X.EMPTY_OBJECT_ARRAY),
Pair.of("SELECT count(*) FROM T1 WHERE ID < ?",
ENTRIES_COUNT))
.forEach(query -> {
Long cnt = (Long)sql(query.left, query.right).get(0).get(0);
@@ -158,7 +162,7 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
/** */
@Test
public void testReplicated() {
- Stream.of(Pair.of("select * from DICT", null),
+ Stream.of(Pair.of("select * from DICT", X.EMPTY_OBJECT_ARRAY),
Pair.of("select * from DICT where id < ?", ENTRIES_COUNT))
.forEach(query -> {
List<List<?>> res = sql(query.left, query.right);
@@ -166,7 +170,7 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
assertEquals(res.size(), cacheSize("DICT_CACHE"));
});
- Stream.of(Pair.of("select count(*) from DICT", null),
+ Stream.of(Pair.of("select count(*) from DICT", X.EMPTY_OBJECT_ARRAY),
Pair.of("select count(*) from DICT where id < ?",
ENTRIES_COUNT))
.forEach(query -> {
Long size = (Long)sql(query.left, query.right).get(0).get(0);
@@ -201,7 +205,7 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
@Test
public void testInsertFromSelect() {
Stream.of(Pair.of("SELECT ID, IDX_VAL, VAL FROM T1 WHERE ID < ?",
ENTRIES_COUNT),
- Pair.of("SELECT ID, IDX_VAL, VAL FROM T1", null))
+ Pair.of("SELECT ID, IDX_VAL, VAL FROM T1",
X.EMPTY_OBJECT_ARRAY))
.forEach(query -> {
try {
sql("CREATE TABLE T3(ID INT PRIMARY KEY, IDX_VAL VARCHAR,
VAL VARCHAR) WITH cache_name=t3_cache,backups=1");
@@ -219,7 +223,7 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
/** */
@Test
public void testDelete() {
- Stream.of(Pair.of("DELETE FROM T3 WHERE ID < ?", ENTRIES_COUNT),
Pair.of("DELETE FROM T3", null))
+ Stream.of(Pair.of("DELETE FROM T3 WHERE ID < ?", ENTRIES_COUNT),
Pair.of("DELETE FROM T3", X.EMPTY_OBJECT_ARRAY))
.forEach(query -> {
try {
sql("CREATE TABLE T3(ID INT PRIMARY KEY, IDX_VAL VARCHAR,
VAL VARCHAR) WITH cache_name=t3_cache,backups=1");
@@ -245,7 +249,7 @@ public class QueryWithPartitionsIntegrationTest extends
AbstractBasicIntegration
@Test
public void testCreateTableAsSelect() {
Stream.of(Pair.of("SELECT ID, IDX_VAL, VAL FROM T1 WHERE ID < ?",
ENTRIES_COUNT),
- Pair.of("SELECT ID, IDX_VAL, VAL FROM T1", null))
+ Pair.of("SELECT ID, IDX_VAL, VAL FROM T1",
X.EMPTY_OBJECT_ARRAY))
.forEach(query -> {
try {
sql("CREATE TABLE T3(ID, IDX_VAL, VAL) WITH
cache_name=t3_cache,backups=1 AS " + query.left, query.right);
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/PlannerTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/PlannerTest.java
index b3b52d4b840..1627da8b900 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/PlannerTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/PlannerTest.java
@@ -281,7 +281,7 @@ public class PlannerTest extends AbstractPlannerTest {
String sql = "SELECT (ID0 + ID1) AS RES FROM PUBLIC.TEST_TABLE";
- List<Object[]> res = executeQuery(publicSchema, sql, -10);
+ List<Object[]> res = executeQuery(publicSchema, sql);
assertFalse(res.isEmpty());