This is an automated email from the ASF dual-hosted git repository.
lihaopeng 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 e9a34e4f332 [Fix](QueryCache) Fix cache order different may cause
error (#47961)
e9a34e4f332 is described below
commit e9a34e4f332f2c69888d2d314db4b15aa967a041
Author: HappenLee <[email protected]>
AuthorDate: Tue Feb 18 12:00:04 2025 +0800
[Fix](QueryCache) Fix cache order different may cause error (#47961)
the origin judge may cause the need reorder judge error:
```
bool need_reorder = _slot_orders.size() != hit_cache_slot_orders->size();
if (!need_reorder) {
for (int i = 0; i < _slot_orders.size(); ++i) {
need_reorder = _slot_orders[i] !=
(*hit_cache_slot_orders)[i];
}
}
```
---
be/src/pipeline/exec/cache_source_operator.cpp | 9 +-------
.../data/query_p0/cache/query_cache.out | Bin 275 -> 365 bytes
.../suites/query_p0/cache/query_cache.groovy | 24 ++++++++++++++++++++-
3 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/be/src/pipeline/exec/cache_source_operator.cpp
b/be/src/pipeline/exec/cache_source_operator.cpp
index cace8465fc2..20fd247c136 100644
--- a/be/src/pipeline/exec/cache_source_operator.cpp
+++ b/be/src/pipeline/exec/cache_source_operator.cpp
@@ -70,14 +70,7 @@ Status CacheSourceLocalState::init(RuntimeState* state,
LocalStateInfo& info) {
_hit_cache_results = _query_cache_handle.get_cache_result();
auto hit_cache_slot_orders =
_query_cache_handle.get_cache_slot_orders();
- bool need_reorder = _slot_orders.size() !=
hit_cache_slot_orders->size();
- if (!need_reorder) {
- for (int i = 0; i < _slot_orders.size(); ++i) {
- need_reorder = _slot_orders[i] != (*hit_cache_slot_orders)[i];
- }
- }
-
- if (need_reorder) {
+ if (_slot_orders != *hit_cache_slot_orders) {
for (auto slot_id : _slot_orders) {
auto find_res = std::find(hit_cache_slot_orders->begin(),
hit_cache_slot_orders->end(),
slot_id);
diff --git a/regression-test/data/query_p0/cache/query_cache.out
b/regression-test/data/query_p0/cache/query_cache.out
index 5cfa581b3bf..90a8086bb69 100644
Binary files a/regression-test/data/query_p0/cache/query_cache.out and
b/regression-test/data/query_p0/cache/query_cache.out differ
diff --git a/regression-test/suites/query_p0/cache/query_cache.groovy
b/regression-test/suites/query_p0/cache/query_cache.groovy
index 997453f1819..e448a8978a0 100644
--- a/regression-test/suites/query_p0/cache/query_cache.groovy
+++ b/regression-test/suites/query_p0/cache/query_cache.groovy
@@ -160,4 +160,26 @@ suite("query_cache") {
GROUP BY field3
"""
-}
\ No newline at end of file
+ order_qt_query_cache7 """
+ SELECT
+ col_int_undef_signed,
+ MIN(`col_int_undef_signed`) AS field1,
+ MAX(`col_int_undef_signed`) AS field2,
+ COUNT(`col_int_undef_signed`) AS field3,
+ SUM(`col_int_undef_signed`) AS field4
+ FROM ${tableName}
+ GROUP BY col_int_undef_signed
+ """
+
+ // reorder the order_qt_query_cache7 select list to test the cache hit
+ order_qt_query_cache8 """
+ SELECT
+ COUNT(`col_int_undef_signed`) AS field3, -- Count of col_int_undef_signed
(Original field3)
+ col_int_undef_signed, -- The original unsigned
integer column (Original col_int_undef_signed)
+ SUM(`col_int_undef_signed`) AS field4, -- Sum of col_int_undef_signed
(Original field4)
+ MIN(`col_int_undef_signed`) AS field1, -- Minimum value of
col_int_undef_signed (Original field1)
+ MAX(`col_int_undef_signed`) AS field2 -- Maximum value of
col_int_undef_signed (Original field2). Note: Trailing comma removed to avoid
syntax error.
+FROM ${tableName}
+GROUP BY col_int_undef_signed;
+ """
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]