← Back to team overview

maria-developers team mailing list archive

Re: a2520676ba1: MDEV-16249 CHECKSUM TABLE for a spider table is not parallel and saves all data in memory in the spider head by default

 

Hi, Kentoku!

On Jun 05, Kentoku wrote:
> revision-id: a2520676ba1 (mariadb-10.4.5-10-ga2520676ba1)
> parent(s): 31fe70290c5
> author: Kentoku <kentokushiba@xxxxxxxxx>
> committer: Kentoku <kentokushiba@xxxxxxxxx>
> timestamp: 2019-05-23 14:36:18 +0900
> message:
> 
> MDEV-16249 CHECKSUM TABLE for a spider table is not parallel and saves all data in memory in the spider head by default

please remember to add an empty line after the first line in the commit
comment, see https://git-scm.com/docs/git-commit#_discussion

> add checksum_null for setting null value of checksum
> 
> diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
> index 4e7fccca3af..e47da94ab20 100644
> --- a/sql/ha_partition.cc
> +++ b/sql/ha_partition.cc
> @@ -8213,7 +8214,11 @@ int ha_partition::info(uint flag)
>        stats.delete_length+= file->stats.delete_length;
>        if (file->stats.check_time > stats.check_time)
>          stats.check_time= file->stats.check_time;
> -      stats.checksum+= file->stats.checksum;
> +      if (!file->stats.checksum_null)
> +      {
> +        stats.checksum+= file->stats.checksum;
> +        stats.checksum_null= FALSE;
> +      }

I'm not sure about it. When a checksum can be NULL?

I mean, normally, if you do A+B+C and one of the values is NULL, then
the whole sum is NULL. But here you simply skip NULLs, like in aggregate
SUM() function.

To understand what semantics works better in this case, I need to
understand when a checksum can be NULL in spider.

>      }
>      if (stats.records && stats.records < 2 &&
>          !(m_file[0]->ha_table_flags() & HA_STATS_RECORDS_IS_EXACT))

All other server changes look good, thanks.

Regards,
Sergei
Chief Architect MariaDB
and security@xxxxxxxxxxx


Follow ups