[Tarantool-patches] [PATCH v4 6/6] sql: support column addition
Roman Khabibov
roman.habibov at tarantool.org
Mon Oct 5 00:44:24 MSK 2020
> On Oct 4, 2020, at 16:45, Vladislav Shpilevoy <v.shpilevoy at tarantool.org> wrote:
>
> Thanks for the patch!
>
>> * !IMPORTANT! Please follow instructions at start of the file
>> diff --git a/src/box/sql/build.c b/src/box/sql/build.c
>> index d1d240315..677099b48 100644
>> --- a/src/box/sql/build.c
>> +++ b/src/box/sql/build.c
>> @@ -1921,29 +2110,42 @@ sql_create_foreign_key(struct Parse *parse_context)
>> - if (!is_alter) {
>> + if (!is_alter_add_constr) {
>> if (create_def->name.n == 0) {
>> - constraint_name =
>> - sqlMPrintf(db, "fk_unnamed_%s_%d",
>> - space->def->name,
>> - ++parse_context->fkeys_def.count);
>> + uint32_t idx = ++parse_context->fkeys_def.count;
>> + /*
>> + * If it is <ALTER TABLE ADD COLUMN> we
>> + * should count the existing FK
>> + * constraints in the space and form a
>> + * name based on this.
>> + */
>> + if (table_def->new_space == NULL) {
>> + struct space *original_space =
>> + space_by_name(space->def->name);
>> + assert(original_space != NULL);
>> + struct rlist *child_fk =
>> + &original_space->child_fk_constraint;
>> + struct fk_constraint *fk;
>> + rlist_foreach_entry(fk, child_fk,
>> + in_child_space)
>> + idx++;
>> + }
>> + constraint_name = sqlMPrintf(db, "fk_unnamed_%s_%d",
>> + space->def->name, idx);
>
> idx is uint32_t, but the format is %d, which is int.
Fixed in the previous commit.
>> } else {
>> constraint_name =
>> sql_name_from_token(db, &create_def->name);
More information about the Tarantool-patches
mailing list