This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new f66882cbd07 branch-3.1: [fix](datev2) wrong result of predicate about
cast(cast(datetimev2 as datev2) as datetimev2) #53485 (#53512)
f66882cbd07 is described below
commit f66882cbd07f68ef5bc9f6fe780f746a60969a62
Author: Pxl <[email protected]>
AuthorDate: Sat Jul 19 09:26:55 2025 +0800
branch-3.1: [fix](datev2) wrong result of predicate about
cast(cast(datetimev2 as datev2) as datetimev2) #53485 (#53512)
pick from #53485
---
be/src/pipeline/exec/scan_operator.cpp | 3 +-
regression-test/data/cast_p0/cast_ignore.out | Bin 0 -> 151 bytes
regression-test/suites/cast_p0/cast_ignore.groovy | 35 ++++++++++++++++++++++
3 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/be/src/pipeline/exec/scan_operator.cpp
b/be/src/pipeline/exec/scan_operator.cpp
index 686fe6d2960..94d6b6d4db7 100644
--- a/be/src/pipeline/exec/scan_operator.cpp
+++ b/be/src/pipeline/exec/scan_operator.cpp
@@ -473,7 +473,8 @@ bool ScanLocalState<Derived>::_is_predicate_acting_on_slot(
// the type of predicate not match the slot's type
return false;
}
- } else if (child_contains_slot->type().is_datetime_type() &&
+ } else if ((child_contains_slot->type().is_datetime_type() ||
+ child_contains_slot->type().is_datetime_v2_type()) &&
child_contains_slot->node_type() ==
doris::TExprNodeType::CAST_EXPR) {
// Expr `CAST(CAST(datetime_col AS DATE) AS DATETIME) =
datetime_literal` should not be
// push down.
diff --git a/regression-test/data/cast_p0/cast_ignore.out
b/regression-test/data/cast_p0/cast_ignore.out
new file mode 100644
index 00000000000..ef9a4ecb109
Binary files /dev/null and b/regression-test/data/cast_p0/cast_ignore.out differ
diff --git a/regression-test/suites/cast_p0/cast_ignore.groovy
b/regression-test/suites/cast_p0/cast_ignore.groovy
new file mode 100644
index 00000000000..261b44c1164
--- /dev/null
+++ b/regression-test/suites/cast_p0/cast_ignore.groovy
@@ -0,0 +1,35 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("cast_ignore") {
+ sql "drop table if exists tdate"
+ sql """
+ create table tdate(
+ k1 int,
+ kdate date,
+ kdatetime datetime
+) distributed by hash (k1) buckets 1
+properties ("replication_num"="1");
+ """
+ sql """
+insert into tdate values(1,'2023-10-01','2023-10-01 01:00:00'),
+(2,'2023-10-02','2023-10-02 01:00:00'),
+(3,'2023-10-03','2023-10-03 01:00:00');
+"""
+ qt_test "select k1,kdate,kdatetime from tdate where cast(cast(kdatetime as
date) as datetime)='2023-10-01';"
+ qt_test "select k1,kdate,kdatetime from tdate where
kdatetime='2023-10-01';"
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]