@@ -94,6 +94,12 @@ static bool isInPrimaryKey(const SortDescription & description, const std::strin
9494 return false ;
9595}
9696
97+ static bool isInPartitionKey (const std::string & column_name, const Names & partition_key_columns)
98+ {
99+ auto is_in_partition_key = std::find (partition_key_columns.begin (), partition_key_columns.end (), column_name);
100+ return is_in_partition_key != partition_key_columns.end ();
101+ }
102+
97103// / Returns true if merge result is not empty
98104static bool mergeMap (const SummingSortedAlgorithm::MapDescription & desc,
99105 Row & row, const ColumnRawPtrs & raw_columns, size_t row_number)
@@ -181,7 +187,8 @@ static bool mergeMap(const SummingSortedAlgorithm::MapDescription & desc,
181187static SummingSortedAlgorithm::ColumnsDefinition defineColumns (
182188 const Block & header,
183189 const SortDescription & description,
184- const Names & column_names_to_sum)
190+ const Names & column_names_to_sum,
191+ const Names & partition_key_columns)
185192{
186193 size_t num_columns = header.columns ();
187194 SummingSortedAlgorithm::ColumnsDefinition def;
@@ -223,8 +230,8 @@ static SummingSortedAlgorithm::ColumnsDefinition defineColumns(
223230 continue ;
224231 }
225232
226- // / Are they inside the PK ?
227- if (isInPrimaryKey (description, column.name , i))
233+ // / Are they inside the primary key or partiton key ?
234+ if (isInPrimaryKey (description, column.name , i) || isInPartitionKey (column. name , partition_key_columns) )
228235 {
229236 def.column_numbers_not_to_aggregate .push_back (i);
230237 continue ;
@@ -617,9 +624,10 @@ SummingSortedAlgorithm::SummingSortedAlgorithm(
617624 const Block & header, size_t num_inputs,
618625 SortDescription description_,
619626 const Names & column_names_to_sum,
627+ const Names & partition_key_columns,
620628 size_t max_block_size)
621629 : IMergingAlgorithmWithDelayedChunk(num_inputs, std::move(description_))
622- , columns_definition(defineColumns(header, description, column_names_to_sum))
630+ , columns_definition(defineColumns(header, description, column_names_to_sum, partition_key_columns ))
623631 , merged_data(getMergedDataColumns(header, columns_definition), max_block_size, columns_definition)
624632{
625633}
0 commit comments