Skip to content

Commit

Permalink
more tests, moving code around
Browse files Browse the repository at this point in the history
  • Loading branch information
vuvova committed May 3, 2015
1 parent 2bb0e71 commit 532de70
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 18 deletions.
2 changes: 2 additions & 0 deletions mysql-test/r/alter_table.result
Original file line number Diff line number Diff line change
Expand Up @@ -1693,8 +1693,10 @@ INSERT INTO tm1 VALUES (1,1,1), (2,2,2);
INSERT INTO tm2 VALUES (1,1,1), (2,2,2);
ALTER TABLE ti1;
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE tm1;
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE ti1 ADD COLUMN d VARCHAR(200);
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
Expand Down
3 changes: 3 additions & 0 deletions mysql-test/r/alter_table_online.result
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCL
alter online table t1 rename to t2;
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
alter online table t1 algorithm=INPLACE, lock=NONE;
alter online table t1;
alter table t1 algorithm=INPLACE;
alter table t1 lock=NONE;
drop table t1;
create temporary table t1 (a int not null primary key, b int, c varchar(80), e enum('a','b'));
insert into t1 (a) values (1),(2),(3);
Expand Down
1 change: 1 addition & 0 deletions mysql-test/r/innodb_mysql_sync.result
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,7 @@ SET DEBUG_SYNC= 'RESET';
# This should not do anything
ALTER TABLE t1;
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL rebuild';
# Check that we rebuild the table
ALTER TABLE t1 engine=innodb;
Expand Down
3 changes: 3 additions & 0 deletions mysql-test/t/alter_table_online.test
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ alter online table t1 rename to t2;
# No OPs

alter online table t1 algorithm=INPLACE, lock=NONE;
alter online table t1;
alter table t1 algorithm=INPLACE;
alter table t1 lock=NONE;

drop table t1;

Expand Down
35 changes: 17 additions & 18 deletions sql/sql_table.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8429,9 +8429,25 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
mysql_audit_alter_table(thd, table_list);

THD_STAGE_INFO(thd, stage_setup);

handle_if_exists_options(thd, table, alter_info);

/*
Look if we have to do anything at all.
ALTER can become NOOP after handling
the IF (NOT) EXISTS options.
*/
if (alter_info->flags == 0)
{
my_snprintf(alter_ctx.tmp_name, sizeof(alter_ctx.tmp_name),
ER(ER_INSERT_INFO), 0L, 0L,
thd->get_stmt_da()->current_statement_warn_count());
my_ok(thd, 0L, 0L, alter_ctx.tmp_name);
DBUG_RETURN(false);
}

if (!(alter_info->flags & ~(Alter_info::ALTER_RENAME |
Alter_info::ALTER_KEYS_ONOFF)) &&
alter_info->flags != 0 &&
alter_info->requested_algorithm !=
Alter_info::ALTER_TABLE_ALGORITHM_COPY &&
!table->s->tmp_table) // no need to touch frm
Expand All @@ -8450,23 +8466,6 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
DBUG_RETURN(res);
}

if (alter_info->flags != 0)
handle_if_exists_options(thd, table, alter_info);

/*
Look if we have to do anything at all.
Normally ALTER can become NOOP only after handling
the IF (NOT) EXISTS options.
*/
if (alter_info->flags == 0)
{
my_snprintf(alter_ctx.tmp_name, sizeof(alter_ctx.tmp_name),
ER(ER_INSERT_INFO), 0L, 0L,
thd->get_stmt_da()->current_statement_warn_count());
my_ok(thd, 0L, 0L, alter_ctx.tmp_name);
DBUG_RETURN(false);
}

/* We have to do full alter table. */

#ifdef WITH_PARTITION_STORAGE_ENGINE
Expand Down

0 comments on commit 532de70

Please sign in to comment.