This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 68352c7c77b [fix](Nereids) constant folding for str_to_date on datev1
is wrong (#37360) (#37367)
68352c7c77b is described below
commit 68352c7c77bef3fa051ce4a4e68c2419eb260dae
Author: morrySnow <[email protected]>
AuthorDate: Mon Jul 8 15:21:12 2024 +0800
[fix](Nereids) constant folding for str_to_date on datev1 is wrong (#37360)
(#37367)
pick from master #37360
when enable datev1, we should return datev1/datetimev1
---
.../executable/DateTimeExtractAndTransform.java | 24 ++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java
index b6960d4384b..0639e96a9c9 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java
@@ -17,6 +17,8 @@
package org.apache.doris.nereids.trees.expressions.functions.executable;
+import org.apache.doris.catalog.ScalarType;
+import org.apache.doris.catalog.Type;
import org.apache.doris.nereids.exceptions.AnalysisException;
import org.apache.doris.nereids.trees.expressions.ExecFunction;
import org.apache.doris.nereids.trees.expressions.Expression;
@@ -32,8 +34,10 @@ import
org.apache.doris.nereids.trees.expressions.literal.SmallIntLiteral;
import org.apache.doris.nereids.trees.expressions.literal.StringLikeLiteral;
import org.apache.doris.nereids.trees.expressions.literal.TinyIntLiteral;
import org.apache.doris.nereids.trees.expressions.literal.VarcharLiteral;
+import org.apache.doris.nereids.types.DataType;
import org.apache.doris.nereids.types.DateTimeV2Type;
import org.apache.doris.nereids.types.DateType;
+import org.apache.doris.nereids.types.DateV2Type;
import org.apache.doris.nereids.types.DecimalV3Type;
import org.apache.doris.nereids.types.VarcharType;
import org.apache.doris.nereids.util.DateUtils;
@@ -611,11 +615,23 @@ public class DateTimeExtractAndTransform {
@ExecFunction(name = "str_to_date", argTypes = {"VARCHAR", "VARCHAR"},
returnType = "DATETIMEV2")
public static Expression strToDate(StringLikeLiteral str,
StringLikeLiteral format) {
if
(org.apache.doris.analysis.DateLiteral.hasTimePart(format.getStringValue())) {
- return
DateTimeV2Literal.fromJavaDateType(DateUtils.getTime(DateUtils.formatBuilder(format.getValue())
- .toFormatter(), str.getValue()));
+ DataType returnType =
DataType.fromCatalogType(ScalarType.getDefaultDateType(Type.DATETIME));
+ if (returnType instanceof DateTimeV2Type) {
+ return
DateTimeV2Literal.fromJavaDateType(DateUtils.getTime(DateUtils.formatBuilder(format.getValue())
+ .toFormatter(), str.getValue()));
+ } else {
+ return
DateTimeLiteral.fromJavaDateType(DateUtils.getTime(DateUtils.formatBuilder(format.getValue())
+ .toFormatter(), str.getValue()));
+ }
} else {
- return
DateV2Literal.fromJavaDateType(DateUtils.getTime(DateUtils.formatBuilder(format.getValue())
- .toFormatter(), str.getValue()));
+ DataType returnType =
DataType.fromCatalogType(ScalarType.getDefaultDateType(Type.DATE));
+ if (returnType instanceof DateV2Type) {
+ return
DateV2Literal.fromJavaDateType(DateUtils.getTime(DateUtils.formatBuilder(format.getValue())
+ .toFormatter(), str.getValue()));
+ } else {
+ return
DateLiteral.fromJavaDateType(DateUtils.getTime(DateUtils.formatBuilder(format.getValue())
+ .toFormatter(), str.getValue()));
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]