Skip to content

Commit 52bfa99

Browse files
Merge pull request #7384 from ClickHouse/fix_ub_in_system_parts
Fix UB in StoragesInfoStream
2 parents 2a9e2ab + 06b28f9 commit 52bfa99

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

dbms/src/Storages/System/StorageSystemPartsBase.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ StoragesInfoStream::StoragesInfoStream(const SelectQueryInfo & query_info, const
7777
MutableColumnPtr database_column_mut = ColumnString::create();
7878
for (const auto & database : databases)
7979
{
80-
if (context.hasDatabaseAccessRights(database.first))
80+
/// Lazy database can not contain MergeTree tables
81+
/// and it's unnecessary to load all tables of Lazy database just to filter all of them.
82+
if (context.hasDatabaseAccessRights(database.first) && database.second->getEngineName() != "Lazy")
8183
database_column_mut->insert(database.first);
8284
}
8385
block_to_filter.insert(ColumnWithTypeAndName(
@@ -101,10 +103,6 @@ StoragesInfoStream::StoragesInfoStream(const SelectQueryInfo & query_info, const
101103
String database_name = (*database_column_)[i].get<String>();
102104
const DatabasePtr database = databases.at(database_name);
103105

104-
/// Lazy database can not contain MergeTree tables
105-
if (database->getEngineName() == "Lazy")
106-
continue;
107-
108106
offsets[i] = i ? offsets[i - 1] : 0;
109107
for (auto iterator = database->getIterator(context); iterator->isValid(); iterator->next())
110108
{

dbms/tests/queries/0_stateless/00961_checksums_in_system_parts_columns_table.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ SELECT
1111
hash_of_uncompressed_files,
1212
uncompressed_hash_of_compressed_files
1313
FROM system.parts
14-
WHERE table = 'test_00961';
14+
WHERE table = 'test_00961' and database = currentDatabase();
1515

1616
DROP TABLE test_00961;
1717

dbms/tests/queries/0_stateless/01014_lazy_database_basic.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
44
. $CURDIR/../shell_config.sh
55

6+
${CLICKHOUSE_CLIENT} -n -q "DROP DATABASE IF EXISTS testlazy"
67

78
${CLICKHOUSE_CLIENT} -n -q "
89
CREATE DATABASE testlazy ENGINE = Lazy(1);
@@ -11,6 +12,8 @@ ${CLICKHOUSE_CLIENT} -n -q "
1112
CREATE TABLE testlazy.tlog (a UInt64, b UInt64) ENGINE = TinyLog;
1213
"
1314

15+
${CLICKHOUSE_CLIENT} -q "SELECT * FROM system.parts WHERE database = 'testlazy'";
16+
1417
sleep 1.5
1518

1619
${CLICKHOUSE_CLIENT} -q "

0 commit comments

Comments
 (0)