This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 96afc5e8be6 [fix](function)timediff with now function causes a error
signature (#39322)
96afc5e8be6 is described below
commit 96afc5e8be6e2fe896a6f76b113e453bd43b67b0
Author: Mryange <[email protected]>
AuthorDate: Wed Aug 14 12:04:20 2024 +0800
[fix](function)timediff with now function causes a error signature (#39322)
## Proposed changes
```
mysql [(none)]>select round(timediff(now(),'2024-08-15')/60/60,2);
ERROR 1105 (HY000): errCode = 2, detailMessage = argument 1 requires
datetimev2 type, however 'now()' is of datetime type
```
The reason is that the function parameter types were modified in
expectedInputTypes, which led to no match being found. The code here is
from a long time ago. Because the precision of datetimev2 could not be
deduced in the past, a separate implementation was made here. This code
can be safely deleted.
<!--Describe your changes.-->
---
.../trees/expressions/functions/scalar/TimeDiff.java | 18 ------------------
.../data/correctness/test_time_diff_microseconds.out | 3 +++
.../correctness/test_time_diff_microseconds.groovy | 8 ++++++++
3 files changed, 11 insertions(+), 18 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/TimeDiff.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/TimeDiff.java
index da83d5453fc..997475ca40e 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/TimeDiff.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/TimeDiff.java
@@ -21,10 +21,8 @@ import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.trees.expressions.Expression;
import
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import
org.apache.doris.nereids.trees.expressions.functions.PropagateNullableOnDateLikeV2Args;
-import org.apache.doris.nereids.trees.expressions.literal.StringLikeLiteral;
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
-import org.apache.doris.nereids.types.DataType;
import org.apache.doris.nereids.types.DateTimeType;
import org.apache.doris.nereids.types.DateTimeV2Type;
import org.apache.doris.nereids.types.DateV2Type;
@@ -96,20 +94,4 @@ public class TimeDiff extends ScalarFunction
}
return signature;
}
-
- @Override
- public List<DataType> expectedInputTypes() {
- FunctionSignature signature = getSignature();
- if (getArgument(0) instanceof StringLikeLiteral) {
- StringLikeLiteral str = (StringLikeLiteral) getArgument(0);
- DateTimeV2Type left =
DateTimeV2Type.forTypeFromString(str.getStringValue());
- signature = signature.withArgumentType(0, left);
- }
- if (getArgument(1) instanceof StringLikeLiteral) {
- StringLikeLiteral str = (StringLikeLiteral) getArgument(1);
- DateTimeV2Type right =
DateTimeV2Type.forTypeFromString(str.getStringValue());
- signature = signature.withArgumentType(1, right);
- }
- return signature.argumentsTypes;
- }
}
diff --git a/regression-test/data/correctness/test_time_diff_microseconds.out
b/regression-test/data/correctness/test_time_diff_microseconds.out
index 2ef74548ebd..39efa5b381e 100644
--- a/regression-test/data/correctness/test_time_diff_microseconds.out
+++ b/regression-test/data/correctness/test_time_diff_microseconds.out
@@ -27,3 +27,6 @@
-- !select8 --
48:00:00.11500
+-- !select9 --
+67:19:00.123
+
diff --git
a/regression-test/suites/correctness/test_time_diff_microseconds.groovy
b/regression-test/suites/correctness/test_time_diff_microseconds.groovy
index a7368201072..3dd023015fd 100644
--- a/regression-test/suites/correctness/test_time_diff_microseconds.groovy
+++ b/regression-test/suites/correctness/test_time_diff_microseconds.groovy
@@ -91,4 +91,12 @@ suite("test_time_diff_microseconds") {
cast('0001-01-03 00:00:00.114514' as Datetimev2(3) ) ,
cast('0001-01-01 00:00:00.000000' as Datetimev2(5) ));
"""
+
+ sql """
+ select round(timediff(now(),'2024-08-15')/60/60,2);
+ """
+
+ qt_select9 """
+ select timediff('0001-01-03 19:19:00.123','0001-01-01 00:00:00.0000');
+ """
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]