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 10ec4665485 [fix](RF) fix 'Invalid value' error of RF of datetimev2
type for max value (#32649)
10ec4665485 is described below
commit 10ec4665485ea7abf36f5048939e15f460346fd5
Author: TengJianPing <[email protected]>
AuthorDate: Fri Mar 22 22:28:29 2024 +0800
[fix](RF) fix 'Invalid value' error of RF of datetimev2 type for max value
(#32649)
---
be/src/vec/exprs/vexpr.cpp | 2 +-
be/src/vec/exprs/vexpr.h | 4 +-
.../join/test_runtimefilter_on_datev2.out | 14 +++
.../join/test_runtimefilter_on_datev2.groovy | 110 +++++++++++++++++++++
4 files changed, 127 insertions(+), 3 deletions(-)
diff --git a/be/src/vec/exprs/vexpr.cpp b/be/src/vec/exprs/vexpr.cpp
index c0f0eb07612..ee811c65aba 100644
--- a/be/src/vec/exprs/vexpr.cpp
+++ b/be/src/vec/exprs/vexpr.cpp
@@ -101,7 +101,7 @@ TExprNode create_texpr_node_from(const void* data, const
PrimitiveType& type, in
break;
}
case TYPE_DATETIMEV2: {
- THROW_IF_ERROR(create_texpr_literal_node<TYPE_DATETIMEV2>(data,
&node));
+ THROW_IF_ERROR(create_texpr_literal_node<TYPE_DATETIMEV2>(data, &node,
precision, scale));
break;
}
case TYPE_DATE: {
diff --git a/be/src/vec/exprs/vexpr.h b/be/src/vec/exprs/vexpr.h
index 9a6b514d03a..4c4f0aa6740 100644
--- a/be/src/vec/exprs/vexpr.h
+++ b/be/src/vec/exprs/vexpr.h
@@ -358,11 +358,11 @@ Status create_texpr_literal_node(const void* data,
TExprNode* node, int precisio
const auto* origin_value = reinterpret_cast<const
DateV2Value<DateTimeV2ValueType>*>(data);
TDateLiteral date_literal;
char convert_buffer[30];
- origin_value->to_string(convert_buffer);
+ origin_value->to_string(convert_buffer, scale);
date_literal.__set_value(convert_buffer);
(*node).__set_date_literal(date_literal);
(*node).__set_node_type(TExprNodeType::DATE_LITERAL);
- (*node).__set_type(create_type_desc(PrimitiveType::TYPE_DATETIMEV2));
+ (*node).__set_type(create_type_desc(PrimitiveType::TYPE_DATETIMEV2,
precision, scale));
} else if constexpr (T == TYPE_DECIMALV2) {
const auto* origin_value = reinterpret_cast<const
DecimalV2Value*>(data);
(*node).__set_node_type(TExprNodeType::DECIMAL_LITERAL);
diff --git
a/regression-test/data/nereids_p0/join/test_runtimefilter_on_datev2.out
b/regression-test/data/nereids_p0/join/test_runtimefilter_on_datev2.out
index 77a92cb3754..35f06cc6373 100644
--- a/regression-test/data/nereids_p0/join/test_runtimefilter_on_datev2.out
+++ b/regression-test/data/nereids_p0/join/test_runtimefilter_on_datev2.out
@@ -362,3 +362,17 @@
1 2022-01-01 1 2022-01-01
1 2022-01-01 1 2022-01-01
+-- !datetime_rf_1_p1 --
+2011-11-11 2011-11-11
+
+-- !datetime_rf_1_p2 --
+2011-11-11 2011-11-11
+
+-- !datetime_rf_2_p1 --
+2011-11-11T11:11:11.123455 2011-11-11T11:11:11.123455
+
+-- !datetime_rf_2_p2 --
+2011-11-11T11:11:11.123455 2011-11-11T11:11:11.123455
+
+-- !datetime_rf_3 --
+
diff --git
a/regression-test/suites/nereids_p0/join/test_runtimefilter_on_datev2.groovy
b/regression-test/suites/nereids_p0/join/test_runtimefilter_on_datev2.groovy
index 7ebb307b6db..768ef7da586 100644
--- a/regression-test/suites/nereids_p0/join/test_runtimefilter_on_datev2.groovy
+++ b/regression-test/suites/nereids_p0/join/test_runtimefilter_on_datev2.groovy
@@ -221,4 +221,114 @@ suite("test_runtimefilter_on_datev2", "nereids_p0") {
qt_join1 """
SELECT * FROM ${dateTable} a, ${dateV2Table} b WHERE a.date = b.date;
"""
+
+ // bug fix
+ sql "set disable_join_reorder=true;"
+ sql "set enable_runtime_filter_prune=false;"
+ sql "set runtime_filter_type='MIN_MAX';"
+ sql "set runtime_filter_wait_time_ms=10000;"
+
+ // test date
+ sql "drop table if exists dt_rftest_l";
+ sql "drop table if exists dt_rftest_r";
+ sql """
+ CREATE TABLE `dt_rftest_l` (
+ `k1_date_l` DATEV2
+ )
+ DISTRIBUTED BY HASH(`k1_date_l`) buckets 16
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql """
+ CREATE TABLE `dt_rftest_r` (
+ `k1_date_r` DATEV2
+ )
+ DISTRIBUTED BY HASH(`k1_date_r`) buckets 16
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql """
+ insert into dt_rftest_l values
+ ("2001-11-11 11:11:11.123455"),
+ ("2011-11-11 11:11:11.123455"),
+ ("9999-11-11 11:11:11.123456");
+ """
+ sql """
+ insert into dt_rftest_r values("2011-11-11 11:11:11.123456");
+ """
+ qt_datetime_rf_1_p1 """
+ select /*+SET_VAR(parallel_pipeline_task_num=1)*/ * from dt_rftest_l
join dt_rftest_r on k1_date_l = k1_date_r order by 1, 2;
+ """
+ qt_datetime_rf_1_p2 """
+ select /*+SET_VAR(parallel_pipeline_task_num=8)*/ * from dt_rftest_l
join dt_rftest_r on k1_date_l = k1_date_r order by 1, 2;
+ """
+
+ // test datetime
+ sql "drop table if exists dt_rftest_l";
+ sql "drop table if exists dt_rftest_r";
+ sql """
+ CREATE TABLE `dt_rftest_l` (
+ `k1_date_l` DATETIMEV2(6)
+ )
+ DISTRIBUTED BY HASH(`k1_date_l`) buckets 16
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql """
+ CREATE TABLE `dt_rftest_r` (
+ `k1_date_r` DATETIMEV2(6)
+ )
+ DISTRIBUTED BY HASH(`k1_date_r`) buckets 16
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql """
+ insert into dt_rftest_l values
+ ("2001-11-11 11:11:11.123455"),
+ ("2011-11-11 11:11:11.123455"),
+ ("9999-11-11 11:11:11.123455");
+ """
+ sql """
+ insert into dt_rftest_r values("2011-11-11 11:11:11.123455");
+ """
+ // RF is different with parallel_pipeline_task_num=1 and
parallel_pipeline_task_num=2
+ qt_datetime_rf_2_p1 """
+ select /*+SET_VAR(parallel_pipeline_task_num=1)*/ * from dt_rftest_l
join dt_rftest_r on k1_date_l = k1_date_r order by 1, 2;
+ """
+ qt_datetime_rf_2_p2 """
+ select /*+SET_VAR(parallel_pipeline_task_num=8)*/ * from dt_rftest_l
join dt_rftest_r on k1_date_l = k1_date_r order by 1, 2;
+ """
+
+ sql "drop table if exists dt_rftest_l";
+ sql "drop table if exists dt_rftest_r";
+ sql """
+ CREATE TABLE `dt_rftest_l` (
+ `k1_date` DATEV2
+ )
+ DISTRIBUTED BY HASH(`k1_date`)
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql """
+ CREATE TABLE `dt_rftest_r` (
+ `k1_char` varchar(64)
+ )
+ DISTRIBUTED BY HASH(`k1_char`)
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ )
+ """
+
+ sql """ insert into dt_rftest_l values
+ ("9999-12-31 23:59:59");
+ """
+ sql """ insert into dt_rftest_r values
+ ("9999-12-31 23:59:59.999999");
+ """
+ qt_datetime_rf_3 """ select * from dt_rftest_l join dt_rftest_r on k1_date
= k1_char order by 1, 2"""
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]