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
9f171e77
Commit
9f171e77
authored
May 15, 2004
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1
parents
a785d16d
e0a4b512
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
53 additions
and
19 deletions
+53
-19
mysql-test/r/innodb.result
mysql-test/r/innodb.result
+31
-0
mysql-test/t/innodb.test
mysql-test/t/innodb.test
+10
-0
sql/sql_class.cc
sql/sql_class.cc
+1
-1
sql/sql_table.cc
sql/sql_table.cc
+9
-15
tests/client_test.c
tests/client_test.c
+2
-3
No files found.
mysql-test/r/innodb.result
View file @
9f171e77
...
@@ -1538,6 +1538,37 @@ t2 CREATE TABLE `t2` (
...
@@ -1538,6 +1538,37 @@ t2 CREATE TABLE `t2` (
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
drop table t2;
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`id` int(11) NOT NULL auto_increment,
`id2` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `id` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`id` int(11) NOT NULL auto_increment,
`id2` int(11) NOT NULL default '0',
KEY `t1_id_fk` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t2 add index id_test (id), add index id_test2 (id,id2);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`id` int(11) NOT NULL auto_increment,
`id2` int(11) NOT NULL default '0',
KEY `id_test` (`id`),
KEY `id_test2` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
ERROR HY000: Can't create table './test/t2.frm' (errno: 150)
ERROR HY000: Can't create table './test/t2.frm' (errno: 150)
drop table t1;
drop table t1;
mysql-test/t/innodb.test
View file @
9f171e77
...
@@ -1082,6 +1082,16 @@ create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),cons
...
@@ -1082,6 +1082,16 @@ create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),cons
show
create
table
t2
;
show
create
table
t2
;
drop
table
t2
;
drop
table
t2
;
create
table
t2
(
id
int
(
11
)
not
null
auto_increment
,
id2
int
(
11
)
not
null
,
constraint
t1_id_fk
foreign
key
(
id
)
references
t1
(
id
),
primary
key
(
id
),
index
(
id
,
id2
))
engine
=
innodb
;
show
create
table
t2
;
drop
table
t2
;
create
table
t2
(
id
int
(
11
)
not
null
auto_increment
,
id2
int
(
11
)
not
null
,
constraint
t1_id_fk
foreign
key
(
id
)
references
t1
(
id
))
engine
=
innodb
;
show
create
table
t2
;
alter
table
t2
add
index
id_test
(
id
),
add
index
id_test2
(
id
,
id2
);
show
create
table
t2
;
drop
table
t2
;
# Test error handling
# Test error handling
--
error
1005
--
error
1005
create
table
t2
(
id
int
(
11
)
not
null
,
id2
int
(
11
)
not
null
,
constraint
t1_id_fk
foreign
key
(
id2
,
id
)
references
t1
(
id
))
engine
=
innodb
;
create
table
t2
(
id
int
(
11
)
not
null
,
id2
int
(
11
)
not
null
,
constraint
t1_id_fk
foreign
key
(
id2
,
id
)
references
t1
(
id
))
engine
=
innodb
;
...
...
sql/sql_class.cc
View file @
9f171e77
...
@@ -86,7 +86,7 @@ bool key_part_spec::operator==(const key_part_spec& other) const
...
@@ -86,7 +86,7 @@ bool key_part_spec::operator==(const key_part_spec& other) const
/*
/*
Test if a foreign key is a prefix of the given key
Test if a foreign key
(= generated key)
is a prefix of the given key
(ignoring key name, key type and order of columns)
(ignoring key name, key type and order of columns)
NOTES:
NOTES:
...
...
sql/sql_table.cc
View file @
9f171e77
...
@@ -684,11 +684,13 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
...
@@ -684,11 +684,13 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
while
((
key2
=
key_iterator2
++
)
!=
key
)
while
((
key2
=
key_iterator2
++
)
!=
key
)
{
{
/*
/*
foreign_key_prefix(key, key2) returns 0 if key or key2, or both, is
foreign_key_prefix(key, key2) returns 0 if key or key2, or both, is
'generated', and a generated key is a prefix of the other key. Then we
'generated', and a generated key is a prefix of the other key.
do not need the generated shorter key.
Then we
do not need the generated shorter key.
*/
*/
if
((
key2
->
type
!=
Key
::
FOREIGN_KEY
&&
!
foreign_key_prefix
(
key
,
key2
)))
if
((
key2
->
type
!=
Key
::
FOREIGN_KEY
&&
key2
->
name
!=
ignore_key
&&
!
foreign_key_prefix
(
key
,
key2
)))
{
{
/* TO DO: issue warning message */
/* TO DO: issue warning message */
/* mark that the generated key should be ignored */
/* mark that the generated key should be ignored */
...
@@ -698,17 +700,9 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
...
@@ -698,17 +700,9 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
key
->
name
=
ignore_key
;
key
->
name
=
ignore_key
;
else
else
{
{
/*
key2
->
name
=
ignore_key
;
Remove the previous, generated key if it has not yet been
key_parts
-=
key2
->
columns
.
elements
;
removed. Note that if we have several identical generated keys,
(
*
key_count
)
--
;
the last one will remain and others get removed here.
*/
if
(
key2
->
name
!=
ignore_key
)
{
key2
->
name
=
ignore_key
;
key_parts
-=
key2
->
columns
.
elements
;
(
*
key_count
)
--
;
}
}
}
break
;
break
;
}
}
...
...
tests/client_test.c
View file @
9f171e77
...
@@ -9614,7 +9614,6 @@ union distinct \
...
@@ -9614,7 +9614,6 @@ union distinct \
select sum(a) + 200, 1 from t1 \
select sum(a) + 200, 1 from t1 \
group by b "
);
group by b "
);
check_stmt
(
stmt
);
check_stmt
(
stmt
);
mysql_stmt_close
(
stmt
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
stmt
=
mysql_simple_prepare
(
mysql
,
...
@@ -9624,14 +9623,14 @@ union distinct \
...
@@ -9624,14 +9623,14 @@ union distinct \
select sum(a) + 200, 1 from t1 \
select sum(a) + 200, 1 from t1 \
group by b "
);
group by b "
);
check_stmt
(
stmt
);
check_stmt
(
stmt
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
stmt
=
mysql_simple_prepare
(
mysql
,
"select sum(a) + 200, ? from t1 \
"select sum(a) + 200, ? from t1 \
union distinct \
union distinct \
select sum(a) + 200, 1 from t1 \
select sum(a) + 200, 1 from t1 \
group by b "
);
group by b "
);
check_stmt
(
stmt
);
check_stmt
(
stmt
);
mysql_stmt_close
(
stmt
);
mysql_stmt_close
(
stmt
);
rc
=
mysql_query
(
mysql
,
"DROP TABLE t1"
);
rc
=
mysql_query
(
mysql
,
"DROP TABLE t1"
);
...
...
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