Skip to content

Commit 765cc85

Browse files
Add settings for backward compatibility
1 parent d3eda20 commit 765cc85

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

src/Core/SettingsChangesHistory.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,7 @@ const VersionToSettingsChangesMap & getMergeTreeSettingsChangesHistory()
697697
addSettingsChanges(merge_tree_settings_changes_history, "25.4",
698698
{
699699
{"max_merge_delayed_streams_for_parallel_write", 1000, 100, "New setting"},
700+
{"allow_summing_columns_in_partition_or_order_key", true, false, "Don't allow summing of partition or sorting key columns"},
700701
});
701702
addSettingsChanges(merge_tree_settings_changes_history, "25.3",
702703
{

src/Storages/MergeTree/MergeTreeData.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ namespace MergeTreeSetting
196196
extern const MergeTreeSettingsBool allow_nullable_key;
197197
extern const MergeTreeSettingsBool allow_remote_fs_zero_copy_replication;
198198
extern const MergeTreeSettingsBool allow_suspicious_indices;
199+
extern const MergeTreeSettingsBool allow_summing_columns_in_partition_or_order_key;
199200
extern const MergeTreeSettingsBool assign_part_uuids;
200201
extern const MergeTreeSettingsBool async_insert;
201202
extern const MergeTreeSettingsBool check_sample_column_is_correct;
@@ -517,7 +518,7 @@ MergeTreeData::MergeTreeData(
517518
setProperties(metadata_, metadata_, !sanity_checks);
518519

519520
/// NOTE: using the same columns list as is read when performing actual merges.
520-
merging_params.check(metadata_);
521+
merging_params.check(*settings, metadata_);
521522

522523
if (metadata_.sampling_key.definition_ast != nullptr)
523524
{
@@ -1084,7 +1085,7 @@ void MergeTreeData::checkStoragePolicy(const StoragePolicyPtr & new_storage_poli
10841085
}
10851086

10861087

1087-
void MergeTreeData::MergingParams::check(const StorageInMemoryMetadata & metadata) const
1088+
void MergeTreeData::MergingParams::check(const MergeTreeSettings & settings, const StorageInMemoryMetadata & metadata) const
10881089
{
10891090
const auto columns = metadata.getColumns().getAllPhysical();
10901091

@@ -1218,8 +1219,10 @@ void MergeTreeData::MergingParams::check(const StorageInMemoryMetadata & metadat
12181219
column_to_sum);
12191220
}
12201221

1222+
auto allow_summing_columns_in_partition_or_order_key = settings[MergeTreeSetting::allow_summing_columns_in_partition_or_order_key];
1223+
12211224
/// Check that summing columns are not in partition key.
1222-
if (metadata.isPartitionKeyDefined())
1225+
if (!allow_summing_columns_in_partition_or_order_key && metadata.isPartitionKeyDefined())
12231226
{
12241227
auto partition_key_columns = metadata.getPartitionKey().expression->getRequiredColumns();
12251228

@@ -1234,7 +1237,7 @@ void MergeTreeData::MergingParams::check(const StorageInMemoryMetadata & metadat
12341237
}
12351238

12361239
/// Check that summing columns are not in sorting key.
1237-
if (metadata.isSortingKeyDefined())
1240+
if (!allow_summing_columns_in_partition_or_order_key && metadata.isSortingKeyDefined())
12381241
{
12391242
auto sorting_key_columns = metadata.getSortingKey().expression->getRequiredColumns();
12401243

src/Storages/MergeTree/MergeTreeData.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ class MergeTreeData : public IStorage, public WithMutableContext
368368
Graphite::Params graphite_params;
369369

370370
/// Check that needed columns are present and have correct types.
371-
void check(const StorageInMemoryMetadata & metadata) const;
371+
void check(const MergeTreeSettings & settings, const StorageInMemoryMetadata & metadata) const;
372372

373373
String getModeName() const;
374374
};

src/Storages/MergeTree/MergeTreeSettings.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1567,6 +1567,10 @@ namespace ErrorCodes
15671567
When enabled, min-max (skipping) indices are added for all string columns of
15681568
the table.
15691569
)", 0) \
1570+
DECLARE(Bool, allow_summing_columns_in_partition_or_order_key, false, R"(
1571+
When enabled, allows summing columns in a SummingMergeTree table to be used in
1572+
the partition or sorting key.
1573+
)", 0) \
15701574
\
15711575
/** Experimental/work in progress feature. Unsafe for production. */ \
15721576
DECLARE(UInt64, part_moves_between_shards_enable, 0, R"(

0 commit comments

Comments
 (0)