If they are defined, they can override table-level settings.
if (normal_parts.empty())
        {
            selected_candidate = &*minmax_count_projection_candidate;
            selected_candidate->complete = true;
            min_sum_marks = query_info.minmax_count_projection_block.rows();
        }
        else
        {
            if (normal_parts.size() == parts.size())
            {
                /
            }
            else
            {
                auto normal_result_ptr = reader.estimateNumMarksToRead(
                    normal_parts,
                    analysis_result.required_columns,
                    metadata_snapshot,
                    metadata_snapshot,
                    query_info,
                    query_context,
                    settings.max_threads,
                    max_added_blocks);
                if (!normal_result_ptr->error())
                {
                    selected_candidate = &*minmax_count_projection_candidate;
                    selected_candidate->merge_tree_normal_select_result_ptr = normal_result_ptr;
                    min_sum_marks = query_info.minmax_count_projection_block.rows() + normal_result_ptr->marks();
                }
            }