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` (
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
) 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), 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;
ERROR HY000: Can't create table './test/t2.frm' (errno: 150)
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
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
),
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
--
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
;
...
...
sql/sql_class.cc
View file @
9f171e77
...
...
@@ -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)
NOTES:
...
...
sql/sql_table.cc
View file @
9f171e77
...
...
@@ -684,11 +684,13 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
while
((
key2
=
key_iterator2
++
)
!=
key
)
{
/*
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
do not need the generated shorter key.
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
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 */
/* mark that the generated key should be ignored */
...
...
@@ -698,17 +700,9 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
key
->
name
=
ignore_key
;
else
{
/*
Remove the previous, generated key if it has not yet been
removed. Note that if we have several identical generated keys,
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
)
--
;
}
key2
->
name
=
ignore_key
;
key_parts
-=
key2
->
columns
.
elements
;
(
*
key_count
)
--
;
}
break
;
}
...
...
tests/client_test.c
View file @
9f171e77
...
...
@@ -9614,7 +9614,6 @@ union distinct \
select sum(a) + 200, 1 from t1 \
group by b "
);
check_stmt
(
stmt
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
...
...
@@ -9624,14 +9623,14 @@ union distinct \
select sum(a) + 200, 1 from t1 \
group by b "
);
check_stmt
(
stmt
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
stmt
=
mysql_simple_prepare
(
mysql
,
"select sum(a) + 200, ? from t1 \
union distinct \
select sum(a) + 200, 1 from t1 \
group by b "
);
check_stmt
(
stmt
);
mysql_stmt_close
(
stmt
);
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