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
33d9d40c
Commit
33d9d40c
authored
May 10, 2012
by
Annamalai Gurusami
Browse files
Options
Browse Files
Download
Plain Diff
Merging from mysql-5.1 to mysql-5.5.
parents
2146ef6f
b76a59f5
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
142 additions
and
0 deletions
+142
-0
mysql-test/suite/innodb/r/innodb_bug14007649.result
mysql-test/suite/innodb/r/innodb_bug14007649.result
+56
-0
mysql-test/suite/innodb/t/innodb_bug14007649.test
mysql-test/suite/innodb/t/innodb_bug14007649.test
+58
-0
storage/innobase/btr/btr0cur.c
storage/innobase/btr/btr0cur.c
+2
-0
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.cc
+25
-0
storage/innobase/handler/ha_innodb.h
storage/innobase/handler/ha_innodb.h
+1
-0
No files found.
mysql-test/suite/innodb/r/innodb_bug14007649.result
0 → 100644
View file @
33d9d40c
create table t1 (
rowid int,
f1 int,
f2 int,
key i1 (f1, f2),
key i2 (f2)) engine=innodb;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`rowid` int(11) DEFAULT NULL,
`f1` int(11) DEFAULT NULL,
`f2` int(11) DEFAULT NULL,
KEY `i1` (`f1`,`f2`),
KEY `i2` (`f2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
insert into `t1` (rowid, f1, f2) values (1, 1, 10), (2, 1, NULL);
start transaction with consistent snapshot;
start transaction;
update t1 set f2 = 4 where f1 = 1 and f2 is null;
(b) Number of rows updated:
select row_count();
row_count()
1
insert into t1 values (3, 1, null);
(b) After update and insert query.
select rowid, f1, f2 from t1;
rowid f1 f2
1 1 10
2 1 4
3 1 NULL
commit;
(a) Before the update statement is executed.
select rowid, f1, f2 from t1;
rowid f1 f2
1 1 10
2 1 NULL
SET SESSION debug="+d,bug14007649";
update t1 set f2 = 6 where f1 = 1 and f2 is null;
(a) Number of rows updated:
select row_count();
row_count()
1
(a) After the update statement is executed.
select rowid, f1, f2 from t1;
rowid f1 f2
1 1 10
2 1 NULL
3 1 6
commit;
"The trx with consistent snapshot ended."
select rowid, f1, f2 from t1;
rowid f1 f2
1 1 10
2 1 4
3 1 6
drop table t1;
mysql-test/suite/innodb/t/innodb_bug14007649.test
0 → 100644
View file @
33d9d40c
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_debug
.
inc
create
table
t1
(
rowid
int
,
f1
int
,
f2
int
,
key
i1
(
f1
,
f2
),
key
i2
(
f2
))
engine
=
innodb
;
show
create
table
t1
;
insert
into
`t1`
(
rowid
,
f1
,
f2
)
values
(
1
,
1
,
10
),
(
2
,
1
,
NULL
);
connect
(
a
,
localhost
,
root
,,);
connect
(
b
,
localhost
,
root
,,);
connection
a
;
start
transaction
with
consistent
snapshot
;
connection
b
;
start
transaction
;
update
t1
set
f2
=
4
where
f1
=
1
and
f2
is
null
;
--
echo
(
b
)
Number
of
rows
updated
:
select
row_count
();
insert
into
t1
values
(
3
,
1
,
null
);
--
echo
(
b
)
After
update
and
insert
query
.
select
rowid
,
f1
,
f2
from
t1
;
commit
;
connection
a
;
--
echo
(
a
)
Before
the
update
statement
is
executed
.
select
rowid
,
f1
,
f2
from
t1
;
SET
SESSION
debug
=
"+d,bug14007649"
;
update
t1
set
f2
=
6
where
f1
=
1
and
f2
is
null
;
--
echo
(
a
)
Number
of
rows
updated
:
select
row_count
();
--
echo
(
a
)
After
the
update
statement
is
executed
.
select
rowid
,
f1
,
f2
from
t1
;
commit
;
--
echo
"The trx with consistent snapshot ended."
select
rowid
,
f1
,
f2
from
t1
;
connection
default
;
disconnect
a
;
disconnect
b
;
drop
table
t1
;
storage/innobase/btr/btr0cur.c
View file @
33d9d40c
...
...
@@ -3463,6 +3463,8 @@ btr_estimate_n_rows_in_range(
n_rows
=
n_rows
*
2
;
}
DBUG_EXECUTE_IF
(
"bug14007649"
,
return
(
n_rows
););
/* Do not estimate the number of rows in the range
to over 1 / 2 of the estimated rows in the whole
table */
...
...
storage/innobase/handler/ha_innodb.cc
View file @
33d9d40c
...
...
@@ -4144,6 +4144,31 @@ table_opened:
DBUG_RETURN
(
0
);
}
UNIV_INTERN
handler
*
ha_innobase
::
clone
(
/*===============*/
const
char
*
name
,
/*!< in: table name */
MEM_ROOT
*
mem_root
)
/*!< in: memory context */
{
ha_innobase
*
new_handler
;
DBUG_ENTER
(
"ha_innobase::clone"
);
new_handler
=
static_cast
<
ha_innobase
*>
(
handler
::
clone
(
name
,
mem_root
));
if
(
new_handler
)
{
DBUG_ASSERT
(
new_handler
->
prebuilt
!=
NULL
);
DBUG_ASSERT
(
new_handler
->
user_thd
==
user_thd
);
DBUG_ASSERT
(
new_handler
->
prebuilt
->
trx
==
prebuilt
->
trx
);
new_handler
->
prebuilt
->
select_lock_type
=
prebuilt
->
select_lock_type
;
}
DBUG_RETURN
(
new_handler
);
}
UNIV_INTERN
uint
ha_innobase
::
max_supported_key_part_length
()
const
...
...
storage/innobase/handler/ha_innodb.h
View file @
33d9d40c
...
...
@@ -133,6 +133,7 @@ class ha_innobase: public handler
const
key_map
*
keys_to_use_for_scanning
();
int
open
(
const
char
*
name
,
int
mode
,
uint
test_if_locked
);
handler
*
clone
(
const
char
*
name
,
MEM_ROOT
*
mem_root
);
int
close
(
void
);
double
scan_time
();
double
read_time
(
uint
index
,
uint
ranges
,
ha_rows
rows
);
...
...
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