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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
89b10826
Commit
89b10826
authored
Mar 16, 2006
by
mikael@zim.(none)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
BUG#17772
A crash after ALTER TABLE t1 RENAME ...
parent
6c37cfee
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
41 additions
and
10 deletions
+41
-10
mysql-test/r/partition.result
mysql-test/r/partition.result
+11
-0
mysql-test/t/partition.test
mysql-test/t/partition.test
+17
-0
sql/sql_lex.h
sql/sql_lex.h
+1
-0
sql/sql_parse.cc
sql/sql_parse.cc
+2
-2
sql/sql_partition.cc
sql/sql_partition.cc
+3
-3
sql/sql_yacc.yy
sql/sql_yacc.yy
+7
-5
No files found.
mysql-test/r/partition.result
View file @
89b10826
...
...
@@ -546,4 +546,15 @@ t1 CREATE TABLE `t1` (
`b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p1 VALUES IN (1) ENGINE = MyISAM, PARTITION p2 VALUES IN (2) ENGINE = MyISAM)
drop table t1;
create table t1 (a int unsigned not null auto_increment primary key)
partition by key(a);
alter table t1 rename t2, add c char(10), comment "no comment";
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(10) unsigned NOT NULL AUTO_INCREMENT,
`c` char(10) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='no comment' PARTITION BY KEY (a)
drop table t2;
End of 5.1 tests
mysql-test/t/partition.test
View file @
89b10826
...
...
@@ -697,4 +697,21 @@ alter table t1 add primary key (b);
show
create
table
t1
;
drop
table
t1
;
############################################
#
# Author: Mikael Ronstrom
# Date: 2006-03-01
# Purpose
# Bug 17772: Crash at ALTER TABLE with rename
# and add column + comment on
# partitioned table
#
############################################
create
table
t1
(
a
int
unsigned
not
null
auto_increment
primary
key
)
partition
by
key
(
a
);
alter
table
t1
rename
t2
,
add
c
char
(
10
),
comment
"no comment"
;
show
create
table
t2
;
drop
table
t2
;
--
echo
End
of
5.1
tests
sql/sql_lex.h
View file @
89b10826
...
...
@@ -761,6 +761,7 @@ typedef struct st_lex
const
uchar
*
tok_start_prev
,
*
tok_end_prev
;
char
*
length
,
*
dec
,
*
change
,
*
name
;
Table_ident
*
like_name
;
char
*
help_arg
;
char
*
backup_dir
;
/* For RESTORE/BACKUP */
char
*
to_log
;
/* For PURGE MASTER LOGS TO */
...
...
sql/sql_parse.cc
View file @
89b10826
...
...
@@ -2897,9 +2897,9 @@ mysql_execute_command(THD *thd)
else
{
/* regular create */
if
(
lex
->
name
)
if
(
lex
->
like_
name
)
res
=
mysql_create_like_table
(
thd
,
create_table
,
&
lex
->
create_info
,
(
Table_ident
*
)
lex
->
name
);
lex
->
like_
name
);
else
{
res
=
mysql_create_table
(
thd
,
create_table
->
db
,
...
...
sql/sql_partition.cc
View file @
89b10826
...
...
@@ -3741,14 +3741,14 @@ bool mysql_unpack_partition(THD *thd, const uchar *part_buf,
ha_legacy_type
(
default_db_type
)));
if
(
is_create_table_ind
)
{
if
(
old_lex
->
name
)
if
(
old_lex
->
like_
name
)
{
/*
This code is executed when we do a CREATE TABLE t1 LIKE t2
old_lex->name contains the t2 and the table we are opening has
old_lex->
like_
name contains the t2 and the table we are opening has
name t1.
*/
Table_ident
*
table_ident
=
(
Table_ident
*
)
old_lex
->
name
;
Table_ident
*
table_ident
=
old_lex
->
like_
name
;
char
*
src_db
=
table_ident
->
db
.
str
?
table_ident
->
db
.
str
:
thd
->
db
;
char
*
src_table
=
table_ident
->
table
.
str
;
char
buf
[
FN_REFLEN
];
...
...
sql/sql_yacc.yy
View file @
89b10826
...
...
@@ -1214,7 +1214,8 @@ create:
lex->create_info.options=$2 | $4;
lex->create_info.db_type= lex->thd->variables.table_type;
lex->create_info.default_table_charset= NULL;
lex->name=0;
lex->name= 0;
lex->like_name= 0;
}
create2
{ Lex->current_select= &Lex->select_lex; }
...
...
@@ -3272,13 +3273,13 @@ create2:
| LIKE table_ident
{
LEX *lex=Lex;
if (!(lex->
name= (char *)
$2))
if (!(lex->
like_name=
$2))
YYABORT;
}
| '(' LIKE table_ident ')'
{
LEX *lex=Lex;
if (!(lex->
name= (char *)
$3))
if (!(lex->
like_name=
$3))
YYABORT;
}
;
...
...
@@ -4712,8 +4713,8 @@ alter:
{
THD *thd= YYTHD;
LEX *lex= thd->lex;
lex->name= 0;
lex->sql_command= SQLCOM_ALTER_TABLE;
lex->name= 0;
lex->duplicates= DUP_ERROR;
if (!lex->select_lex.add_table_to_list(thd, $4, NULL,
TL_OPTION_UPDATING))
...
...
@@ -4722,7 +4723,8 @@ alter:
lex->key_list.empty();
lex->col_list.empty();
lex->select_lex.init_order();
lex->select_lex.db=lex->name=0;
lex->select_lex.db=lex->name= 0;
lex->like_name= 0;
bzero((char*) &lex->create_info,sizeof(lex->create_info));
lex->create_info.db_type= (handlerton*) &default_hton;
lex->create_info.default_table_charset= NULL;
...
...
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