This is an automated email from the ASF dual-hosted git repository. jt2594838 pushed a commit to branch remove_swtich_type in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit e1f2247535dfa324f2f4ade3235b8e5b1d21b018 Author: Tian Jiang <[email protected]> AuthorDate: Wed Aug 26 11:34:46 2026 +0800 multiple refactors --- .../AbstractGreatestLeastColumnTransformer.java | 46 +------------- .../multi/BinaryGreatestColumnTransformer.java | 2 +- .../column/multi/BinaryLeastColumnTransformer.java | 2 +- .../multi/BooleanGreatestColumnTransformer.java | 2 +- .../multi/BooleanLeastColumnTransformer.java | 2 +- .../multi/DoubleGreatestColumnTransformer.java | 2 +- .../column/multi/DoubleLeastColumnTransformer.java | 2 +- .../multi/FloatGreatestColumnTransformer.java | 2 +- .../column/multi/FloatLeastColumnTransformer.java | 2 +- .../multi/Int32GreatestColumnTransformer.java | 2 +- .../column/multi/Int32LeastColumnTransformer.java | 2 +- .../multi/Int64GreatestColumnTransformer.java | 2 +- .../column/multi/Int64LeastColumnTransformer.java | 2 +- .../org/apache/iotdb/calc/utils/TypeServices.java | 74 ++++++++++++++++++++++ .../apache/iotdb/calc/utils/TypeServicesTest.java | 22 +++++++ 15 files changed, 111 insertions(+), 55 deletions(-) diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/AbstractGreatestLeastColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/AbstractGreatestLeastColumnTransformer.java index 434f371d0d3..2a6f3e90934 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/AbstractGreatestLeastColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/AbstractGreatestLeastColumnTransformer.java @@ -20,11 +20,11 @@ package org.apache.iotdb.calc.transformation.dag.column.multi; import org.apache.iotdb.calc.transformation.dag.column.ColumnTransformer; +import org.apache.iotdb.calc.utils.TypeServices; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.block.column.ColumnBuilder; import org.apache.tsfile.read.common.type.Type; -import org.apache.tsfile.read.common.type.TypeEnum; import java.util.List; @@ -59,52 +59,12 @@ public abstract class AbstractGreatestLeastColumnTransformer extends MultiColumn public static ColumnTransformer getGreatestColumnTransformer( Type type, List<ColumnTransformer> columnTransformers) { - TypeEnum typeEnum = type.getTypeEnum(); - switch (typeEnum) { - case BOOLEAN: - return new BooleanGreatestColumnTransformer(type, columnTransformers); - case INT32: - case DATE: - return new Int32GreatestColumnTransformer(type, columnTransformers); - case INT64: - case TIMESTAMP: - return new Int64GreatestColumnTransformer(type, columnTransformers); - case FLOAT: - return new FloatGreatestColumnTransformer(type, columnTransformers); - case DOUBLE: - return new DoubleGreatestColumnTransformer(type, columnTransformers); - case STRING: - case TEXT: - return new BinaryGreatestColumnTransformer(type, columnTransformers); - default: - throw new UnsupportedOperationException( - String.format("Unsupported data type: %s", typeEnum)); - } + return TypeServices.GREATEST_COLUMN_TRANSFORMER_SERVICE.call(type).apply(columnTransformers); } public static ColumnTransformer getLeastColumnTransformer( Type type, List<ColumnTransformer> columnTransformers) { - TypeEnum typeEnum = type.getTypeEnum(); - switch (typeEnum) { - case BOOLEAN: - return new BooleanLeastColumnTransformer(type, columnTransformers); - case INT32: - case DATE: - return new Int32LeastColumnTransformer(type, columnTransformers); - case INT64: - case TIMESTAMP: - return new Int64LeastColumnTransformer(type, columnTransformers); - case FLOAT: - return new FloatLeastColumnTransformer(type, columnTransformers); - case DOUBLE: - return new DoubleLeastColumnTransformer(type, columnTransformers); - case STRING: - case TEXT: - return new BinaryLeastColumnTransformer(type, columnTransformers); - default: - throw new UnsupportedOperationException( - String.format("Unsupported data type: %s", typeEnum)); - } + return TypeServices.LEAST_COLUMN_TRANSFORMER_SERVICE.call(type).apply(columnTransformers); } @Override diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryGreatestColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryGreatestColumnTransformer.java index ae15ca4ee92..45602660afa 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryGreatestColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryGreatestColumnTransformer.java @@ -29,7 +29,7 @@ import org.apache.tsfile.utils.Binary; import java.util.List; public class BinaryGreatestColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected BinaryGreatestColumnTransformer( + public BinaryGreatestColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryLeastColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryLeastColumnTransformer.java index 06c43b134d0..2370f258dd4 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryLeastColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BinaryLeastColumnTransformer.java @@ -29,7 +29,7 @@ import org.apache.tsfile.utils.Binary; import java.util.List; public class BinaryLeastColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected BinaryLeastColumnTransformer( + public BinaryLeastColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanGreatestColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanGreatestColumnTransformer.java index 89ada058444..da4320b9277 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanGreatestColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanGreatestColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class BooleanGreatestColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected BooleanGreatestColumnTransformer( + public BooleanGreatestColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanLeastColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanLeastColumnTransformer.java index 88054e7cf75..48d57c038c5 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanLeastColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/BooleanLeastColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class BooleanLeastColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected BooleanLeastColumnTransformer( + public BooleanLeastColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleGreatestColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleGreatestColumnTransformer.java index cf76de49088..de2711e9d80 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleGreatestColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleGreatestColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class DoubleGreatestColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected DoubleGreatestColumnTransformer( + public DoubleGreatestColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleLeastColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleLeastColumnTransformer.java index c98f124b292..e5da4489e62 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleLeastColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/DoubleLeastColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class DoubleLeastColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected DoubleLeastColumnTransformer( + public DoubleLeastColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatGreatestColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatGreatestColumnTransformer.java index ece454c9eb5..87758e75351 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatGreatestColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatGreatestColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class FloatGreatestColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected FloatGreatestColumnTransformer( + public FloatGreatestColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatLeastColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatLeastColumnTransformer.java index 5d7c6155dff..f06e8c69cb9 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatLeastColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/FloatLeastColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class FloatLeastColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected FloatLeastColumnTransformer( + public FloatLeastColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32GreatestColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32GreatestColumnTransformer.java index ed25278944f..91df173129d 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32GreatestColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32GreatestColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class Int32GreatestColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected Int32GreatestColumnTransformer( + public Int32GreatestColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32LeastColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32LeastColumnTransformer.java index b33b0022b10..97fc995812d 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32LeastColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int32LeastColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class Int32LeastColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected Int32LeastColumnTransformer( + public Int32LeastColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64GreatestColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64GreatestColumnTransformer.java index 8f8edb7ab13..0109ef81f45 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64GreatestColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64GreatestColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class Int64GreatestColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected Int64GreatestColumnTransformer( + public Int64GreatestColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64LeastColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64LeastColumnTransformer.java index 5c26f6ae92b..b579b73f410 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64LeastColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/Int64LeastColumnTransformer.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.type.Type; import java.util.List; public class Int64LeastColumnTransformer extends AbstractGreatestLeastColumnTransformer { - protected Int64LeastColumnTransformer( + public Int64LeastColumnTransformer( Type returnType, List<ColumnTransformer> columnTransformerList) { super(returnType, columnTransformerList); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/TypeServices.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/TypeServices.java index 8377ce7518d..5980317b17c 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/TypeServices.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/TypeServices.java @@ -68,6 +68,19 @@ import org.apache.iotdb.calc.execution.operator.source.relational.aggregation.gr import org.apache.iotdb.calc.execution.operator.source.relational.aggregation.grouped.array.IntBigArray; import org.apache.iotdb.calc.execution.operator.source.relational.aggregation.grouped.array.LongBigArray; import org.apache.iotdb.calc.i18n.CalcMessages; +import org.apache.iotdb.calc.transformation.dag.column.ColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.BinaryGreatestColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.BinaryLeastColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.BooleanGreatestColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.BooleanLeastColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.DoubleGreatestColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.DoubleLeastColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.FloatGreatestColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.FloatLeastColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.Int32GreatestColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.Int32LeastColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.Int64GreatestColumnTransformer; +import org.apache.iotdb.calc.transformation.dag.column.multi.Int64LeastColumnTransformer; import org.apache.iotdb.calc.utils.datastructure.SortKey; import org.apache.tsfile.block.column.Column; @@ -82,6 +95,7 @@ import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.write.UnSupportedDataTypeException; import java.util.Comparator; +import java.util.List; import java.util.function.Function; import java.util.function.IntFunction; import java.util.function.IntUnaryOperator; @@ -272,6 +286,59 @@ public class TypeServices { throw new UnSupportedDataTypeException(type.toString()).setChecked(true); }; + public static final TypeService<Function<List<ColumnTransformer>, ColumnTransformer>> + GREATEST_COLUMN_TRANSFORMER_SERVICE = + type -> + switch (type.getTypeEnum()) { + case BOOLEAN -> + columnTransformers -> + new BooleanGreatestColumnTransformer(type, columnTransformers); + case INT32, DATE -> + columnTransformers -> + new Int32GreatestColumnTransformer(type, columnTransformers); + case INT64, TIMESTAMP -> + columnTransformers -> + new Int64GreatestColumnTransformer(type, columnTransformers); + case FLOAT -> + columnTransformers -> + new FloatGreatestColumnTransformer(type, columnTransformers); + case DOUBLE -> + columnTransformers -> + new DoubleGreatestColumnTransformer(type, columnTransformers); + case STRING, TEXT -> + columnTransformers -> + new BinaryGreatestColumnTransformer(type, columnTransformers); + case BLOB, OBJECT, ROW, UNKNOWN, VECTOR -> + columnTransformers -> { + throw unsupportedGreatestLeastDataType(type); + }; + }; + + public static final TypeService<Function<List<ColumnTransformer>, ColumnTransformer>> + LEAST_COLUMN_TRANSFORMER_SERVICE = + type -> + switch (type.getTypeEnum()) { + case BOOLEAN -> + columnTransformers -> + new BooleanLeastColumnTransformer(type, columnTransformers); + case INT32, DATE -> + columnTransformers -> new Int32LeastColumnTransformer(type, columnTransformers); + case INT64, TIMESTAMP -> + columnTransformers -> new Int64LeastColumnTransformer(type, columnTransformers); + case FLOAT -> + columnTransformers -> new FloatLeastColumnTransformer(type, columnTransformers); + case DOUBLE -> + columnTransformers -> + new DoubleLeastColumnTransformer(type, columnTransformers); + case STRING, TEXT -> + columnTransformers -> + new BinaryLeastColumnTransformer(type, columnTransformers); + case BLOB, OBJECT, ROW, UNKNOWN, VECTOR -> + columnTransformers -> { + throw unsupportedGreatestLeastDataType(type); + }; + }; + public static final TypeService<Function<TsPrimitiveType, Object>> PRIMITIVE_TYPE_VALUE_EXTRACTOR_SERVICE = type -> @@ -510,6 +577,8 @@ public class TypeServices { PREVIOUS_FILL_SERVICE.check(); NEXT_FILL_SERVICE.check(); JOIN_KEY_COMPARATOR_SERVICE.check(); + GREATEST_COLUMN_TRANSFORMER_SERVICE.check(); + LEAST_COLUMN_TRANSFORMER_SERVICE.check(); MERGE_SORT_COMPARATOR_SERVICE.check(); MEMORY_USAGE_OF_ONE_MERGE_SORT_KEY_SERVICE.check(); MEMORY_USAGE_OF_ONE_SERIALIZABLE_ROW_FIELD_SERVICE.check(); @@ -530,6 +599,11 @@ public class TypeServices { return new IllegalArgumentException(CalcMessages.UNKNOWN_DATATYPE + type.getTypeEnum()); } + private static UnsupportedOperationException unsupportedGreatestLeastDataType(final Type type) { + return new UnsupportedOperationException( + CalcMessages.UNSUPPORTED_DATA_TYPE + type.getTypeEnum()); + } + public interface DefaultEncodingProvider { TSEncoding getDefaultBooleanEncoding(); diff --git a/iotdb-core/calc-commons/src/test/java/org/apache/iotdb/calc/utils/TypeServicesTest.java b/iotdb-core/calc-commons/src/test/java/org/apache/iotdb/calc/utils/TypeServicesTest.java index 6f5ac8a9b01..39ca2a1a2b4 100644 --- a/iotdb-core/calc-commons/src/test/java/org/apache/iotdb/calc/utils/TypeServicesTest.java +++ b/iotdb-core/calc-commons/src/test/java/org/apache/iotdb/calc/utils/TypeServicesTest.java @@ -23,6 +23,7 @@ import org.apache.iotdb.calc.execution.operator.process.join.merge.comparator.Jo import org.apache.iotdb.calc.execution.operator.process.join.merge.comparator.JoinKeyComparatorFactory; import org.apache.iotdb.calc.execution.operator.process.window.partition.Partition; import org.apache.iotdb.calc.execution.operator.process.window.utils.ColumnList; +import org.apache.iotdb.calc.transformation.dag.column.ColumnTransformer; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.enums.TSDataType; @@ -37,6 +38,7 @@ import org.junit.Assert; import org.junit.Test; import java.util.Collections; +import java.util.List; import java.util.Optional; import static org.junit.Assert.assertEquals; @@ -129,6 +131,26 @@ public class TypeServicesTest { () -> JoinKeyComparatorFactory.getComparator(Type.fromTsDataType(TSDataType.VECTOR), true)); } + @Test + public void testGreatestLeastTransformerServicesUseTypeStrategies() { + List<ColumnTransformer> columnTransformers = Collections.emptyList(); + assertNotNull( + TypeServices.GREATEST_COLUMN_TRANSFORMER_SERVICE + .call(Type.fromTsDataType(TSDataType.INT32)) + .apply(columnTransformers)); + assertNotNull( + TypeServices.LEAST_COLUMN_TRANSFORMER_SERVICE + .call(Type.fromTsDataType(TSDataType.DOUBLE)) + .apply(columnTransformers)); + + Assert.assertThrows( + UnsupportedOperationException.class, + () -> + TypeServices.GREATEST_COLUMN_TRANSFORMER_SERVICE + .call(Type.fromTsDataType(TSDataType.VECTOR)) + .apply(columnTransformers)); + } + // Covers every supported RANGE-frame type and guards native integer overflow and long precision. @Test public void testRangeFrameComparatorPreservesNativeArithmetic() {
