You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by zs...@apache.org on 2023/09/22 07:37:10 UTC
[ignite-3] 01/01: IGNITE-20336 Sql. Remove conversion from java types to TypeSpec
This is an automated email from the ASF dual-hosted git repository.
zstan pushed a commit to branch ignite-20336
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit bafaa253b8ab1d3b0b17e5c5c087c0c2e44cfe53
Author: zstan <st...@gmail.com>
AuthorDate: Wed Sep 20 09:26:04 2023 +0300
IGNITE-20336 Sql. Remove conversion from java types to TypeSpec
---
.../ignite/internal/sql/engine/util/TypeUtils.java | 60 ++++++++----------
.../sql/engine/exec/RuntimeSortedIndexTest.java | 28 ++++----
.../sql/engine/exec/rel/BaseAggregateTest.java | 42 ++++++------
.../sql/engine/exec/rel/ExecutionTest.java | 74 ++++++++++++++--------
.../rel/HashAggregateSingleGroupExecutionTest.java | 54 ++++++++--------
.../exec/rel/HashIndexSpoolExecutionTest.java | 11 ++--
.../engine/exec/rel/MergeJoinExecutionTest.java | 23 ++++---
.../exec/rel/NestedLoopJoinExecutionTest.java | 30 +++++----
.../exec/rel/SortedIndexSpoolExecutionTest.java | 7 +-
.../exec/rel/TableScanNodeExecutionTest.java | 11 ++--
.../engine/exec/rel/TableSpoolExecutionTest.java | 4 +-
11 files changed, 197 insertions(+), 147 deletions(-)
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/TypeUtils.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/TypeUtils.java
index 65ac0da499..a516c19e2f 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/TypeUtils.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/TypeUtils.java
@@ -45,7 +45,6 @@ import org.apache.calcite.avatica.util.ByteString;
import org.apache.calcite.plan.RelOptUtil;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.rel.type.RelDataTypeFactoryImpl.JavaType;
import org.apache.calcite.rel.type.RelDataTypeField;
import org.apache.calcite.runtime.SqlFunctions;
import org.apache.calcite.sql.type.BasicSqlType;
@@ -151,22 +150,12 @@ public class TypeUtils {
return builder.build();
}
- /**
- * CreateRowType.
- * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
- */
- public static RelDataType createRowType(IgniteTypeFactory typeFactory, Class<?>... fields) {
- List<RelDataType> types = Arrays.stream(fields)
- .map(typeFactory::createJavaType)
- .collect(Collectors.toList());
-
- return createRowType(typeFactory, types, "$F");
+ /** Assembly output type from input types. */
+ public static RelDataType createRowType(IgniteTypeFactory typeFactory, List<RelDataType> fields) {
+ return createRowType(typeFactory, fields.toArray(new RelDataType[0]));
}
- /**
- * CreateRowType.
- * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
- */
+ /** Assembly output type from input types. */
public static RelDataType createRowType(IgniteTypeFactory typeFactory, RelDataType... fields) {
List<RelDataType> types = Arrays.asList(fields);
@@ -396,18 +385,6 @@ public class TypeUtils {
}
}
- /**
- * Converts a {@link NativeType native type} to {@link RelDataType relational type} with respect to the nullability flag.
- *
- * @param factory Type factory.
- * @param nativeType A native type to convert.
- * @param nullable A flag that specify whether the resulting type should be nullable or not.
- * @return Relational type.
- */
- public static RelDataType native2relationalType(RelDataTypeFactory factory, NativeType nativeType, boolean nullable) {
- return factory.createTypeWithNullability(native2relationalType(factory, nativeType), nullable);
- }
-
/**
* Converts a {@link NativeType native type} to {@link RelDataType relational type}.
*
@@ -488,6 +465,29 @@ public class TypeUtils {
}
}
+ /**
+ * Converts a {@link NativeType native type} to {@link RelDataType relational type} with respect to the nullability flag.
+ *
+ * @param factory Type factory.
+ * @param nativeType A native type to convert.
+ * @param nullable A flag that specify whether the resulting type should be nullable or not.
+ * @return Relational type.
+ */
+ public static RelDataType native2relationalType(RelDataTypeFactory factory, NativeType nativeType, boolean nullable) {
+ return factory.createTypeWithNullability(native2relationalType(factory, nativeType), nullable);
+ }
+
+ /**
+ * Converts a {@link NativeType native types} to {@link RelDataType relational types}.
+ *
+ * @param factory Type factory.
+ * @param nativeTypes A native types to convert.
+ * @return Relational types.
+ */
+ public static List<RelDataType> native2relationalTypes(RelDataTypeFactory factory, NativeType... nativeTypes) {
+ return Arrays.stream(nativeTypes).map(t -> native2relationalType(factory, t)).collect(Collectors.toList());
+ }
+
/** Converts {@link ColumnType} to corresponding {@link NativeType}. */
public static NativeType columnType2NativeType(ColumnType columnType, int precision, int scale, int length) {
switch (columnType) {
@@ -663,14 +663,10 @@ public class TypeUtils {
return new RowType(fields, type.isNullable());
- } else if (SqlTypeUtil.isMap(type) || SqlTypeUtil.isMultiset(type)) {
+ } else if (SqlTypeUtil.isMap(type) || SqlTypeUtil.isMultiset(type) || SqlTypeUtil.isArray(type)) {
// TODO https://issues.apache.org/jira/browse/IGNITE-20162
// Add collection types support
throw new IllegalArgumentException("Collection types is not supported: " + type);
- } else if (SqlTypeUtil.isArray(type) || type instanceof JavaType) {
- // TODO Remove after is fixed https://issues.apache.org/jira/browse/IGNITE-20336
- // Move SqlTypeUtil.isArray(type) to collections type support branch.
- return new BaseTypeSpec(null, true);
} else {
throw new IllegalArgumentException("Unexpected type: " + type);
}
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/RuntimeSortedIndexTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/RuntimeSortedIndexTest.java
index 0f7b63813e..3c57ed2fe1 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/RuntimeSortedIndexTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/RuntimeSortedIndexTest.java
@@ -34,6 +34,8 @@ import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeField;
import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.Pair;
+import org.apache.ignite.internal.schema.NativeType;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.framework.ArrayRowHandler;
import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
import org.apache.ignite.internal.sql.engine.util.BaseQueryContext;
@@ -52,17 +54,19 @@ import org.junit.jupiter.api.Test;
public class RuntimeSortedIndexTest extends IgniteAbstractTest {
private static final int UNIQUE_GROUPS = 10_000;
- private static final int[] NOT_UNIQUE_ROWS_IN_GROUP = new int[]{1, 10};
-
- private static final Pair<Class<?>[], ImmutableIntList>[] ROW_TYPES = new Pair[]{
- new Pair(new Class<?>[]{int.class, int.class, int.class}, ImmutableIntList.of(1)),
- new Pair(new Class<?>[]{int.class, long.class, int.class}, ImmutableIntList.of(1)),
- new Pair(new Class<?>[]{int.class, String.class, int.class}, ImmutableIntList.of(1)),
- new Pair(new Class<?>[]{int.class, Date.class, int.class}, ImmutableIntList.of(1)),
- new Pair(new Class<?>[]{int.class, Time.class, int.class}, ImmutableIntList.of(1)),
- new Pair(new Class<?>[]{int.class, Timestamp.class, int.class}, ImmutableIntList.of(1)),
- new Pair(new Class<?>[]{int.class, String.class, Time.class, Date.class, Timestamp.class, int.class},
- ImmutableIntList.of(1, 2, 3, 4))
+ private static final int[] NOT_UNIQUE_ROWS_IN_GROUP = {1, 10};
+
+ private static final Pair<NativeType[], ImmutableIntList>[] ROW_TYPES = new Pair[]{
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.INT32, NativeTypes.INT32}, ImmutableIntList.of(1)),
+
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.INT64, NativeTypes.INT32}, ImmutableIntList.of(1)),
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32}, ImmutableIntList.of(1)),
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.DATE, NativeTypes.INT32}, ImmutableIntList.of(1)),
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.time(), NativeTypes.INT32}, ImmutableIntList.of(1)),
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.datetime(), NativeTypes.INT32}, ImmutableIntList.of(1)),
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.timestamp(), NativeTypes.INT32}, ImmutableIntList.of(1)),
+ new Pair(new NativeType[]{NativeTypes.INT32, NativeTypes.STRING, NativeTypes.time(),
+ NativeTypes.DATE, NativeTypes.datetime(), NativeTypes.INT32}, ImmutableIntList.of(1, 2, 3, 4))
};
/** Search count. */
@@ -73,7 +77,7 @@ public class RuntimeSortedIndexTest extends IgniteAbstractTest {
IgniteTypeFactory tf = Commons.typeFactory();
List<Pair<RelDataType, ImmutableIntList>> testIndexes = Arrays.stream(ROW_TYPES)
- .map(rt -> Pair.of(TypeUtils.createRowType(tf, rt.getKey()), rt.getValue()))
+ .map(rt -> Pair.of(TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, rt.getKey())), rt.getValue()))
.collect(Collectors.toList());
for (Pair<RelDataType, ImmutableIntList> testIdx : testIndexes) {
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/BaseAggregateTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/BaseAggregateTest.java
index 34deb2d214..00fa3ee1fd 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/BaseAggregateTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/BaseAggregateTest.java
@@ -40,6 +40,7 @@ import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.ImmutableIntList;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
import org.apache.ignite.internal.sql.engine.exec.RowHandler;
import org.apache.ignite.internal.sql.engine.exec.exp.agg.AccumulatorWrapper;
@@ -62,7 +63,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
public void count(TestAggregateType testAgg) {
ExecutionContext<Object[]> ctx = executionContext(true);
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row(0, 200),
row(1, 300),
@@ -85,7 +86,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -114,7 +115,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
public void min(TestAggregateType testAgg) {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row(0, 200),
row(1, 300),
@@ -137,7 +138,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -166,7 +167,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
public void max(TestAggregateType testAgg) {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row(0, 200),
row(1, 300),
@@ -189,7 +190,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -221,7 +222,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row(0, 200),
row(1, 300),
@@ -244,7 +245,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -324,7 +325,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
) {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, scanInput);
AggregateCall call = AggregateCall.create(
@@ -342,7 +343,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -381,7 +382,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row(0, 200),
row(1, 200),
@@ -409,7 +410,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -447,7 +448,8 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(
ctx,
@@ -474,7 +476,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -510,7 +512,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
public void sumIntegerOverflow(TestAggregateType testAgg) {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row(0, Integer.MAX_VALUE / 2),
row(0, Integer.MAX_VALUE / 2 + 11)
@@ -531,7 +533,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -559,7 +561,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
public void sumLongOverflow(TestAggregateType testAgg) {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, long.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT64));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row(0, Long.MAX_VALUE / 2),
row(0, Long.MAX_VALUE / 2 + 11)
@@ -580,7 +582,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of(0));
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
@@ -611,7 +613,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
public void countOfEmptyWithRewind(TestAggregateType testAgg) {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Collections.emptyList());
AggregateCall call = AggregateCall.create(
@@ -630,7 +632,7 @@ public abstract class BaseAggregateTest extends AbstractExecutionTest {
List<ImmutableBitSet> grpSets = List.of(ImmutableBitSet.of());
- RelDataType aggRowType = TypeUtils.createRowType(tf, int.class);
+ RelDataType aggRowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32));
SingleNode<Object[]> aggChain = createAggregateNodesChain(
testAgg,
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java
index 78fab094fe..8e87011342 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java
@@ -73,7 +73,6 @@ public class ExecutionTest extends AbstractExecutionTest {
// WHERE P.ID >= 2
ExecutionContext<Object[]> ctx = executionContext(true);
- IgniteTypeFactory tf = ctx.getTypeFactory();
ScanNode<Object[]> persons = new ScanNode<>(ctx, Arrays.asList(
new Object[]{0, "Igor", "Seliverstov"},
@@ -89,9 +88,14 @@ public class ExecutionTest extends AbstractExecutionTest {
new Object[]{3, 0, "Core"}
));
- RelDataType outType = TypeUtils.createRowType(tf, int.class, String.class, String.class, int.class, int.class, String.class);
- RelDataType leftType = TypeUtils.createRowType(tf, int.class, String.class, String.class);
- RelDataType rightType = TypeUtils.createRowType(tf, int.class, int.class, String.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.STRING, NativeTypes.INT32, NativeTypes.INT32, NativeTypes.STRING));
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.STRING));
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.INT32, NativeTypes.STRING));
RowHandler<Object[]> hnd = ctx.rowHandler();
@@ -126,7 +130,8 @@ public class ExecutionTest extends AbstractExecutionTest {
public void testRowFactoryAssembly() {
ExecutionContext<Object[]> ctx = executionContext(false);
- RelDataType rowType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, boolean.class);
+ RelDataType rowType = TypeUtils.createRowType(ctx.getTypeFactory(),
+ TypeUtils.native2relationalTypes(ctx.getTypeFactory(), NativeTypes.INT32, NativeTypes.STRING, NativeTypes.BOOLEAN));
RowSchema rowSchema = rowSchemaFromRelTypes(RelOptUtil.getFieldTypeList(rowType));
@@ -208,10 +213,13 @@ public class ExecutionTest extends AbstractExecutionTest {
new Object[]{2, "SQL"}
));
- RelDataType outType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class,
- int.class, String.class);
- RelDataType leftType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
- RelDataType rightType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32, NativeTypes.INT32, NativeTypes.STRING));
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.STRING));
RowHandler<Object[]> hnd = ctx.rowHandler();
@@ -263,10 +271,13 @@ public class ExecutionTest extends AbstractExecutionTest {
new Object[]{3, "QA"}
));
- RelDataType outType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, int.class,
- String.class, Integer.class);
- RelDataType leftType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class);
- RelDataType rightType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.STRING));
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
RowHandler<Object[]> hnd = ctx.rowHandler();
@@ -318,10 +329,13 @@ public class ExecutionTest extends AbstractExecutionTest {
new Object[]{3, "QA"}
));
- RelDataType outType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class,
- int.class, String.class);
- RelDataType leftType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
- RelDataType rightType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32, NativeTypes.INT32, NativeTypes.STRING));
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.STRING));
RowHandler<Object[]> hnd = ctx.rowHandler();
@@ -374,9 +388,13 @@ public class ExecutionTest extends AbstractExecutionTest {
new Object[]{3, "QA"}
));
- RelDataType outType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
- RelDataType leftType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
- RelDataType rightType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.STRING));
RowHandler<Object[]> hnd = ctx.rowHandler();
@@ -426,9 +444,13 @@ public class ExecutionTest extends AbstractExecutionTest {
new Object[]{3, "QA"}
));
- RelDataType outType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
- RelDataType leftType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
- RelDataType rightType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.STRING));
RowHandler<Object[]> hnd = ctx.rowHandler();
@@ -472,7 +494,8 @@ public class ExecutionTest extends AbstractExecutionTest {
public void testCorrelatedNestedLoopJoin(int leftSize, int rightSize, int rightBufSize, JoinRelType joinType) {
ExecutionContext<Object[]> ctx = executionContext(true);
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> left = new ScanNode<>(ctx, new TestTable(leftSize, rowType));
ScanNode<Object[]> right = new ScanNode<>(ctx, new TestTable(rightSize, rowType));
@@ -521,7 +544,8 @@ public class ExecutionTest extends AbstractExecutionTest {
public void testMergeJoin() {
ExecutionContext<Object[]> ctx = executionContext(true);
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
int inBufSize = Commons.IN_BUFFER_SIZE;
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateSingleGroupExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateSingleGroupExecutionTest.java
index a277f75e23..04fbd95a34 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateSingleGroupExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateSingleGroupExecutionTest.java
@@ -35,6 +35,7 @@ import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.ImmutableIntList;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
import org.apache.ignite.internal.sql.engine.exec.exp.agg.AccumulatorWrapper;
import org.apache.ignite.internal.sql.engine.exec.exp.agg.AggregateType;
@@ -56,7 +57,7 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
public void mapReduceSum() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -95,7 +96,7 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
public void mapReduceMin() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -134,7 +135,7 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
public void mapReduceMax() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -173,7 +174,7 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
public void mapReduceCount() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -205,19 +206,20 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
accFactory(ctx, reduceAggCall.getReduceCall(), REDUCE, hashRowType), rowFactory());
reduce.register(map);
- RootNode<Object[]> root = new RootNode<>(ctx);
- root.register(reduce);
+ try (RootNode<Object[]> root = new RootNode<>(ctx)) {
+ root.register(reduce);
- assertTrue(root.hasNext());
- assertEquals(4, root.next()[0]);
- assertFalse(root.hasNext());
+ assertTrue(root.hasNext());
+ assertEquals(4, root.next()[0]);
+ assertFalse(root.hasNext());
+ }
}
@Test
public void singleAvg() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -253,7 +255,7 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
public void singleSum() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -277,19 +279,20 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
HashAggregateNode<Object[]> agg = newHashAggNode(ctx, SINGLE, grpSets, rowType, call);
agg.register(scan);
- RootNode<Object[]> root = new RootNode<>(ctx);
- root.register(agg);
+ try (RootNode<Object[]> root = new RootNode<>(ctx)) {
+ root.register(agg);
- assertTrue(root.hasNext());
- assertEquals(2900, root.next()[0]);
- assertFalse(root.hasNext());
+ assertTrue(root.hasNext());
+ assertEquals(2900, root.next()[0]);
+ assertFalse(root.hasNext());
+ }
}
@Test
public void singleMin() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -325,7 +328,7 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
public void singleMax() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -361,7 +364,7 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
public void singleCount() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, Arrays.asList(
row("Igor", 200),
row("Roman", 300),
@@ -389,15 +392,16 @@ public class HashAggregateSingleGroupExecutionTest extends AbstractExecutionTest
agg.register(scan);
- RootNode<Object[]> root = new RootNode<>(ctx);
- root.register(agg);
+ try (RootNode<Object[]> root = new RootNode<>(ctx)) {
+ root.register(agg);
- assertTrue(root.hasNext());
- assertEquals(4, root.next()[0]);
- assertFalse(root.hasNext());
+ assertTrue(root.hasNext());
+ assertEquals(4, root.next()[0]);
+ assertFalse(root.hasNext());
+ }
}
- protected Supplier<List<AccumulatorWrapper<Object[]>>> accFactory(
+ Supplier<List<AccumulatorWrapper<Object[]>>> accFactory(
ExecutionContext<Object[]> ctx,
AggregateCall call,
AggregateType type,
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashIndexSpoolExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashIndexSpoolExecutionTest.java
index 3fb7d9fb39..4f5ecb5834 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashIndexSpoolExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/HashIndexSpoolExecutionTest.java
@@ -27,6 +27,7 @@ import java.util.List;
import java.util.function.Predicate;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
import org.apache.ignite.internal.sql.engine.util.Commons;
@@ -35,15 +36,15 @@ import org.apache.ignite.internal.util.Pair;
import org.junit.jupiter.api.Test;
/**
- * HashIndexSpoolExecutionTest.
- * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
+ * Hash index based spool implementation test.
*/
public class HashIndexSpoolExecutionTest extends AbstractExecutionTest {
@Test
public void testIndexSpool() {
ExecutionContext<Object[]> ctx = executionContext(true);
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
int inBufSize = Commons.IN_BUFFER_SIZE;
@@ -132,7 +133,9 @@ public class HashIndexSpoolExecutionTest extends AbstractExecutionTest {
@Test
public void testNullsInSearchRow() {
ExecutionContext<Object[]> ctx = executionContext(true);
- RelDataType rowType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, int.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(ctx, new TestTable(
4,
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/MergeJoinExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/MergeJoinExecutionTest.java
index bce573e224..9dd048749d 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/MergeJoinExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/MergeJoinExecutionTest.java
@@ -40,6 +40,7 @@ import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.sql.validate.SqlConformanceEnum;
import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
import org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl;
import org.apache.ignite.internal.sql.engine.framework.ArrayRowHandler;
@@ -474,10 +475,13 @@ public class MergeJoinExecutionTest extends AbstractExecutionTest {
private void verifyJoin(Object[][] left, Object[][] right, JoinRelType joinType, Object[][] expRes, boolean equalNulls) {
ExecutionContext<Object[]> ctx = executionContext(true);
- RelDataType leftType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> leftNode = new ScanNode<>(ctx, Arrays.asList(left));
- RelDataType rightType = TypeUtils.createRowType(ctx.getTypeFactory(), Integer.class, String.class);
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.STRING));
ScanNode<Object[]> rightNode = new ScanNode<>(ctx, Arrays.asList(right));
IgniteTypeFactory typeFactory = Commons.typeFactory();
@@ -511,16 +515,17 @@ public class MergeJoinExecutionTest extends AbstractExecutionTest {
}
project.register(join);
- RootNode<Object[]> node = new RootNode<>(ctx);
- node.register(project);
+ try (RootNode<Object[]> node = new RootNode<>(ctx)) {
+ node.register(project);
- ArrayList<Object[]> rows = new ArrayList<>();
+ ArrayList<Object[]> rows = new ArrayList<>();
- while (node.hasNext()) {
- rows.add(node.next());
- }
+ while (node.hasNext()) {
+ rows.add(node.next());
+ }
- assertThat(rows.toArray(EMPTY), equalTo(expRes));
+ assertThat(rows.toArray(EMPTY), equalTo(expRes));
+ }
}
/**
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/NestedLoopJoinExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/NestedLoopJoinExecutionTest.java
index 1d0acf9a63..d81a03331a 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/NestedLoopJoinExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/NestedLoopJoinExecutionTest.java
@@ -33,8 +33,10 @@ import java.util.HashSet;
import java.util.Set;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
import org.apache.ignite.internal.sql.engine.exec.RowHandler;
+import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
import org.apache.ignite.internal.sql.engine.util.TypeUtils;
import org.junit.jupiter.api.Test;
@@ -307,17 +309,22 @@ public class NestedLoopJoinExecutionTest extends AbstractExecutionTest {
private void verifyJoin(Object[][] left, Object[][] right, JoinRelType joinType, Object[][] expRes) {
ExecutionContext<Object[]> ctx = executionContext(true);
- RelDataType leftType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
+ IgniteTypeFactory tf = ctx.getTypeFactory();
+
+ RelDataType leftType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> leftNode = new ScanNode<>(ctx, Arrays.asList(left));
- RelDataType rightType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class);
+ RelDataType rightType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf, NativeTypes.INT32, NativeTypes.STRING));
ScanNode<Object[]> rightNode = new ScanNode<>(ctx, Arrays.asList(right));
RelDataType outType;
if (setOf(SEMI, ANTI).contains(joinType)) {
- outType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class);
+ outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
} else {
- outType = TypeUtils.createRowType(ctx.getTypeFactory(), int.class, String.class, Integer.class, int.class, String.class);
+ outType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32, NativeTypes.INT32, NativeTypes.STRING));
}
RowHandler<Object[]> hnd = ctx.rowHandler();
@@ -334,16 +341,17 @@ public class NestedLoopJoinExecutionTest extends AbstractExecutionTest {
}
project.register(join);
- RootNode<Object[]> node = new RootNode<>(ctx);
- node.register(project);
+ try (RootNode<Object[]> node = new RootNode<>(ctx)) {
+ node.register(project);
- ArrayList<Object[]> rows = new ArrayList<>();
+ ArrayList<Object[]> rows = new ArrayList<>();
- while (node.hasNext()) {
- rows.add(node.next());
- }
+ while (node.hasNext()) {
+ rows.add(node.next());
+ }
- assertArrayEquals(expRes, rows.toArray(EMPTY));
+ assertArrayEquals(expRes, rows.toArray(EMPTY));
+ }
}
/**
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/SortedIndexSpoolExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/SortedIndexSpoolExecutionTest.java
index 5bc3c0f9c9..c51b1a21c3 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/SortedIndexSpoolExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/SortedIndexSpoolExecutionTest.java
@@ -30,6 +30,7 @@ import org.apache.calcite.rel.RelCollation;
import org.apache.calcite.rel.RelCollations;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.util.ImmutableIntList;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
import org.apache.ignite.internal.sql.engine.util.Commons;
@@ -45,7 +46,8 @@ public class SortedIndexSpoolExecutionTest extends AbstractExecutionTest {
public void testIndexSpool() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
int inBufSize = Commons.IN_BUFFER_SIZE;
@@ -152,7 +154,8 @@ public class SortedIndexSpoolExecutionTest extends AbstractExecutionTest {
public void testUnspecifiedValuesInSearchRow() {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
ScanNode<Object[]> scan = new ScanNode<>(
ctx,
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
index eb47674b0c..d97b0149c0 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.sql.engine.exec.rel;
+import static org.apache.ignite.internal.sql.engine.util.TypeUtils.rowSchemaFromRelTypes;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
@@ -73,13 +74,11 @@ public class TableScanNodeExecutionTest extends AbstractExecutionTest {
public void testScanNodeDataPropagation() throws InterruptedException {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, String.class, int.class);
- RowSchema rowSchema = RowSchema.builder()
- .addField(NativeTypes.INT32)
- .addField(NativeTypes.STRING)
- .addField(NativeTypes.INT32)
- .build();
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
+
+ RowSchema rowSchema = rowSchemaFromRelTypes(List.of(rowType));
int inBufSize = Commons.IN_BUFFER_SIZE;
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableSpoolExecutionTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableSpoolExecutionTest.java
index ba2b2742d0..40bff438ae 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableSpoolExecutionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableSpoolExecutionTest.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiFunction;
import java.util.stream.IntStream;
import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.schema.NativeTypes;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
import org.apache.ignite.internal.sql.engine.util.Commons;
@@ -100,7 +101,8 @@ public class TableSpoolExecutionTest extends AbstractExecutionTest {
public void checkTableSpool(BiFunction<ExecutionContext<Object[]>, RelDataType, TableSpoolNode<Object[]>> spoolFactory) {
ExecutionContext<Object[]> ctx = executionContext();
IgniteTypeFactory tf = ctx.getTypeFactory();
- RelDataType rowType = TypeUtils.createRowType(tf, int.class, String.class, int.class);
+ RelDataType rowType = TypeUtils.createRowType(tf, TypeUtils.native2relationalTypes(tf,
+ NativeTypes.INT32, NativeTypes.STRING, NativeTypes.INT32));
int inBufSize = Commons.IN_BUFFER_SIZE;