← Back to team overview

maria-developers team mailing list archive

Re: review of MDEV-16101 ADD PARTITION on table partitioned by list does not work …

 

Hi Holyfoot,

Your fix creates more lists, all of them containing one element, but it
does only one reorganization.  My fix does a reorganization whenever a 33rd
element is processed but creates less lists.  I agree that reducing the
number of reorganizations to one is a better way to fix the problem.  So I
will use your fix.

Thanks,
Jacob

Jacob B. Mathew
Spider and Server Developer
MariaDB Corporation
+1 408 655 8999  (mobile)
jacob.b.mathew    (Skype)
jacob.mathew@xxxxxxxxxxx


On Sun, May 13, 2018 at 2:36 PM, Alexey Botchkov <holyfoot@xxxxxxxxxxx>
wrote:

> Hi, Jacob.
>
> Your fix:
> https://github.com/MariaDB/server/commit/85bbea8dbb9c01defa993e44a5b16c
> 43ef851fbd
>
> I don't like the way your fix work.
> So after we get the 32-th item we do the reorganize_into_single_
> field_col_val()
> trick that turns one element with 32 values into 32 elements with a single
> value.
> Then as we get 33-th element, we again put it into that first element, and
> do so for
> the next 31 element then call the reorganize_ again.
>
> I think we should just keep the 'one-value' list after the 'reorganize_'
> So my fix would be like this:
> --- a/sql/partition_info.cc
> +++ b/sql/partition_info.cc
> @@ -1996,9 +1996,11 @@ part_column_list_val *partition_info::add_column_value(THD
> *thd)
>        into the structure used for 1 column. After this we call
>        ourselves recursively which should always succeed.
>      */
> +    num_columns= curr_list_object;
>      if (!reorganize_into_single_field_col_val(thd))
>      {
> -      DBUG_RETURN(add_column_value(thd));
> +      if (!init_column_part(thd))
> +        DBUG_RETURN(add_column_value(thd));
>      }
>
>
> Best regards.
> HF
>
>