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 <stanilov...@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;