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
2a3d5308
Commit
2a3d5308
authored
Jun 20, 2004
by
bell@sanja.is.com.ua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
do not clear list of changed tables on one statement rollback (Bug #4213)
parent
3cd6299b
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
5 deletions
+44
-5
mysql-test/r/innodb_cache.result
mysql-test/r/innodb_cache.result
+20
-1
mysql-test/t/innodb_cache.test
mysql-test/t/innodb_cache.test
+22
-1
sql/handler.cc
sql/handler.cc
+2
-3
No files found.
mysql-test/r/innodb_cache.result
View file @
2a3d5308
...
@@ -98,7 +98,7 @@ commit;
...
@@ -98,7 +98,7 @@ commit;
show status like "Qcache_queries_in_cache";
show status like "Qcache_queries_in_cache";
Variable_name Value
Variable_name Value
Qcache_queries_in_cache 1
Qcache_queries_in_cache 1
drop table
if exists
t1;
drop table
t3,t2,
t1;
CREATE TABLE t1 (id int(11) NOT NULL auto_increment, PRIMARY KEY (id)) TYPE=InnoDB;
CREATE TABLE t1 (id int(11) NOT NULL auto_increment, PRIMARY KEY (id)) TYPE=InnoDB;
select count(*) from t1;
select count(*) from t1;
count(*)
count(*)
...
@@ -108,3 +108,22 @@ select count(*) from t1;
...
@@ -108,3 +108,22 @@ select count(*) from t1;
count(*)
count(*)
1
1
drop table t1;
drop table t1;
set GLOBAL query_cache_size=1355776;
CREATE TABLE t1 ( id int(10) NOT NULL auto_increment, a varchar(25) default NULL, PRIMARY KEY (id), UNIQUE KEY a (a)) TYPE=innodb;
CREATE TABLE t2 ( id int(10) NOT NULL auto_increment, b varchar(25) default NULL, PRIMARY KEY (id), UNIQUE KEY b (b)) TYPE=innodb;
CREATE TABLE t3 ( id int(10) NOT NULL auto_increment, t1_id int(10) NOT NULL default '0', t2_id int(10) NOT NULL default '0', state int(11) default NULL, PRIMARY KEY (id), UNIQUE KEY t1_id (t1_id,t2_id), KEY t2_id (t2_id,t1_id), CONSTRAINT `t3_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`), CONSTRAINT `t3_ibfk_2` FOREIGN KEY (`t2_id`) REFERENCES `t2` (`id`)) TYPE=innodb;
INSERT INTO t1 VALUES (1,'me');
INSERT INTO t2 VALUES (1,'you');
INSERT INTO t3 VALUES (2,1,1,2);
delete from t3 where t1_id = 1 and t2_id = 1;
select t1.* from t1, t2, t3 where t3.state & 1 = 0 and t3.t1_id = t1.id and t3.t2_id = t2.id and t1.id = 1 order by t1.a asc;
id a
begin;
insert into t3 VALUES ( NULL, 1, 1, 2 );
insert into t3 VALUES ( NULL, 1, 1, 2 );
Duplicate entry '1-1' for key 2
commit;
select t1.* from t1, t2, t3 where t3.state & 1 = 0 and t3.t1_id = t1.id and t3.t2_id = t2.id and t1.id = 1 order by t1.a asc;
id a
1 me
drop table t3,t2,t1;
mysql-test/t/innodb_cache.test
View file @
2a3d5308
...
@@ -48,10 +48,31 @@ show status like "Qcache_queries_in_cache";
...
@@ -48,10 +48,31 @@ show status like "Qcache_queries_in_cache";
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_hits"
;
commit
;
commit
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_queries_in_cache"
;
drop
table
t3
,
t2
,
t1
;
drop
table
if
exists
t1
;
CREATE
TABLE
t1
(
id
int
(
11
)
NOT
NULL
auto_increment
,
PRIMARY
KEY
(
id
))
TYPE
=
InnoDB
;
CREATE
TABLE
t1
(
id
int
(
11
)
NOT
NULL
auto_increment
,
PRIMARY
KEY
(
id
))
TYPE
=
InnoDB
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t1
;
insert
into
t1
(
id
)
values
(
0
);
insert
into
t1
(
id
)
values
(
0
);
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t1
;
drop
table
t1
;
drop
table
t1
;
#
# one statement roll back inside transation
#
set
GLOBAL
query_cache_size
=
1355776
;
CREATE
TABLE
t1
(
id
int
(
10
)
NOT
NULL
auto_increment
,
a
varchar
(
25
)
default
NULL
,
PRIMARY
KEY
(
id
),
UNIQUE
KEY
a
(
a
))
TYPE
=
innodb
;
CREATE
TABLE
t2
(
id
int
(
10
)
NOT
NULL
auto_increment
,
b
varchar
(
25
)
default
NULL
,
PRIMARY
KEY
(
id
),
UNIQUE
KEY
b
(
b
))
TYPE
=
innodb
;
CREATE
TABLE
t3
(
id
int
(
10
)
NOT
NULL
auto_increment
,
t1_id
int
(
10
)
NOT
NULL
default
'0'
,
t2_id
int
(
10
)
NOT
NULL
default
'0'
,
state
int
(
11
)
default
NULL
,
PRIMARY
KEY
(
id
),
UNIQUE
KEY
t1_id
(
t1_id
,
t2_id
),
KEY
t2_id
(
t2_id
,
t1_id
),
CONSTRAINT
`t3_ibfk_1`
FOREIGN
KEY
(
`t1_id`
)
REFERENCES
`t1`
(
`id`
),
CONSTRAINT
`t3_ibfk_2`
FOREIGN
KEY
(
`t2_id`
)
REFERENCES
`t2`
(
`id`
))
TYPE
=
innodb
;
INSERT
INTO
t1
VALUES
(
1
,
'me'
);
INSERT
INTO
t2
VALUES
(
1
,
'you'
);
INSERT
INTO
t3
VALUES
(
2
,
1
,
1
,
2
);
delete
from
t3
where
t1_id
=
1
and
t2_id
=
1
;
select
t1
.*
from
t1
,
t2
,
t3
where
t3
.
state
&
1
=
0
and
t3
.
t1_id
=
t1
.
id
and
t3
.
t2_id
=
t2
.
id
and
t1
.
id
=
1
order
by
t1
.
a
asc
;
begin
;
insert
into
t3
VALUES
(
NULL
,
1
,
1
,
2
);
--
error
1062
insert
into
t3
VALUES
(
NULL
,
1
,
1
,
2
);
commit
;
select
t1
.*
from
t1
,
t2
,
t3
where
t3
.
state
&
1
=
0
and
t3
.
t1_id
=
t1
.
id
and
t3
.
t2_id
=
t2
.
id
and
t1
.
id
=
1
order
by
t1
.
a
asc
;
drop
table
t3
,
t2
,
t1
;
sql/handler.cc
View file @
2a3d5308
...
@@ -446,13 +446,12 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans)
...
@@ -446,13 +446,12 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans)
reinit_io_cache
(
&
thd
->
transaction
.
trans_log
,
reinit_io_cache
(
&
thd
->
transaction
.
trans_log
,
WRITE_CACHE
,
(
my_off_t
)
0
,
0
,
1
);
WRITE_CACHE
,
(
my_off_t
)
0
,
0
,
1
);
thd
->
transaction
.
trans_log
.
end_of_file
=
max_binlog_cache_size
;
thd
->
transaction
.
trans_log
.
end_of_file
=
max_binlog_cache_size
;
if
(
operation_done
)
thd
->
transaction
.
cleanup
();
}
}
thd
->
variables
.
tx_isolation
=
thd
->
session_tx_isolation
;
thd
->
variables
.
tx_isolation
=
thd
->
session_tx_isolation
;
if
(
operation_done
)
if
(
operation_done
)
{
statistic_increment
(
ha_rollback_count
,
&
LOCK_status
);
statistic_increment
(
ha_rollback_count
,
&
LOCK_status
);
thd
->
transaction
.
cleanup
();
}
}
}
#endif
/* USING_TRANSACTIONS */
#endif
/* USING_TRANSACTIONS */
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