Files
greptimedb/tests-integration/tests/main.rs
T
discord9anddiscord9 8d887ddd00 fix(query): restore columnar group-by for dictionary-encoded tags (#8902)
* fix(query): restore columnar group-by for dictionary-encoded tags

Bump the DataFusion fork to be93ffd85 (feat/dict-group-column-53), which
backports apache/datafusion #23187: DictionaryGroupValuesColumn lets
dictionary-encoded group keys use the columnar GroupValuesColumn fast
path (hash distinct dictionary values once per batch, resolve rows by
key index) instead of falling back to row-based GroupValuesRows.

This fixes the TSBS double-groupby regression introduced by #8541
(preserve dictionary-encoded query labels): v1.2.0-beta.1 scan output
changed tag columns to Dictionary(UInt32, Utf8), which DataFusion 53.1.0
did not support in GroupValuesColumn's supported_type allow-list, so
GROUP BY queries silently dropped to the ~60% slower row path
(time_calculating_group_ids +57%, peak_mem +50%, end-to-end +38%).

Adds an end-to-end integration test (dict_groupby_sst) that flushes a
flat-format SST with dictionary-encoded hostname, runs the tsbs-style
double-groupby query, and asserts correct results with no CastExec
inserted before the aggregate.

Signed-off-by: discord9 <discord9@greptime.dev>

* chore(deps): pin merged dictionary group-by support

Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>

---------

Signed-off-by: discord9 <discord9@greptime.dev>
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
Co-authored-by: discord9 <discord9@greptime.dev>
2026-08-21 03:50:30 +00:00

64 lines
1.6 KiB
Rust

// Copyright 2023 Greptime Team
//
// Licensed 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.
#![recursion_limit = "256"]
mod admin_function_event;
mod database_ddl_event;
mod dict_groupby_sst;
mod event_recorder_test_util;
#[macro_use]
mod grpc;
#[macro_use]
mod http;
mod flow_ddl_event;
mod gc_event;
mod json2;
mod jsonbench;
#[macro_use]
mod sql;
#[macro_use]
mod region_migration;
mod table_ddl_event;
#[macro_use]
mod repartition;
mod repartition_event;
#[macro_use]
mod repartition_expr_version;
mod mysql;
mod view_ddl_event;
mod wal_prune_event;
grpc_tests!(File, S3, S3WithCache, Oss, Azblob, Gcs);
http_tests!(File, S3, S3WithCache, Oss, Azblob, Gcs);
#[tokio::test(flavor = "multi_thread")]
async fn test_http_auth_from_standalone_user_provider_config() {
http::test_http_auth_from_standalone_user_provider_config().await;
}
sql_tests!(File);
region_migration_tests!(File);
repartition_tests!(File);
repartition_tests!(S3, S3WithCache, Oss, Azblob, Gcs);
repartition_expr_version_tests!(File);
repartition_expr_version_tests!(S3, S3WithCache, Oss, Azblob, Gcs);
// TODO(niebayes): add integration tests for remote wal.