@@ -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
0 commit comments