`Selected 13 parts by date, 13 parts by key, 26 marks by primary key .... `

This message is confusing for new users.

I suggest to replace it with

`Selected 13 parts by partition key, 13 parts by primary key, 26 marks by primary key...`
parts.push_back(part);
        }
    }
    
    Names column_names_to_read = real_column_names;
    std::shared_ptr<ASTFunction> filter_function;
    ExpressionActionsPtr filter_expression;
    RelativeSize relative_sample_size = 0;
    RelativeSize relative_sample_offset = 0;
    const auto & select = query_info.query->as<ASTSelectQuery &>();
    auto select_sample_size = select.sampleSize();
    auto select_sample_offset = select.sampleOffset();
    if (select_sample_size)
    {
        relative_sample_size.assign(
            select_sample_size->as<ASTSampleRatio &>().ratio.numerator,
            select_sample_size->as<ASTSampleRatio &>().ratio.denominator);
        if (relative_sample_size < 0)
            throw Exception("Negative sample size", ErrorCodes::ARGUMENT_OUT_OF_BOUND);
        relative_sample_offset = 0;
        if (select_sample_offset)
            relative_sample_offset.assign(
                select_sample_offset->as<ASTSampleRatio &>().ratio.numerator,
                select_sample_offset->as<ASTSampleRatio &>().ratio.denominator);
        if (relative_sample_offset < 0)
            throw Exception("Negative sample offset", ErrorCodes::ARGUMENT_OUT_OF_BOUND);
        
        size_t approx_total_rows = 0;
        if (relative_sample_size > 1 || relative_sample_offset > 1)
            approx_total_rows = getApproximateTotalRowsToRead(parts, metadata_snapshot, key_condition, settings);