Skip to content

Commit 03b24b2

Browse files
committed
jh-v7
1 parent a9a4794 commit 03b24b2

File tree

5 files changed

+54
-38
lines changed

5 files changed

+54
-38
lines changed

be/test/vec/function/function_time_test.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -338,18 +338,6 @@ TEST(VTimestampFunctionsTest, date_format_test) {
338338
}
339339
}
340340

341-
TEST(VTimestampFunctionsTest, to_days_test) {
342-
std::string func_name = "to_days";
343-
344-
InputTypeSet input_types = {PrimitiveType::TYPE_DATETIMEV2};
345-
346-
DataSet data_set = {
347-
{{std::string("2021-01-01 00:00:00")}, 738156},
348-
};
349-
350-
static_cast<void>(check_function<DataTypeInt32, true>(func_name, input_types, data_set));
351-
}
352-
353341
TEST(VTimestampFunctionsTest, date_test) {
354342
std::string func_name = "date";
355343

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ComputeSignatureHelper.java

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -250,15 +250,13 @@ public static FunctionSignature implementAnyDataTypeWithOutIndex(
250250
sigType = signature.argumentsTypes.get(i);
251251
}
252252
DataType expressionType = arguments.get(i).getDataType();
253-
if (sigType.isDateType() || sigType.isDateTimeType()) {
254-
// Convert legacy datetime/date types to v2 types, keep v2 types as is
255-
if (sigType.isDateTimeType()) {
256-
// Legacy DateTimeType -> DateTimeV2Type
257-
sigType = DateTimeV2Type.SYSTEM_DEFAULT;
258-
} else if (sigType.isDateType()) {
259-
// Legacy DateType -> DateV2Type
260-
sigType = DateV2Type.INSTANCE;
261-
}
253+
// Convert legacy datetime/date types to v2 types, keep v2 types as is
254+
if (sigType.isDateTimeType()) {
255+
// Legacy DateTimeType -> DateTimeV2Type
256+
sigType = DateTimeV2Type.SYSTEM_DEFAULT;
257+
} else if (sigType.isDateType()) {
258+
// Legacy DateType -> DateV2Type
259+
sigType = DateV2Type.INSTANCE;
262260
}
263261
newArgTypes.add(replaceAnyDataTypeWithOutIndex(sigType, expressionType));
264262
}
@@ -281,15 +279,13 @@ public static FunctionSignature implementAnyDataTypeWithIndex(
281279
sigType = signature.argumentsTypes.get(i);
282280
}
283281
DataType expressionType = arguments.get(i).getDataType();
284-
if (sigType.isDateType() || sigType.isDateTimeType()) {
285-
// Convert legacy datetime/date types to v2 types, keep v2 types as is
286-
if (sigType.isDateTimeType()) {
287-
// Legacy DateTimeType -> DateTimeV2Type
288-
sigType = DateTimeV2Type.SYSTEM_DEFAULT;
289-
} else if (sigType.isDateType()) {
290-
// Legacy DateType -> DateV2Type
291-
sigType = DateV2Type.INSTANCE;
292-
}
282+
// Convert legacy datetime/date types to v2 types, keep v2 types as is
283+
if (sigType.isDateTimeType()) {
284+
// Legacy DateTimeType -> DateTimeV2Type
285+
sigType = DateTimeV2Type.SYSTEM_DEFAULT;
286+
} else if (sigType.isDateType()) {
287+
// Legacy DateType -> DateV2Type
288+
sigType = DateV2Type.INSTANCE;
293289
}
294290
collectAnyDataType(sigType, expressionType, indexToArgumentTypes);
295291
}

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ToDays.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullableOnDateOrTimeLikeV2Args;
2424
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2525
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
26-
import org.apache.doris.nereids.types.DateTimeV2Type;
2726
import org.apache.doris.nereids.types.DateV2Type;
2827
import org.apache.doris.nereids.types.IntegerType;
2928

@@ -39,7 +38,6 @@ public class ToDays extends ScalarFunction
3938
implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullableOnDateOrTimeLikeV2Args {
4039

4140
private static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
42-
FunctionSignature.ret(IntegerType.INSTANCE).args(DateTimeV2Type.SYSTEM_DEFAULT),
4341
FunctionSignature.ret(IntegerType.INSTANCE).args(DateV2Type.INSTANCE)
4442
);
4543

fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/FoldConstantTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,6 @@ void testFoldDate() {
341341
toDays = new ToDays(DateV2Literal.fromJavaDateType(LocalDateTime.of(9999, 12, 31, 1, 1, 1)));
342342
rewritten = executor.rewrite(toDays, context);
343343
Assertions.assertEquals(new IntegerLiteral(3652424), rewritten);
344-
toDays = new ToDays(DateTimeV2Literal.fromJavaDateType(LocalDateTime.of(1, 1, 1, 1, 1, 1), 0));
345-
rewritten = executor.rewrite(toDays, context);
346-
Assertions.assertEquals(new IntegerLiteral(366), rewritten);
347-
toDays = new ToDays(DateTimeV2Literal.fromJavaDateType(LocalDateTime.of(9999, 12, 31, 1, 1, 1), 0));
348-
rewritten = executor.rewrite(toDays, context);
349-
Assertions.assertEquals(new IntegerLiteral(3652424), rewritten);
350344

351345
MonthsBetween monthsBetween = new MonthsBetween(
352346
DateV2Literal.fromJavaDateType(LocalDateTime.of(1, 1, 1, 1, 1, 1)),

fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/functions/ComputeSignatureHelperTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.apache.doris.nereids.trees.expressions.Expression;
2323
import org.apache.doris.nereids.trees.expressions.literal.ArrayLiteral;
2424
import org.apache.doris.nereids.trees.expressions.literal.BigIntLiteral;
25+
import org.apache.doris.nereids.trees.expressions.literal.DateLiteral;
26+
import org.apache.doris.nereids.trees.expressions.literal.DateTimeLiteral;
2527
import org.apache.doris.nereids.trees.expressions.literal.DateTimeV2Literal;
2628
import org.apache.doris.nereids.trees.expressions.literal.DecimalV3Literal;
2729
import org.apache.doris.nereids.trees.expressions.literal.DoubleLiteral;
@@ -36,7 +38,10 @@
3638
import org.apache.doris.nereids.types.BigIntType;
3739
import org.apache.doris.nereids.types.BooleanType;
3840
import org.apache.doris.nereids.types.DataType;
41+
import org.apache.doris.nereids.types.DateTimeType;
3942
import org.apache.doris.nereids.types.DateTimeV2Type;
43+
import org.apache.doris.nereids.types.DateType;
44+
import org.apache.doris.nereids.types.DateV2Type;
4045
import org.apache.doris.nereids.types.DecimalV2Type;
4146
import org.apache.doris.nereids.types.DecimalV3Type;
4247
import org.apache.doris.nereids.types.DoubleType;
@@ -725,6 +730,41 @@ public List<Expression> children() {
725730
}
726731
}
727732

733+
@Test
734+
void testDateV1AndDateTimeV1TypeConversion() {
735+
// Test DateType -> DateV2Type conversion with implementAnyDataTypeWithOutIndex
736+
FunctionSignature dateSignature = FunctionSignature.ret(DateType.INSTANCE).args(DateType.INSTANCE);
737+
List<Expression> dateArguments = Lists.newArrayList(new DateLiteral("2023-01-01"));
738+
739+
dateSignature = ComputeSignatureHelper.implementAnyDataTypeWithOutIndex(dateSignature, dateArguments);
740+
741+
// Verify that DateType is converted to DateV2Type
742+
Assertions.assertTrue(dateSignature.argumentsTypes.get(0) instanceof DateV2Type);
743+
744+
// Test DateTimeType -> DateTimeV2Type conversion with implementAnyDataTypeWithOutIndex
745+
FunctionSignature dateTimeSignature = FunctionSignature.ret(DateTimeType.INSTANCE)
746+
.args(DateTimeType.INSTANCE);
747+
List<Expression> dateTimeArguments = Lists.newArrayList(new DateTimeLiteral("2023-01-01 12:00:00"));
748+
749+
dateTimeSignature = ComputeSignatureHelper.implementAnyDataTypeWithOutIndex(dateTimeSignature,
750+
dateTimeArguments);
751+
752+
// Verify that DateTimeType is converted to DateTimeV2Type
753+
Assertions.assertTrue(dateTimeSignature.argumentsTypes.get(0) instanceof DateTimeV2Type);
754+
755+
// Also test with implementAnyDataTypeWithIndex
756+
FunctionSignature dateSignatureWithIndex = FunctionSignature.ret(DateType.INSTANCE).args(DateType.INSTANCE);
757+
dateSignatureWithIndex = ComputeSignatureHelper.implementAnyDataTypeWithIndex(dateSignatureWithIndex,
758+
dateArguments);
759+
Assertions.assertTrue(dateSignatureWithIndex.argumentsTypes.get(0) instanceof DateV2Type);
760+
761+
FunctionSignature dateTimeSignatureWithIndex = FunctionSignature.ret(DateTimeType.INSTANCE)
762+
.args(DateTimeType.INSTANCE);
763+
dateTimeSignatureWithIndex = ComputeSignatureHelper
764+
.implementAnyDataTypeWithIndex(dateTimeSignatureWithIndex, dateTimeArguments);
765+
Assertions.assertTrue(dateTimeSignatureWithIndex.argumentsTypes.get(0) instanceof DateTimeV2Type);
766+
}
767+
728768
private static class FakeComputeSignature implements ComputeSignature {
729769
@Override
730770
public List<Expression> children() {

0 commit comments

Comments
 (0)