diff options
author | unknown <andrey@example.com> | 2006-11-30 18:36:15 +0100 |
---|---|---|
committer | unknown <andrey@example.com> | 2006-11-30 18:36:15 +0100 |
commit | c429ca8498cbd8f6402403c5f8396c49f60c1d70 (patch) | |
tree | 33d4c26d52543236b8f6041a2ae62d4a25d5bf89 /mysql-test/t/alter_table.test | |
parent | 66e49e3763c90cf169af6f8710786be6176ee5b6 (diff) | |
parent | a9173ec999a04f8dc7aa4e6e373d776c6ddd3f0f (diff) | |
download | mariadb-git-c429ca8498cbd8f6402403c5f8396c49f60c1d70.tar.gz |
Merge example.com:/work/bug24395-v2/my41
into example.com:/work/bug24395-v2/my50
fix for bug#24395 merged into 5.0
mysql-test/t/alter_table.test:
Auto merged
myisam/mi_open.c:
merge into 5.0 by using macroses available in 5.0
mysql-test/r/alter_table.result:
manual merge
sql/sql_table.cc:
manual merge
Added else clause of
if (new_table && !new_table->file->is_view)
This else clauses does keys management on the live table, thus we have
to force other threads to reopen the table.
Diffstat (limited to 'mysql-test/t/alter_table.test')
-rw-r--r-- | mysql-test/t/alter_table.test | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index 7c23a5ca410..233726ce923 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -372,6 +372,103 @@ alter table t1 add unique ( a(1) ); drop table t1; # +# Bug #24395: ALTER TABLE DISABLE KEYS doesn't work when modifying the table +# +# This problem happens if the data change is compatible. +# Changing to the same type is compatible for example. +# +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int, key(a)); +show indexes from t1; +--echo "this used not to disable the index" +alter table t1 modify a int, disable keys; +show indexes from t1; + +alter table t1 enable keys; +show indexes from t1; + +alter table t1 modify a bigint, disable keys; +show indexes from t1; + +alter table t1 enable keys; +show indexes from t1; + +alter table t1 add b char(10), disable keys; +show indexes from t1; + +alter table t1 add c decimal(10,2), enable keys; +show indexes from t1; + +--echo "this however did" +alter table t1 disable keys; +show indexes from t1; + +desc t1; + +alter table t1 add d decimal(15,5); +--echo "The key should still be disabled" +show indexes from t1; + +drop table t1; + +--echo "Now will test with one unique index" +create table t1(a int, b char(10), unique(a)); +show indexes from t1; +alter table t1 disable keys; +show indexes from t1; +alter table t1 enable keys; + +--echo "If no copy on noop change, this won't touch the data file" +--echo "Unique index, no change" +alter table t1 modify a int, disable keys; +show indexes from t1; + +--echo "Change the type implying data copy" +--echo "Unique index, no change" +alter table t1 modify a bigint, disable keys; +show indexes from t1; + +alter table t1 modify a bigint; +show indexes from t1; + +alter table t1 modify a int; +show indexes from t1; + +drop table t1; + +--echo "Now will test with one unique and one non-unique index" +create table t1(a int, b char(10), unique(a), key(b)); +show indexes from t1; +alter table t1 disable keys; +show indexes from t1; +alter table t1 enable keys; + + +--echo "If no copy on noop change, this won't touch the data file" +--echo "The non-unique index will be disabled" +alter table t1 modify a int, disable keys; +show indexes from t1; +alter table t1 enable keys; +show indexes from t1; + +--echo "Change the type implying data copy" +--echo "The non-unique index will be disabled" +alter table t1 modify a bigint, disable keys; +show indexes from t1; + +--echo "Change again the type, but leave the indexes as_is" +alter table t1 modify a int; +show indexes from t1; +--echo "Try the same. When data is no copied on similar tables, this is noop" +alter table t1 modify a int; +show indexes from t1; + +drop table t1; + + +# # Bug#11493 - Alter table rename to default database does not work without # db name qualifying # |