maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #11616
Re: c8248ca9a22: MDEV-17376 Server fails to set ADD_PK_INDEX, DROP_PK_INDEX if unique index nominated as PK
Hi, Thiru!
Thanks!
This is, indeed, much easier to follow. Nicely done.
Ok to push.
On Jan 23, Thirunarayanan Balathandayuthapani wrote:
> revision-id: c8248ca9a22 (mariadb-10.0.37-45-gc8248ca9a22)
> parent(s): 12f362c3338
> author: Thirunarayanan Balathandayuthapani <thiru@xxxxxxxxxxx>
> committer: Thirunarayanan Balathandayuthapani <thiru@xxxxxxxxxxx>
> timestamp: 2019-01-18 12:01:18 +0530
> message:
>
> MDEV-17376 Server fails to set ADD_PK_INDEX, DROP_PK_INDEX if unique index nominated as PK
>
> diff --git a/sql/sql_table.cc b/sql/sql_table.cc
> index 2302026b18b..645746a7ab0 100644
> --- a/sql/sql_table.cc
> +++ b/sql/sql_table.cc
> @@ -6513,6 +6519,17 @@ static bool fill_alter_inplace_info(THD *thd,
> new_field->field->field_index != key_part->fieldnr - 1)
> goto index_changed;
> }
> +
> + /*
> + Rebuild the index if following condition get satisfied:
> +
> + (i) Old table doesn't have primary key, new table has it and vice-versa
> + (ii) Primary key changed to another existing index
> + */
> + if ((new_key == new_pk) !=
> + (table_key == &table->key_info[table->s->primary_key]))
I would suggest to rewrite the condition as
table_key - table->key_info == table->s->primary_key
it means the same thing, but doesn't confuse the reader with a question
"what's with a buffer overrun if table->s->primary_key == MAX_KEY?"
> + goto index_changed;
> +
> continue;
>
> index_changed:
>
Regards,
Sergei
Chief Architect MariaDB
and security@xxxxxxxxxxx