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
7c82d564
Commit
7c82d564
authored
Aug 20, 2008
by
Timothy Smith
Browse files
Options
Browse Files
Download
Plain Diff
Cherry-pick various sr51rc/sr51ga fixes from InnoDB snapshots.
parents
82e3bece
d8aa83b2
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
476 additions
and
65 deletions
+476
-65
mysql-test/r/innodb-autoinc-optimize.result
mysql-test/r/innodb-autoinc-optimize.result
+1
-0
mysql-test/r/innodb-autoinc.result
mysql-test/r/innodb-autoinc.result
+171
-0
mysql-test/r/innodb.result
mysql-test/r/innodb.result
+11
-0
mysql-test/r/innodb_bug34300.result
mysql-test/r/innodb_bug34300.result
+4
-0
mysql-test/t/innodb-autoinc.test
mysql-test/t/innodb-autoinc.test
+141
-0
mysql-test/t/innodb.test
mysql-test/t/innodb.test
+15
-0
mysql-test/t/innodb_bug34300.test
mysql-test/t/innodb_bug34300.test
+30
-0
sql/sql_show.cc
sql/sql_show.cc
+1
-2
storage/innobase/buf/buf0buf.c
storage/innobase/buf/buf0buf.c
+1
-1
storage/innobase/ha/ha0ha.c
storage/innobase/ha/ha0ha.c
+17
-4
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.cc
+34
-4
storage/innobase/include/buf0buf.h
storage/innobase/include/buf0buf.h
+8
-5
storage/innobase/include/mach0data.h
storage/innobase/include/mach0data.h
+2
-2
storage/innobase/include/mach0data.ic
storage/innobase/include/mach0data.ic
+22
-16
storage/innobase/include/srv0srv.h
storage/innobase/include/srv0srv.h
+2
-0
storage/innobase/lock/lock0lock.c
storage/innobase/lock/lock0lock.c
+12
-0
storage/innobase/row/row0sel.c
storage/innobase/row/row0sel.c
+2
-31
storage/innobase/srv/srv0srv.c
storage/innobase/srv/srv0srv.c
+2
-0
No files found.
mysql-test/r/innodb-autoinc-optimize.result
View file @
7c82d564
...
@@ -3,4 +3,5 @@ create table t1(a int not null auto_increment primary key) engine=innodb;
...
@@ -3,4 +3,5 @@ create table t1(a int not null auto_increment primary key) engine=innodb;
insert into t1 set a = -1;
insert into t1 set a = -1;
optimize table t1;
optimize table t1;
Table Op Msg_type Msg_text
Table Op Msg_type Msg_text
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
test.t1 optimize status OK
test.t1 optimize status OK
mysql-test/r/innodb-autoinc.result
0 → 100644
View file @
7c82d564
drop table if exists t1;
CREATE TABLE t1 (c1 BIGINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (9223372036854775807, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
9223372036854775807 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (127, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
127 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (255, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
255 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 SMALLINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (32767, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
32767 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (65535, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
65535 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 MEDIUMINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (8388607, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
8388607 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 MEDIUMINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (16777215, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
16777215 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (2147483647, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
2147483647 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (4294967295, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
4294967295 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 BIGINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (9223372036854775807, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
9223372036854775807 NULL
DROP TABLE t1;
CREATE TABLE t1 (c1 BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (18446744073709551615, null);
INSERT INTO t1 (c2) VALUES ('innodb');
Got one of the listed errors
SELECT * FROM t1;
c1 c2
18446744073709551615 NULL
DROP TABLE t1;
CREATE TABLE t1(c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1), (2), (3);
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
SELECT c1 FROM t1;
c1
1
2
3
4
5
6
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
TRUNCATE TABLE t1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES (1), (2), (3);
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
SELECT c1 FROM t1;
c1
1
2
3
4
5
6
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1(c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1), (2), (3);
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
SELECT c1 FROM t1;
c1
1
2
3
4
5
6
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
DELETE FROM t1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES (1), (2), (3);
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
SELECT c1 FROM t1;
c1
1
2
3
7
8
9
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
DROP TABLE t1;
mysql-test/r/innodb.result
View file @
7c82d564
...
@@ -3267,3 +3267,14 @@ AUTO_INCREMENT
...
@@ -3267,3 +3267,14 @@ AUTO_INCREMENT
200
200
DROP TABLE t2;
DROP TABLE t2;
DROP TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (c1 int default NULL,
c2 int default NULL
)
ENGINE=InnoDB DEFAULT CHARSET=latin1;
TRUNCATE TABLE t1;
affected rows: 0
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
affected rows: 5
info: Records: 5 Duplicates: 0 Warnings: 0
TRUNCATE TABLE t1;
affected rows: 0
DROP TABLE t1;
mysql-test/r/innodb_bug34300.result
0 → 100644
View file @
7c82d564
f4 f8
xxx zzz
f4 f8
xxx zzz
mysql-test/t/innodb-autoinc.test
0 → 100644
View file @
7c82d564
--
source
include
/
have_innodb
.
inc
# embedded server ignores 'delayed', so skip this
--
source
include
/
not_embedded
.
inc
--
disable_warnings
drop
table
if
exists
t1
;
--
enable_warnings
#
# Bug #34335
#
CREATE
TABLE
t1
(
c1
BIGINT
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
9223372036854775807
,
null
);
--
error
ER_DUP_ENTRY
,
1062
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
#
## Test AUTOINC overflow
##
# TINYINT
CREATE
TABLE
t1
(
c1
TINYINT
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
127
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
c1
TINYINT
UNSIGNED
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
255
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
#
# SMALLINT
#
CREATE
TABLE
t1
(
c1
SMALLINT
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
32767
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
c1
SMALLINT
UNSIGNED
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
65535
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
#
# MEDIUMINT
#
CREATE
TABLE
t1
(
c1
MEDIUMINT
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
8388607
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
c1
MEDIUMINT
UNSIGNED
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
16777215
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
#
# INT
#
CREATE
TABLE
t1
(
c1
INT
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
2147483647
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
c1
INT
UNSIGNED
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
4294967295
,
null
);
--
error
ER_DUP_ENTRY
,
1062
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
#
# BIGINT
#
CREATE
TABLE
t1
(
c1
BIGINT
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
9223372036854775807
,
null
);
--
error
ER_DUP_ENTRY
,
1062
--
warning
ER_WARN_DATA_OUT_OF_RANGE
,
1264
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
c1
BIGINT
UNSIGNED
PRIMARY
KEY
AUTO_INCREMENT
,
c2
VARCHAR
(
10
))
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
18446744073709551615
,
null
);
--
error
ER_AUTOINC_READ_FAILED
,
1467
INSERT
INTO
t1
(
c2
)
VALUES
(
'innodb'
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
#
# Bug 37531
# After truncate, auto_increment behaves incorrectly for InnoDB
#
CREATE
TABLE
t1
(
c1
INT
PRIMARY
KEY
AUTO_INCREMENT
)
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
1
),
(
2
),
(
3
);
INSERT
INTO
t1
VALUES
(
NULL
),
(
NULL
),
(
NULL
);
SELECT
c1
FROM
t1
;
SHOW
CREATE
TABLE
t1
;
TRUNCATE
TABLE
t1
;
SHOW
CREATE
TABLE
t1
;
INSERT
INTO
t1
VALUES
(
1
),
(
2
),
(
3
);
INSERT
INTO
t1
VALUES
(
NULL
),
(
NULL
),
(
NULL
);
SELECT
c1
FROM
t1
;
SHOW
CREATE
TABLE
t1
;
DROP
TABLE
t1
;
#
# Deleting all records should not reset the AUTOINC counter.
#
CREATE
TABLE
t1
(
c1
INT
PRIMARY
KEY
AUTO_INCREMENT
)
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
1
),
(
2
),
(
3
);
INSERT
INTO
t1
VALUES
(
NULL
),
(
NULL
),
(
NULL
);
SELECT
c1
FROM
t1
;
SHOW
CREATE
TABLE
t1
;
DELETE
FROM
t1
;
SHOW
CREATE
TABLE
t1
;
INSERT
INTO
t1
VALUES
(
1
),
(
2
),
(
3
);
INSERT
INTO
t1
VALUES
(
NULL
),
(
NULL
),
(
NULL
);
SELECT
c1
FROM
t1
;
SHOW
CREATE
TABLE
t1
;
DROP
TABLE
t1
;
mysql-test/t/innodb.test
View file @
7c82d564
...
@@ -2458,7 +2458,22 @@ SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
...
@@ -2458,7 +2458,22 @@ SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
DROP
TABLE
t2
;
DROP
TABLE
t2
;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
# End 34920 test
# End 34920 test
# Bug #29507 TRUNCATE shows to many rows effected
#
CONNECTION
default
;
CREATE
TABLE
t1
(
c1
int
default
NULL
,
c2
int
default
NULL
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
;
--
enable_info
TRUNCATE
TABLE
t1
;
INSERT
INTO
t1
VALUES
(
1
,
1
),
(
2
,
2
),
(
3
,
3
),
(
4
,
4
),
(
5
,
5
);
TRUNCATE
TABLE
t1
;
--
disable_info
DROP
TABLE
t1
;
#
#######################################################################
#######################################################################
# #
# #
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
...
...
mysql-test/t/innodb_bug34300.test
0 → 100644
View file @
7c82d564
#
# Bug#34300 Tinyblob & tinytext fields currupted after export/import and alter in 5.1
# http://bugs.mysql.com/34300
#
--
source
include
/
have_innodb
.
inc
--
disable_query_log
--
disable_result_log
SET
@@
max_allowed_packet
=
16777216
;
DROP
TABLE
IF
EXISTS
bug34300
;
CREATE
TABLE
bug34300
(
f4
TINYTEXT
,
f6
MEDIUMTEXT
,
f8
TINYBLOB
)
ENGINE
=
InnoDB
;
INSERT
INTO
bug34300
VALUES
(
'xxx'
,
repeat
(
'a'
,
8459264
),
'zzz'
);
--
enable_result_log
SELECT
f4
,
f8
FROM
bug34300
;
ALTER
TABLE
bug34300
ADD
COLUMN
(
f10
INT
);
SELECT
f4
,
f8
FROM
bug34300
;
DROP
TABLE
bug34300
;
sql/sql_show.cc
View file @
7c82d564
...
@@ -3549,8 +3549,7 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
...
@@ -3549,8 +3549,7 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
if
(
file
)
if
(
file
)
{
{
file
->
info
(
HA_STATUS_VARIABLE
|
HA_STATUS_TIME
|
HA_STATUS_AUTO
|
file
->
info
(
HA_STATUS_VARIABLE
|
HA_STATUS_TIME
|
HA_STATUS_AUTO
);
HA_STATUS_NO_LOCK
);
enum
row_type
row_type
=
file
->
get_row_type
();
enum
row_type
row_type
=
file
->
get_row_type
();
switch
(
row_type
)
{
switch
(
row_type
)
{
case
ROW_TYPE_NOT_USED
:
case
ROW_TYPE_NOT_USED
:
...
...
storage/innobase/buf/buf0buf.c
View file @
7c82d564
...
@@ -2328,7 +2328,6 @@ buf_print(void)
...
@@ -2328,7 +2328,6 @@ buf_print(void)
ut_a
(
buf_validate
());
ut_a
(
buf_validate
());
}
}
#endif
/* UNIV_DEBUG */
/*************************************************************************
/*************************************************************************
Returns the number of latched pages in the buffer pool. */
Returns the number of latched pages in the buffer pool. */
...
@@ -2361,6 +2360,7 @@ buf_get_latched_pages_number(void)
...
@@ -2361,6 +2360,7 @@ buf_get_latched_pages_number(void)
return
(
fixed_pages_number
);
return
(
fixed_pages_number
);
}
}
#endif
/* UNIV_DEBUG */
/*************************************************************************
/*************************************************************************
Returns the number of pending buf pool ios. */
Returns the number of pending buf pool ios. */
...
...
storage/innobase/ha/ha0ha.c
View file @
7c82d564
...
@@ -331,11 +331,20 @@ ha_print_info(
...
@@ -331,11 +331,20 @@ ha_print_info(
FILE
*
file
,
/* in: file where to print */
FILE
*
file
,
/* in: file where to print */
hash_table_t
*
table
)
/* in: hash table */
hash_table_t
*
table
)
/* in: hash table */
{
{
#ifdef UNIV_DEBUG
/* Some of the code here is disabled for performance reasons in production
builds, see http://bugs.mysql.com/36941 */
#define PRINT_USED_CELLS
#endif
/* UNIV_DEBUG */
#ifdef PRINT_USED_CELLS
hash_cell_t
*
cell
;
hash_cell_t
*
cell
;
ulint
cells
=
0
;
ulint
cells
=
0
;
ulint
n_bufs
;
ulint
i
;
ulint
i
;
#endif
/* PRINT_USED_CELLS */
ulint
n_bufs
;
#ifdef PRINT_USED_CELLS
for
(
i
=
0
;
i
<
hash_get_n_cells
(
table
);
i
++
)
{
for
(
i
=
0
;
i
<
hash_get_n_cells
(
table
);
i
++
)
{
cell
=
hash_get_nth_cell
(
table
,
i
);
cell
=
hash_get_nth_cell
(
table
,
i
);
...
@@ -345,10 +354,14 @@ ha_print_info(
...
@@ -345,10 +354,14 @@ ha_print_info(
cells
++
;
cells
++
;
}
}
}
}
#endif
/* PRINT_USED_CELLS */
fprintf
(
file
,
"Hash table size %lu"
,
(
ulong
)
hash_get_n_cells
(
table
));
fprintf
(
file
,
#ifdef PRINT_USED_CELLS
"Hash table size %lu, used cells %lu"
,
fprintf
(
file
,
", used cells %lu"
,
(
ulong
)
cells
);
(
ulong
)
hash_get_n_cells
(
table
),
(
ulong
)
cells
);
#endif
/* PRINT_USED_CELLS */
if
(
table
->
heaps
==
NULL
&&
table
->
heap
!=
NULL
)
{
if
(
table
->
heaps
==
NULL
&&
table
->
heap
!=
NULL
)
{
...
...
storage/innobase/handler/ha_innodb.cc
View file @
7c82d564
...
@@ -334,8 +334,10 @@ static SHOW_VAR innodb_status_variables[]= {
...
@@ -334,8 +334,10 @@ static SHOW_VAR innodb_status_variables[]= {
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_flushed
,
SHOW_LONG
},
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_flushed
,
SHOW_LONG
},
{
"buffer_pool_pages_free"
,
{
"buffer_pool_pages_free"
,
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_free
,
SHOW_LONG
},
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_free
,
SHOW_LONG
},
#ifdef UNIV_DEBUG
{
"buffer_pool_pages_latched"
,
{
"buffer_pool_pages_latched"
,
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_latched
,
SHOW_LONG
},
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_latched
,
SHOW_LONG
},
#endif
/* UNIV_DEBUG */
{
"buffer_pool_pages_misc"
,
{
"buffer_pool_pages_misc"
,
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_misc
,
SHOW_LONG
},
(
char
*
)
&
export_vars
.
innodb_buffer_pool_pages_misc
,
SHOW_LONG
},
{
"buffer_pool_pages_total"
,
{
"buffer_pool_pages_total"
,
...
@@ -3275,7 +3277,8 @@ ha_innobase::innobase_autoinc_lock(void)
...
@@ -3275,7 +3277,8 @@ ha_innobase::innobase_autoinc_lock(void)
old style only if another transaction has already acquired
old style only if another transaction has already acquired
the AUTOINC lock on behalf of a LOAD FILE or INSERT ... SELECT
the AUTOINC lock on behalf of a LOAD FILE or INSERT ... SELECT
etc. type of statement. */
etc. type of statement. */
if
(
thd_sql_command
(
user_thd
)
==
SQLCOM_INSERT
)
{
if
(
thd_sql_command
(
user_thd
)
==
SQLCOM_INSERT
||
thd_sql_command
(
user_thd
)
==
SQLCOM_REPLACE
)
{
dict_table_t
*
table
=
prebuilt
->
table
;
dict_table_t
*
table
=
prebuilt
->
table
;
/* Acquire the AUTOINC mutex. */
/* Acquire the AUTOINC mutex. */
...
@@ -5782,6 +5785,21 @@ ha_innobase::info(
...
@@ -5782,6 +5785,21 @@ ha_innobase::info(
n_rows
++
;
n_rows
++
;
}
}
/* Fix bug#29507: TRUNCATE shows too many rows affected.
Do not show the estimates for TRUNCATE command. */
if
(
thd_sql_command
(
user_thd
)
==
SQLCOM_TRUNCATE
)
{
n_rows
=
0
;
/* We need to reset the prebuilt value too, otherwise
checks for values greater than the last value written
to the table will fail and the autoinc counter will
not be updated. This will force write_row() into
attempting an update of the table's AUTOINC counter. */
prebuilt
->
last_value
=
0
;
}
stats
.
records
=
(
ha_rows
)
n_rows
;
stats
.
records
=
(
ha_rows
)
n_rows
;
stats
.
deleted
=
0
;
stats
.
deleted
=
0
;
stats
.
data_file_length
=
((
ulonglong
)
stats
.
data_file_length
=
((
ulonglong
)
...
@@ -5790,9 +5808,21 @@ ha_innobase::info(
...
@@ -5790,9 +5808,21 @@ ha_innobase::info(
stats
.
index_file_length
=
((
ulonglong
)
stats
.
index_file_length
=
((
ulonglong
)
ib_table
->
stat_sum_of_other_index_sizes
)
ib_table
->
stat_sum_of_other_index_sizes
)
*
UNIV_PAGE_SIZE
;
*
UNIV_PAGE_SIZE
;
/* Since fsp_get_available_space_in_free_extents() is
acquiring latches inside InnoDB, we do not call it if we
are asked by MySQL to avoid locking. Another reason to
avoid the call is that it uses quite a lot of CPU.
See Bug#38185.
We do not update delete_length if no locking is requested
so the "old" value can remain. delete_length is initialized
to 0 in the ha_statistics' constructor. */
if
(
!
(
flag
&
HA_STATUS_NO_LOCK
))
{
stats
.
delete_length
=
stats
.
delete_length
=
fsp_get_available_space_in_free_extents
(
fsp_get_available_space_in_free_extents
(
ib_table
->
space
);
ib_table
->
space
)
*
1024
;
}
stats
.
check_time
=
0
;
stats
.
check_time
=
0
;
if
(
stats
.
records
==
0
)
{
if
(
stats
.
records
==
0
)
{
...
...
storage/innobase/include/buf0buf.h
View file @
7c82d564
...
@@ -495,7 +495,15 @@ Prints info of the buffer pool data structure. */
...
@@ -495,7 +495,15 @@ Prints info of the buffer pool data structure. */
void
void
buf_print
(
void
);
buf_print
(
void
);
/*============*/
/*============*/
/*************************************************************************
Returns the number of latched pages in the buffer pool. */
ulint
buf_get_latched_pages_number
(
void
);
/*==============================*/
#endif
/* UNIV_DEBUG */
#endif
/* UNIV_DEBUG */
/************************************************************************
/************************************************************************
Prints a page to stderr. */
Prints a page to stderr. */
...
@@ -503,12 +511,7 @@ void
...
@@ -503,12 +511,7 @@ void
buf_page_print
(
buf_page_print
(
/*===========*/
/*===========*/
byte
*
read_buf
);
/* in: a database page */
byte
*
read_buf
);
/* in: a database page */
/*************************************************************************
Returns the number of latched pages in the buffer pool. */
ulint
buf_get_latched_pages_number
(
void
);
/*==============================*/
/*************************************************************************
/*************************************************************************
Returns the number of pending buf pool ios. */
Returns the number of pending buf pool ios. */
...
...
storage/innobase/include/mach0data.h
View file @
7c82d564
...
@@ -331,10 +331,10 @@ mach_write_to_2_little_endian(
...
@@ -331,10 +331,10 @@ mach_write_to_2_little_endian(
Convert integral type from storage byte order (big endian) to
Convert integral type from storage byte order (big endian) to
host byte order. */
host byte order. */
UNIV_INLINE
UNIV_INLINE
void
ullint
mach_read_int_type
(
mach_read_int_type
(
/*===============*/
/*===============*/
byte
*
dest
,
/* out: where to writ
e */
/* out: integer valu
e */
const
byte
*
src
,
/* in: where to read from */
const
byte
*
src
,
/* in: where to read from */
ulint
len
,
/* in: length of src */
ulint
len
,
/* in: length of src */
ibool
unsigned_type
);
/* in: signed or unsigned flag */
ibool
unsigned_type
);
/* in: signed or unsigned flag */
...
...
storage/innobase/include/mach0data.ic
View file @
7c82d564
...
@@ -696,33 +696,39 @@ mach_write_to_2_little_endian(
...
@@ -696,33 +696,39 @@ mach_write_to_2_little_endian(
Convert integral type from storage byte order (big endian) to
Convert integral type from storage byte order (big endian) to
host byte order. */
host byte order. */
UNIV_INLINE
UNIV_INLINE
void
ullint
mach_read_int_type(
mach_read_int_type(
/*===============*/
/*===============*/
byte* dest, /* out: where to writ
e */
/* out: integer valu
e */
const byte* src, /* in: where to read from */
const byte* src, /* in: where to read from */
ulint len, /* in: length of src */
ulint len, /* in: length of src */
ibool unsigned_type) /* in: signed or unsigned flag */
ibool unsigned_type) /* in: signed or unsigned flag */
{
{
#ifdef WORDS_BIGENDIAN
/* XXX this can be optimized on big-endian machines */
memcpy(dest, src, len);
ullint ret;
uint i;
if (unsigned_type || (src[0] & 0x80)) {
if (!unsigned_type) {
ret = 0x0000000000000000ULL;
dest[0] ^= 128;
} else {
ret = 0xFFFFFFFFFFFFFF00ULL;
}
}
#else
byte* ptr;
/* Convert integer data from Innobase to a little-endian format,
if (unsigned_type) {
sign bit restored to normal. */
ret |= src[0];
} else {
for (ptr = dest + len; ptr != dest; ++src) {
ret |= src[0] ^ 0x80;
--ptr;
*ptr = *src;
}
}
if (!unsigned_type) {
for (i = 1; i < len; i++) {
dest[len - 1] ^= 128;
ret <<= 8;
ret |= src[i];
}
}
#endif
return(ret);
}
}
storage/innobase/include/srv0srv.h
View file @
7c82d564
...
@@ -501,7 +501,9 @@ struct export_var_struct{
...
@@ -501,7 +501,9 @@ struct export_var_struct{
ulint
innodb_buffer_pool_pages_dirty
;
ulint
innodb_buffer_pool_pages_dirty
;
ulint
innodb_buffer_pool_pages_misc
;
ulint
innodb_buffer_pool_pages_misc
;
ulint
innodb_buffer_pool_pages_free
;
ulint
innodb_buffer_pool_pages_free
;
#ifdef UNIV_DEBUG
ulint
innodb_buffer_pool_pages_latched
;
ulint
innodb_buffer_pool_pages_latched
;
#endif
/* UNIV_DEBUG */
ulint
innodb_buffer_pool_read_requests
;
ulint
innodb_buffer_pool_read_requests
;
ulint
innodb_buffer_pool_reads
;
ulint
innodb_buffer_pool_reads
;
ulint
innodb_buffer_pool_wait_free
;
ulint
innodb_buffer_pool_wait_free
;
...
...
storage/innobase/lock/lock0lock.c
View file @
7c82d564
...
@@ -4138,6 +4138,15 @@ lock_rec_print(
...
@@ -4138,6 +4138,15 @@ lock_rec_print(
}
}
#ifndef UNIV_HOTBACKUP
#ifndef UNIV_HOTBACKUP
#ifdef UNIV_DEBUG
/* Print the number of lock structs from lock_print_info_summary() only
in non-production builds for performance reasons, see
http://bugs.mysql.com/36942 */
#define PRINT_NUM_OF_LOCK_STRUCTS
#endif
/* UNIV_DEBUG */
#ifdef PRINT_NUM_OF_LOCK_STRUCTS
/*************************************************************************
/*************************************************************************
Calculates the number of record lock structs in the record lock hash table. */
Calculates the number of record lock structs in the record lock hash table. */
static
static
...
@@ -4164,6 +4173,7 @@ lock_get_n_rec_locks(void)
...
@@ -4164,6 +4173,7 @@ lock_get_n_rec_locks(void)
return
(
n_locks
);
return
(
n_locks
);
}
}
#endif
/* PRINT_NUM_OF_LOCK_STRUCTS */
/*************************************************************************
/*************************************************************************
Prints info of locks for all transactions. */
Prints info of locks for all transactions. */
...
@@ -4207,9 +4217,11 @@ lock_print_info_summary(
...
@@ -4207,9 +4217,11 @@ lock_print_info_summary(
"History list length %lu
\n
"
,
"History list length %lu
\n
"
,
(
ulong
)
trx_sys
->
rseg_history_len
);
(
ulong
)
trx_sys
->
rseg_history_len
);
#ifdef PRINT_NUM_OF_LOCK_STRUCTS
fprintf
(
file
,
fprintf
(
file
,
"Total number of lock structs in row lock hash table %lu
\n
"
,
"Total number of lock structs in row lock hash table %lu
\n
"
,
(
ulong
)
lock_get_n_rec_locks
());
(
ulong
)
lock_get_n_rec_locks
());
#endif
/* PRINT_NUM_OF_LOCK_STRUCTS */
}
}
/*************************************************************************
/*************************************************************************
...
...
storage/innobase/row/row0sel.c
View file @
7c82d564
...
@@ -4563,8 +4563,6 @@ row_search_autoinc_read_column(
...
@@ -4563,8 +4563,6 @@ row_search_autoinc_read_column(
const
byte
*
data
;
const
byte
*
data
;
ib_ulonglong
value
;
ib_ulonglong
value
;
mem_heap_t
*
heap
=
NULL
;
mem_heap_t
*
heap
=
NULL
;
/* Our requirement is that dest should be word aligned. */
byte
dest
[
sizeof
(
value
)];
ulint
offsets_
[
REC_OFFS_NORMAL_SIZE
];
ulint
offsets_
[
REC_OFFS_NORMAL_SIZE
];
ulint
*
offsets
=
offsets_
;
ulint
*
offsets
=
offsets_
;
...
@@ -4582,40 +4580,13 @@ row_search_autoinc_read_column(
...
@@ -4582,40 +4580,13 @@ row_search_autoinc_read_column(
ut_a
(
len
!=
UNIV_SQL_NULL
);
ut_a
(
len
!=
UNIV_SQL_NULL
);
ut_a
(
len
<=
sizeof
value
);
ut_a
(
len
<=
sizeof
value
);
mach_read_int_type
(
dest
,
data
,
len
,
unsigned_type
);
value
=
mach_read_int_type
(
data
,
len
,
unsigned_type
);
/* The assumption here is that the AUTOINC value can't be negative
and that dest is word aligned. */
switch
(
len
)
{
case
8
:
value
=
*
(
ib_ulonglong
*
)
dest
;
break
;
case
4
:
value
=
*
(
ib_uint32_t
*
)
dest
;
break
;
case
3
:
value
=
*
(
ib_uint32_t
*
)
dest
;
value
&=
0xFFFFFF
;
break
;
case
2
:
value
=
*
(
uint16
*
)
dest
;
break
;
case
1
:
value
=
*
dest
;
break
;
default:
ut_error
;
}
if
(
UNIV_LIKELY_NULL
(
heap
))
{
if
(
UNIV_LIKELY_NULL
(
heap
))
{
mem_heap_free
(
heap
);
mem_heap_free
(
heap
);
}
}
/* We assume that the autoinc counter can't be negative. */
if
(
!
unsigned_type
&&
(
ib_longlong
)
value
<
0
)
{
if
(
!
unsigned_type
&&
(
ib_longlong
)
value
<
0
)
{
value
=
0
;
value
=
0
;
}
}
...
...
storage/innobase/srv/srv0srv.c
View file @
7c82d564
...
@@ -1825,8 +1825,10 @@ srv_export_innodb_status(void)
...
@@ -1825,8 +1825,10 @@ srv_export_innodb_status(void)
=
UT_LIST_GET_LEN
(
buf_pool
->
flush_list
);
=
UT_LIST_GET_LEN
(
buf_pool
->
flush_list
);
export_vars
.
innodb_buffer_pool_pages_free
export_vars
.
innodb_buffer_pool_pages_free
=
UT_LIST_GET_LEN
(
buf_pool
->
free
);
=
UT_LIST_GET_LEN
(
buf_pool
->
free
);
#ifdef UNIV_DEBUG
export_vars
.
innodb_buffer_pool_pages_latched
export_vars
.
innodb_buffer_pool_pages_latched
=
buf_get_latched_pages_number
();
=
buf_get_latched_pages_number
();
#endif
/* UNIV_DEBUG */
export_vars
.
innodb_buffer_pool_pages_total
=
buf_pool
->
curr_size
;
export_vars
.
innodb_buffer_pool_pages_total
=
buf_pool
->
curr_size
;
export_vars
.
innodb_buffer_pool_pages_misc
=
buf_pool
->
max_size
export_vars
.
innodb_buffer_pool_pages_misc
=
buf_pool
->
max_size
...
...
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