Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
2f8ed168
Commit
2f8ed168
authored
Nov 17, 2006
by
msvensson@neptunus.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal:/home/bk/mysql-5.1-new-maint
into neptunus.(none):/home/msvensson/mysql/mysql-5.1-new-maint
parents
c47d3fab
df968abe
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
57 additions
and
23 deletions
+57
-23
mysql-test/r/alter_table.result
mysql-test/r/alter_table.result
+11
-0
mysql-test/t/alter_table.test
mysql-test/t/alter_table.test
+18
-0
sql/sql_table.cc
sql/sql_table.cc
+28
-23
No files found.
mysql-test/r/alter_table.result
View file @
2f8ed168
...
@@ -556,6 +556,17 @@ ERROR 3D000: No database selected
...
@@ -556,6 +556,17 @@ ERROR 3D000: No database selected
alter table test.t1 rename test.t1;
alter table test.t1 rename test.t1;
use test;
use test;
drop table t1;
drop table t1;
DROP TABLE IF EXISTS bug24219;
DROP TABLE IF EXISTS bug24219_2;
CREATE TABLE bug24219 (a INT, INDEX(a));
SHOW INDEX FROM bug24219;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
bug24219 1 a 1 a A NULL NULL NULL YES BTREE
ALTER TABLE bug24219 RENAME TO bug24219_2, DISABLE KEYS;
SHOW INDEX FROM bug24219_2;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
bug24219_2 1 a 1 a A NULL NULL NULL YES BTREE disabled
DROP TABLE bug24219_2;
create table t1 (mycol int(10) not null);
create table t1 (mycol int(10) not null);
alter table t1 alter column mycol set default 0;
alter table t1 alter column mycol set default 0;
desc t1;
desc t1;
...
...
mysql-test/t/alter_table.test
View file @
2f8ed168
...
@@ -402,6 +402,24 @@ alter table test.t1 rename test.t1;
...
@@ -402,6 +402,24 @@ alter table test.t1 rename test.t1;
use
test
;
use
test
;
drop
table
t1
;
drop
table
t1
;
#
# Bug#24219 - ALTER TABLE ... RENAME TO ... , DISABLE KEYS leads to crash
#
--
disable_warnings
DROP
TABLE
IF
EXISTS
bug24219
;
DROP
TABLE
IF
EXISTS
bug24219_2
;
--
enable_warnings
CREATE
TABLE
bug24219
(
a
INT
,
INDEX
(
a
));
SHOW
INDEX
FROM
bug24219
;
ALTER
TABLE
bug24219
RENAME
TO
bug24219_2
,
DISABLE
KEYS
;
SHOW
INDEX
FROM
bug24219_2
;
DROP
TABLE
bug24219_2
;
# End of 4.1 tests
# End of 4.1 tests
#
#
...
...
sql/sql_table.cc
View file @
2f8ed168
...
@@ -5443,13 +5443,35 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
...
@@ -5443,13 +5443,35 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
if
(
!
(
alter_info
->
flags
&
~
(
ALTER_RENAME
|
ALTER_KEYS_ONOFF
))
&&
if
(
!
(
alter_info
->
flags
&
~
(
ALTER_RENAME
|
ALTER_KEYS_ONOFF
))
&&
!
table
->
s
->
tmp_table
)
// no need to touch frm
!
table
->
s
->
tmp_table
)
// no need to touch frm
{
{
error
=
0
;
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
if
(
new_name
!=
table_name
||
new_db
!=
db
)
switch
(
alter_info
->
keys_onoff
)
{
case
LEAVE_AS_IS
:
error
=
0
;
break
;
case
ENABLE
:
wait_while_table_is_used
(
thd
,
table
,
HA_EXTRA_FORCE_REOPEN
);
error
=
table
->
file
->
enable_indexes
(
HA_KEY_SWITCH_NONUNIQ_SAVE
);
/* COND_refresh will be signaled in close_thread_tables() */
break
;
case
DISABLE
:
wait_while_table_is_used
(
thd
,
table
,
HA_EXTRA_FORCE_REOPEN
);
error
=
table
->
file
->
disable_indexes
(
HA_KEY_SWITCH_NONUNIQ_SAVE
);
/* COND_refresh will be signaled in close_thread_tables() */
break
;
}
if
(
error
==
HA_ERR_WRONG_COMMAND
)
{
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
ER_ILLEGAL_HA
,
ER
(
ER_ILLEGAL_HA
),
table
->
alias
);
error
=
0
;
}
if
(
!
error
&&
(
new_name
!=
table_name
||
new_db
!=
db
))
{
{
thd
->
proc_info
=
"rename"
;
thd
->
proc_info
=
"rename"
;
/* Then do a 'simple' rename of the table */
/* Then do a 'simple' rename of the table */
error
=
0
;
if
(
!
access
(
new_name_buff
,
F_OK
))
if
(
!
access
(
new_name_buff
,
F_OK
))
{
{
my_error
(
ER_TABLE_EXISTS_ERROR
,
MYF
(
0
),
new_name
);
my_error
(
ER_TABLE_EXISTS_ERROR
,
MYF
(
0
),
new_name
);
...
@@ -5472,31 +5494,14 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
...
@@ -5472,31 +5494,14 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
}
}
}
}
if
(
!
error
)
{
switch
(
alter_info
->
keys_onoff
)
{
case
LEAVE_AS_IS
:
break
;
case
ENABLE
:
wait_while_table_is_used
(
thd
,
table
,
HA_EXTRA_FORCE_REOPEN
);
error
=
table
->
file
->
enable_indexes
(
HA_KEY_SWITCH_NONUNIQ_SAVE
);
/* COND_refresh will be signaled in close_thread_tables() */
break
;
case
DISABLE
:
wait_while_table_is_used
(
thd
,
table
,
HA_EXTRA_FORCE_REOPEN
);
error
=
table
->
file
->
disable_indexes
(
HA_KEY_SWITCH_NONUNIQ_SAVE
);
/* COND_refresh will be signaled in close_thread_tables() */
break
;
}
}
if
(
error
==
HA_ERR_WRONG_COMMAND
)
if
(
error
==
HA_ERR_WRONG_COMMAND
)
{
{
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
ER_ILLEGAL_HA
,
ER
(
ER_ILLEGAL_HA
),
ER_ILLEGAL_HA
,
ER
(
ER_ILLEGAL_HA
),
table
->
alias
);
table
->
alias
);
error
=
0
;
error
=
0
;
}
}
if
(
!
error
)
if
(
!
error
)
{
{
write_bin_log
(
thd
,
TRUE
,
thd
->
query
,
thd
->
query_length
);
write_bin_log
(
thd
,
TRUE
,
thd
->
query
,
thd
->
query_length
);
...
@@ -5509,7 +5514,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
...
@@ -5509,7 +5514,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
error
=
-
1
;
error
=
-
1
;
}
}
VOID
(
pthread_mutex_unlock
(
&
LOCK_open
));
VOID
(
pthread_mutex_unlock
(
&
LOCK_open
));
table_list
->
table
=
0
;
// For query cache
table_list
->
table
=
NULL
;
// For query cache
query_cache_invalidate3
(
thd
,
table_list
,
0
);
query_cache_invalidate3
(
thd
,
table_list
,
0
);
DBUG_RETURN
(
error
);
DBUG_RETURN
(
error
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment