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
1531ab87
Commit
1531ab87
authored
Jun 07, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge heikki@bk-internal.mysql.com:/home/bk/mysql-5.0
into hundin.mysql.fi:/home/heikki/mysql-5.0
parents
c7787f8a
e70af5be
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
25 additions
and
14 deletions
+25
-14
mysql-test/r/innodb.result
mysql-test/r/innodb.result
+6
-6
mysql-test/t/innodb.test
mysql-test/t/innodb.test
+2
-8
sql/ha_innodb.cc
sql/ha_innodb.cc
+17
-0
No files found.
mysql-test/r/innodb.result
View file @
1531ab87
...
@@ -2430,32 +2430,32 @@ drop table t1;
...
@@ -2430,32 +2430,32 @@ drop table t1;
CREATE TABLE t1 ( `a` int(11) NOT NULL auto_increment, `b` int(11) default NULL,PRIMARY KEY (`a`),UNIQUE KEY `b` (`b`)) ENGINE=innodb;
CREATE TABLE t1 ( `a` int(11) NOT NULL auto_increment, `b` int(11) default NULL,PRIMARY KEY (`a`),UNIQUE KEY `b` (`b`)) ENGINE=innodb;
insert into t1 (b) values (1);
insert into t1 (b) values (1);
replace into t1 (b) values (2), (1), (3);
replace into t1 (b) values (2), (1), (3);
ERROR 23000: Duplicate entry '3' for key 1
select * from t1;
select * from t1;
a b
a b
1 1
3 1
2 2
4 3
truncate table t1;
truncate table t1;
insert into t1 (b) values (1);
insert into t1 (b) values (1);
replace into t1 (b) values (2);
replace into t1 (b) values (2);
replace into t1 (b) values (1);
replace into t1 (b) values (1);
replace into t1 (b) values (3);
replace into t1 (b) values (3);
ERROR 23000: Duplicate entry '3' for key 1
select * from t1;
select * from t1;
a b
a b
3 1
3 1
2 2
2 2
4 3
drop table t1;
drop table t1;
create table t1 (rowid int not null auto_increment, val int not null,primary
create table t1 (rowid int not null auto_increment, val int not null,primary
key (rowid), unique(val)) engine=innodb;
key (rowid), unique(val)) engine=innodb;
replace into t1 (val) values ('1'),('2');
replace into t1 (val) values ('1'),('2');
replace into t1 (val) values ('1'),('2');
replace into t1 (val) values ('1'),('2');
ERROR 23000: Duplicate entry '3' for key 1
insert into t1 (val) values ('1'),('2');
insert into t1 (val) values ('1'),('2');
ERROR 23000: Duplicate entry '1' for key 2
ERROR 23000: Duplicate entry '1' for key 2
select * from t1;
select * from t1;
rowid val
rowid val
1
1
3
1
2
2
4
2
drop table t1;
drop table t1;
create table t1 (a int not null auto_increment primary key, val int) engine=InnoDB;
create table t1 (a int not null auto_increment primary key, val int) engine=InnoDB;
insert into t1 (val) values (1);
insert into t1 (val) values (1);
...
...
mysql-test/t/innodb.test
View file @
1531ab87
...
@@ -1350,16 +1350,12 @@ drop table t1;
...
@@ -1350,16 +1350,12 @@ drop table t1;
CREATE
TABLE
t1
(
`a`
int
(
11
)
NOT
NULL
auto_increment
,
`b`
int
(
11
)
default
NULL
,
PRIMARY
KEY
(
`a`
),
UNIQUE
KEY
`b`
(
`b`
))
ENGINE
=
innodb
;
CREATE
TABLE
t1
(
`a`
int
(
11
)
NOT
NULL
auto_increment
,
`b`
int
(
11
)
default
NULL
,
PRIMARY
KEY
(
`a`
),
UNIQUE
KEY
`b`
(
`b`
))
ENGINE
=
innodb
;
insert
into
t1
(
b
)
values
(
1
);
insert
into
t1
(
b
)
values
(
1
);
# We shouldn't get the following error
--
error
1062
replace
into
t1
(
b
)
values
(
2
),
(
1
),
(
3
);
replace
into
t1
(
b
)
values
(
2
),
(
1
),
(
3
);
select
*
from
t1
;
select
*
from
t1
;
truncate
table
t1
;
truncate
table
t1
;
insert
into
t1
(
b
)
values
(
1
);
insert
into
t1
(
b
)
values
(
1
);
replace
into
t1
(
b
)
values
(
2
);
replace
into
t1
(
b
)
values
(
2
);
replace
into
t1
(
b
)
values
(
1
);
replace
into
t1
(
b
)
values
(
1
);
# We shouldn't get the following error
--
error
1062
replace
into
t1
(
b
)
values
(
3
);
replace
into
t1
(
b
)
values
(
3
);
select
*
from
t1
;
select
*
from
t1
;
drop
table
t1
;
drop
table
t1
;
...
@@ -1367,8 +1363,6 @@ drop table t1;
...
@@ -1367,8 +1363,6 @@ drop table t1;
create
table
t1
(
rowid
int
not
null
auto_increment
,
val
int
not
null
,
primary
create
table
t1
(
rowid
int
not
null
auto_increment
,
val
int
not
null
,
primary
key
(
rowid
),
unique
(
val
))
engine
=
innodb
;
key
(
rowid
),
unique
(
val
))
engine
=
innodb
;
replace
into
t1
(
val
)
values
(
'1'
),(
'2'
);
replace
into
t1
(
val
)
values
(
'1'
),(
'2'
);
# We shouldn't get the following error
--
error
1062
replace
into
t1
(
val
)
values
(
'1'
),(
'2'
);
replace
into
t1
(
val
)
values
(
'1'
),(
'2'
);
--
error
1062
--
error
1062
insert
into
t1
(
val
)
values
(
'1'
),(
'2'
);
insert
into
t1
(
val
)
values
(
'1'
),(
'2'
);
...
@@ -1377,13 +1371,13 @@ drop table t1;
...
@@ -1377,13 +1371,13 @@ drop table t1;
#
#
# Test that update
changes
internal auto-increment value
# Test that update
does not change
internal auto-increment value
#
#
create
table
t1
(
a
int
not
null
auto_increment
primary
key
,
val
int
)
engine
=
InnoDB
;
create
table
t1
(
a
int
not
null
auto_increment
primary
key
,
val
int
)
engine
=
InnoDB
;
insert
into
t1
(
val
)
values
(
1
);
insert
into
t1
(
val
)
values
(
1
);
update
t1
set
a
=
2
where
a
=
1
;
update
t1
set
a
=
2
where
a
=
1
;
# We should
n't get the following erro
r
# We should
get the following error because InnoDB does not update the counte
r
--
error
1062
--
error
1062
insert
into
t1
(
val
)
values
(
1
);
insert
into
t1
(
val
)
values
(
1
);
select
*
from
t1
;
select
*
from
t1
;
...
...
sql/ha_innodb.cc
View file @
1531ab87
...
@@ -3221,6 +3221,23 @@ ha_innobase::write_row(
...
@@ -3221,6 +3221,23 @@ ha_innobase::write_row(
}
}
}
}
/* A REPLACE command and LOAD DATA INFILE REPLACE handle a duplicate
key error themselves, and we must update the autoinc counter if we are
performing those statements. */
if
(
error
==
DB_DUPLICATE_KEY
&&
auto_inc_used
&&
(
user_thd
->
lex
->
sql_command
==
SQLCOM_REPLACE
||
user_thd
->
lex
->
sql_command
==
SQLCOM_REPLACE_SELECT
||
(
user_thd
->
lex
->
sql_command
==
SQLCOM_LOAD
&&
user_thd
->
lex
->
duplicates
==
DUP_REPLACE
)))
{
auto_inc
=
table
->
next_number_field
->
val_int
();
if
(
auto_inc
!=
0
)
{
dict_table_autoinc_update
(
prebuilt
->
table
,
auto_inc
);
}
}
innodb_srv_conc_exit_innodb
(
prebuilt
->
trx
);
innodb_srv_conc_exit_innodb
(
prebuilt
->
trx
);
error
=
convert_error_code_to_mysql
(
error
,
user_thd
);
error
=
convert_error_code_to_mysql
(
error
,
user_thd
);
...
...
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