This is an automated email from the ASF dual-hosted git repository.
zstan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 77186aac3d IGNITE-20226 Sql. Fix muted tests after disallowed char ->
varbinary casting (#2576)
77186aac3d is described below
commit 77186aac3da817407284de84133b0b611423d6c2
Author: Evgeniy Stanilovskiy <[email protected]>
AuthorDate: Mon Sep 18 09:18:11 2023 +0300
IGNITE-20226 Sql. Fix muted tests after disallowed char -> varbinary
casting (#2576)
---
.../datatypes/tests/BaseDmlDataTypeTest.java | 85 +---------------------
.../tests/BaseExpressionDataTypeTest.java | 40 ----------
.../datatypes/tests/BaseQueryDataTypeTest.java | 30 --------
.../sql/engine/datatypes/uuid/ItUuidDmlTest.java | 51 +++++++++++++
.../datatypes/uuid/ItUuidExpressionTest.java | 38 ++++++++--
.../sql/engine/datatypes/uuid/ItUuidQueryTest.java | 35 +++++++--
6 files changed, 114 insertions(+), 165 deletions(-)
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseDmlDataTypeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseDmlDataTypeTest.java
index f5f2246304..dacbffcd23 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseDmlDataTypeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseDmlDataTypeTest.java
@@ -17,14 +17,11 @@
package org.apache.ignite.internal.sql.engine.datatypes.tests;
-import static
org.apache.ignite.internal.sql.engine.datatypes.DataTypeTestSpecs.VARBINARY_TYPE;
+import static
org.apache.ignite.internal.sql.engine.util.SqlTestUtils.assertThrowsSqlException;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.containsString;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.stream.Stream;
-import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.lang.ErrorGroups.Sql;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
@@ -45,22 +42,6 @@ public abstract class BaseDmlDataTypeTest<T extends
Comparable<T>> extends BaseD
checkQuery("SELECT test_key FROM t WHERE
id=1").returns(arguments.value(0)).check();
}
- /** {@code INSERT} with dynamic parameters is not allowed for compatible
types. */
- @ParameterizedTest
- @MethodSource("convertedFrom")
- public void
testInsertFromDynamicParameterFromConvertible(TestTypeArguments<T> arguments) {
- // TODO: fix in scope of
https://issues.apache.org/jira/browse/IGNITE-20226
- if (testTypeSpec == VARBINARY_TYPE) {
- return;
- }
-
- var t = assertThrows(IgniteException.class, () -> {
- runSql("INSERT INTO t VALUES (1, ?)", arguments.argValue(0));
- });
-
- assertThat(t.getMessage(), containsString("Values passed to VALUES
operator must have compatible types"));
- }
-
/** {@code DELETE} by key. */
@Test
public void testDelete() {
@@ -106,64 +87,6 @@ public abstract class BaseDmlDataTypeTest<T extends
Comparable<T>> extends BaseD
.check();
}
- /** {@code UPDATE} is not allowed for dynamic parameter of compatible
type. */
- @ParameterizedTest
- @MethodSource("convertedFrom")
- public void
testUpdateFromDynamicParameterFromConvertible(TestTypeArguments<T> arguments) {
- // TODO: fix in scope of
https://issues.apache.org/jira/browse/IGNITE-20226
- if (testTypeSpec == VARBINARY_TYPE) {
- return;
- }
-
- String insert = format("INSERT INTO t VALUES (1, {})",
arguments.valueExpr(0));
- runSql(insert);
-
- var t = assertThrows(IgniteException.class, () -> {
- checkQuery("UPDATE t SET test_key = ? WHERE id=1")
- .withParams(arguments.argValue(0))
- .returns(1L)
- .check();
- });
-
- String error = format("Dynamic parameter requires adding explicit type
cast",
- testTypeSpec.typeName());
-
- assertThat(t.getMessage(), containsString(error));
- }
-
- /** Type mismatch in {@code INSERT}s {@code VALUES}.*/
- @ParameterizedTest
- @MethodSource("convertedFrom")
- public void testDisallowMismatchTypesOnInsert(TestTypeArguments<T>
arguments) {
- // TODO: fix in scope of
https://issues.apache.org/jira/browse/IGNITE-20226
- if (testTypeSpec == VARBINARY_TYPE) {
- return;
- }
-
- var query = format("INSERT INTO t (id, test_key) VALUES (10, null),
(20, {})", arguments.valueExpr(0));
- var t = assertThrows(IgniteException.class, () -> runSql(query));
-
- assertThat(t.getMessage(), containsString("Values passed to VALUES
operator must have compatible types"));
- }
-
- /**
- * Type mismatch in {@code INSERT}s {@code VALUES} with dynamic parameters.
- */
- @ParameterizedTest
- @MethodSource("convertedFrom")
- public void
testDisallowMismatchTypesOnInsertDynamicParam(TestTypeArguments<T> arguments) {
- // TODO: fix in scope of
https://issues.apache.org/jira/browse/IGNITE-20226
- if (testTypeSpec == VARBINARY_TYPE) {
- return;
- }
-
- Object value1 = arguments.argValue(0);
-
- var query = "INSERT INTO t (id, test_key) VALUES (1, null), (2, ?)";
- var t = assertThrows(IgniteException.class, () -> runSql(query,
value1));
- assertThat(t.getMessage(), containsString("Values passed to VALUES
operator must have compatible types"));
- }
-
/**
* Type mismatch in {@code INSERT}s {@code VALUES} with dynamic parameters.
*/
@@ -173,8 +96,8 @@ public abstract class BaseDmlDataTypeTest<T extends
Comparable<T>> extends BaseD
Object value1 = arguments.argValue(0);
var query = "INSERT INTO t (id, test_key) VALUES (1, 'str'), (2, ?)";
- var t = assertThrows(IgniteException.class, () -> runSql(query,
value1));
- assertThat(t.getMessage(), containsString("Values passed to VALUES
operator must have compatible types"));
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Values passed to
VALUES operator must have compatible types",
+ () -> runSql(query, value1));
}
private Stream<TestTypeArguments<T>> dml() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseExpressionDataTypeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseExpressionDataTypeTest.java
index b7dc86924d..4fa05caf04 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseExpressionDataTypeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseExpressionDataTypeTest.java
@@ -17,17 +17,12 @@
package org.apache.ignite.internal.sql.engine.datatypes.tests;
-import static
org.apache.ignite.internal.sql.engine.datatypes.DataTypeTestSpecs.VARBINARY_TYPE;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.containsString;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Objects;
import java.util.stream.Stream;
import org.apache.ignite.internal.sql.engine.util.MetadataMatcher;
import org.apache.ignite.internal.sql.engine.util.QueryChecker;
-import org.apache.ignite.lang.IgniteException;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
@@ -122,24 +117,6 @@ public abstract class BaseExpressionDataTypeTest<T extends
Comparable<T>> extend
checkQuery("SELECT COALESCE($0, NULL)").returns(value1).check();
}
- /**
- * {@code COALESCE} operator does not allow different types in its
arguments.
- */
- @ParameterizedTest
- @MethodSource("convertedFrom")
- public void testCoalesceMissingTypesIsIllegal(TestTypeArguments arguments)
{
- // TODO: fix in scope of
https://issues.apache.org/jira/browse/IGNITE-20226
- if (testTypeSpec == VARBINARY_TYPE) {
- return;
- }
-
- IgniteException t = assertThrows(IgniteException.class, () -> {
- checkQuery(format("SELECT COALESCE($0, {})",
arguments.valueExpr(0))).check();
- });
-
- assertThat(t.getMessage(), containsString("Illegal mixing of types in
CASE or COALESCE statement"));
- }
-
/**
* {@code NULLIF} operator.
*/
@@ -222,23 +199,6 @@ public abstract class BaseExpressionDataTypeTest<T extends
Comparable<T>> extend
.check();
}
- /** Data type from string. **/
- @Test
- public void testCastFromString() {
- // TODO: fix in scope of
https://issues.apache.org/jira/browse/IGNITE-20226
- if (testTypeSpec == VARBINARY_TYPE) {
- return;
- }
-
- T value = dataSamples.values().get(0);
- String stringValue = testTypeSpec.toStringValue(value);
-
- checkQuery(format("SELECT CAST('{}' AS <type>)",
stringValue)).returns(value).check();
-
- // PG style cast
- checkQuery(format("SELECT '{}'::<type>",
stringValue)).returns(value).check();
- }
-
/**
* {@code BETWEEN} operator.
*/
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseQueryDataTypeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseQueryDataTypeTest.java
index b5e543f1c0..41495d3158 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseQueryDataTypeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/tests/BaseQueryDataTypeTest.java
@@ -17,14 +17,9 @@
package org.apache.ignite.internal.sql.engine.datatypes.tests;
-import static
org.apache.ignite.internal.sql.engine.datatypes.DataTypeTestSpecs.VARBINARY_TYPE;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.containsString;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.stream.Stream;
-import org.apache.ignite.lang.IgniteException;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
@@ -100,30 +95,6 @@ public abstract class BaseQueryDataTypeTest<T extends
Comparable<T>> extends Bas
.check();
}
- /** Test for equality predicate with dynamic parameter of compatible type
is illegal. */
- @ParameterizedTest
- @MethodSource("convertedFrom")
- public void testEqConditionWithDynamicParameters(TestTypeArguments<T>
arguments) {
- // TODO: fix in scope of
https://issues.apache.org/jira/browse/IGNITE-20226
- if (testTypeSpec == VARBINARY_TYPE) {
- return;
- }
-
- T value1 = values.get(0);
-
- runSql("INSERT INTO t VALUES(1, ?)", value1);
-
- var err = assertThrows(IgniteException.class, () -> {
- checkQuery("SELECT id FROM t where test_key = ? ORDER BY id")
- .withParams(arguments.argValue(0))
- .returns(1)
- .returns(3)
- .check();
- });
-
- assertThat(err.getMessage(), containsString("Values passed to =
operator must have compatible types"));
- }
-
private Stream<TestTypeArguments<T>> eq() {
return TestTypeArguments.unary(testTypeSpec, dataSamples,
values.get(0));
}
@@ -146,7 +117,6 @@ public abstract class BaseQueryDataTypeTest<T extends
Comparable<T>> extends Bas
public void testInWithDynamicParamsCondition() {
T value1 = values.get(0);
T value2 = values.get(1);
- T value3 = values.get(2);
runSql("INSERT INTO t VALUES(1, $0)");
runSql("INSERT INTO t VALUES(2, $1)");
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidDmlTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidDmlTest.java
index ead659442c..e3582be528 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidDmlTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidDmlTest.java
@@ -17,16 +17,67 @@
package org.apache.ignite.internal.sql.engine.datatypes.uuid;
+import static
org.apache.ignite.internal.sql.engine.util.SqlTestUtils.assertThrowsSqlException;
+import static org.apache.ignite.lang.IgniteStringFormatter.format;
+
import java.util.UUID;
import org.apache.ignite.internal.sql.engine.datatypes.DataTypeTestSpecs;
import
org.apache.ignite.internal.sql.engine.datatypes.tests.BaseDmlDataTypeTest;
import org.apache.ignite.internal.sql.engine.datatypes.tests.DataTypeTestSpec;
+import org.apache.ignite.internal.sql.engine.datatypes.tests.TestTypeArguments;
import org.apache.ignite.internal.sql.engine.type.UuidType;
+import org.apache.ignite.lang.ErrorGroups.Sql;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
/**
* Tests for DML statements for {@link UuidType UUID data type}.
*/
public class ItUuidDmlTest extends BaseDmlDataTypeTest<UUID> {
+ /** {@code INSERT} with dynamic parameters is not allowed for compatible
types. */
+ @ParameterizedTest
+ @MethodSource("convertedFrom")
+ public void
testInsertFromDynamicParameterFromConvertible(TestTypeArguments arguments) {
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Values passed to
VALUES operator must have compatible types",
+ () -> runSql("INSERT INTO t VALUES (1, ?)",
arguments.argValue(0)));
+ }
+
+ /** {@code UPDATE} is not allowed for dynamic parameter of compatible
type. */
+ @ParameterizedTest
+ @MethodSource("convertedFrom")
+ public void
testUpdateFromDynamicParameterFromConvertible(TestTypeArguments arguments) {
+ String insert = format("INSERT INTO t VALUES (1, {})",
arguments.valueExpr(0));
+ runSql(insert);
+
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Dynamic parameter
requires adding explicit type cast", () -> {
+ checkQuery("UPDATE t SET test_key = ? WHERE id=1")
+ .withParams(arguments.argValue(0))
+ .returns(1L)
+ .check();
+ });
+ }
+
+ /** Type mismatch in {@code INSERT}s {@code VALUES}.*/
+ @ParameterizedTest
+ @MethodSource("convertedFrom")
+ public void testDisallowMismatchTypesOnInsert(TestTypeArguments arguments)
{
+ var query = format("INSERT INTO t (id, test_key) VALUES (10, null),
(20, {})", arguments.valueExpr(0));
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Values passed to
VALUES operator must have compatible types",
+ () -> runSql(query));
+ }
+
+ /**
+ * Type mismatch in {@code INSERT}s {@code VALUES} with dynamic parameters.
+ */
+ @ParameterizedTest
+ @MethodSource("convertedFrom")
+ public void
testDisallowMismatchTypesOnInsertDynamicParam(TestTypeArguments arguments) {
+ Object value1 = arguments.argValue(0);
+
+ var query = "INSERT INTO t (id, test_key) VALUES (1, null), (2, ?)";
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Values passed to
VALUES operator must have compatible types",
+ () -> runSql(query, value1));
+ }
/** {@inheritDoc} **/
@Override
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidExpressionTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidExpressionTest.java
index c72b9aaf19..a4977da1fd 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidExpressionTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidExpressionTest.java
@@ -17,18 +17,20 @@
package org.apache.ignite.internal.sql.engine.datatypes.uuid;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
+import static
org.apache.ignite.internal.sql.engine.util.SqlTestUtils.assertThrowsSqlException;
+import static org.apache.ignite.lang.IgniteStringFormatter.format;
import java.util.UUID;
import org.apache.ignite.internal.sql.engine.datatypes.DataTypeTestSpecs;
import
org.apache.ignite.internal.sql.engine.datatypes.tests.BaseExpressionDataTypeTest;
import org.apache.ignite.internal.sql.engine.datatypes.tests.DataTypeTestSpec;
+import org.apache.ignite.internal.sql.engine.datatypes.tests.TestTypeArguments;
import org.apache.ignite.internal.sql.engine.type.UuidType;
-import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.lang.ErrorGroups.Sql;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
/**
* Tests for expressions for {@link UuidType UUID data type}.
@@ -54,15 +56,35 @@ public class ItUuidExpressionTest extends
BaseExpressionDataTypeTest<UUID> {
/** Invalid {@code UUID} string in literal parameter. */
@Test
public void testInvalidUuidString() {
- IgniteException t = assertThrows(IgniteException.class, () ->
runSql("SELECT '000000'::UUID"));
- assertThat(t.getMessage(), containsString("Invalid UUID string"));
+ assertThrowsSqlException(Sql.RUNTIME_ERR, "Invalid UUID string", () ->
runSql("SELECT '000000'::UUID"));
}
/** Invalid {@code UUID} string in dynamic parameter. */
@Test
public void testInvalidUuidStringInDynamicParams() {
- IgniteException t = assertThrows(IgniteException.class, () ->
runSql("SELECT ?::UUID", "00000"));
- assertThat(t.getMessage(), containsString("Invalid UUID string"));
+ assertThrowsSqlException(Sql.RUNTIME_ERR, "Invalid UUID string:
00000", () -> runSql("SELECT ?::UUID", "00000"));
+ }
+
+ /**
+ * {@code COALESCE} operator does not allow different types in its
arguments.
+ */
+ @ParameterizedTest
+ @MethodSource("convertedFrom")
+ public void testCoalesceMissingTypesIsIllegal(TestTypeArguments arguments)
{
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Illegal mixing of
types in CASE or COALESCE statement",
+ () -> checkQuery(format("SELECT COALESCE($0, {})",
arguments.valueExpr(0))).check());
+ }
+
+ /** Data type from string. **/
+ @Test
+ public void testCastFromString() {
+ UUID value = dataSamples.values().get(0);
+ String stringValue = testTypeSpec.toStringValue(value);
+
+ checkQuery(format("SELECT CAST('{}' AS <type>)",
stringValue)).returns(value).check();
+
+ // PG style cast
+ checkQuery(format("SELECT '{}'::<type>",
stringValue)).returns(value).check();
}
/** {@inheritDoc} **/
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidQueryTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidQueryTest.java
index 2345e36fa5..14602b294a 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidQueryTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/datatypes/uuid/ItUuidQueryTest.java
@@ -17,17 +17,17 @@
package org.apache.ignite.internal.sql.engine.datatypes.uuid;
+import static
org.apache.ignite.internal.sql.engine.util.SqlTestUtils.assertThrowsSqlException;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.containsString;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.UUID;
import org.apache.ignite.internal.sql.engine.datatypes.DataTypeTestSpecs;
import
org.apache.ignite.internal.sql.engine.datatypes.tests.BaseQueryDataTypeTest;
import org.apache.ignite.internal.sql.engine.datatypes.tests.DataTypeTestSpec;
+import org.apache.ignite.internal.sql.engine.datatypes.tests.TestTypeArguments;
import org.apache.ignite.internal.sql.engine.type.UuidType;
-import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.lang.ErrorGroups.Sql;
+import org.junit.jupiter.api.function.Executable;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
@@ -35,6 +35,10 @@ import org.junit.jupiter.params.provider.MethodSource;
* Tests for {@code SELECT} operations for {@link UuidType UUID data type}.
*/
public class ItUuidQueryTest extends BaseQueryDataTypeTest<UUID> {
+ @Override
+ protected int nodes() {
+ return 1;
+ }
/**
* {@code UUID} vs type that can not be casted to {@code UUID}.
@@ -44,9 +48,28 @@ public class ItUuidQueryTest extends
BaseQueryDataTypeTest<UUID> {
public void testInvalidComparisonOperation(String opSql) {
String query = format("SELECT * FROM t WHERE test_key {} 1", opSql);
- IgniteException t = assertThrows(IgniteException.class, () ->
checkQuery(query).check());
String error = format("Values passed to {} operator must have
compatible types", opSql);
- assertThat(t.getMessage(), containsString(error));
+
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, error, () ->
checkQuery(query).check());
+ }
+
+ /** Test for equality predicate with dynamic parameter of compatible type
is illegal. */
+ @ParameterizedTest
+ @MethodSource("convertedFrom")
+ public void testEqConditionWithDynamicParameters(TestTypeArguments
arguments) {
+ UUID value1 = values.get(0);
+
+ runSql("INSERT INTO t VALUES(1, ?)", value1);
+
+ Executable qry = () -> {
+ checkQuery("SELECT id FROM t where test_key = ? ORDER BY id")
+ .withParams(arguments.argValue(0))
+ .returns(1)
+ .returns(3)
+ .check();
+ };
+
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Values passed to =
operator must have compatible types", qry);
}
/** {@inheritDoc} **/