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
18cdc254
Commit
18cdc254
authored
Nov 20, 2017
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
MDEV-13626 Merge InnoDB test cases from MySQL 5.7 (part 3)
parents
ce64a65f
f233c977
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
2834 additions
and
1 deletion
+2834
-1
mysql-test/suite/innodb/include/innodb_bulk_create_index.inc
mysql-test/suite/innodb/include/innodb_bulk_create_index.inc
+185
-0
mysql-test/suite/innodb/include/innodb_bulk_create_index_debug.inc
...t/suite/innodb/include/innodb_bulk_create_index_debug.inc
+221
-0
mysql-test/suite/innodb/r/innodb_bulk_create_index.result
mysql-test/suite/innodb/r/innodb_bulk_create_index.result
+1037
-0
mysql-test/suite/innodb/r/innodb_bulk_create_index_debug.result
...test/suite/innodb/r/innodb_bulk_create_index_debug.result
+501
-0
mysql-test/suite/innodb/r/innodb_bulk_create_index_flush.result
...test/suite/innodb/r/innodb_bulk_create_index_flush.result
+54
-0
mysql-test/suite/innodb/r/innodb_bulk_create_index_replication.result
...uite/innodb/r/innodb_bulk_create_index_replication.result
+222
-0
mysql-test/suite/innodb/r/innodb_bulk_create_index_small.result
...test/suite/innodb/r/innodb_bulk_create_index_small.result
+139
-0
mysql-test/suite/innodb/t/innodb_bulk_create_index.test
mysql-test/suite/innodb/t/innodb_bulk_create_index.test
+46
-0
mysql-test/suite/innodb/t/innodb_bulk_create_index_debug.test
...l-test/suite/innodb/t/innodb_bulk_create_index_debug.test
+23
-0
mysql-test/suite/innodb/t/innodb_bulk_create_index_flush.test
...l-test/suite/innodb/t/innodb_bulk_create_index_flush.test
+75
-0
mysql-test/suite/innodb/t/innodb_bulk_create_index_replication.test
.../suite/innodb/t/innodb_bulk_create_index_replication.test
+182
-0
mysql-test/suite/innodb/t/innodb_bulk_create_index_small.test
...l-test/suite/innodb/t/innodb_bulk_create_index_small.test
+148
-0
storage/innobase/row/row0merge.cc
storage/innobase/row/row0merge.cc
+1
-1
No files found.
mysql-test/suite/innodb/include/innodb_bulk_create_index.inc
0 → 100644
View file @
18cdc254
#
# wl#7277: InnoDB: Bulk Load for Create Index
#
# Create Insert Procedure
DELIMITER
|
;
CREATE
PROCEDURE
populate_t1
(
load_even
INT
)
BEGIN
DECLARE
i
int
DEFAULT
1
;
START
TRANSACTION
;
WHILE
(
i
<=
10000
)
DO
IF
i
%
2
=
0
AND
load_even
=
1
THEN
INSERT
INTO
t1
VALUES
(
i
,
i
,
CONCAT
(
'a'
,
i
));
END
IF
;
IF
i
%
2
!=
0
AND
load_even
!=
1
THEN
INSERT
INTO
t1
VALUES
(
i
,
i
,
CONCAT
(
'a'
,
i
));
END
IF
;
SET
i
=
i
+
1
;
END
WHILE
;
COMMIT
;
END
|
DELIMITER
;
|
SELECT
@@
innodb_fill_factor
;
if
(
$row_format
!=
'COMPRESSED'
)
{
eval
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
;
}
if
(
$row_format
==
'COMPRESSED'
)
{
SET
GLOBAL
innodb_file_per_table
=
1
;
eval
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
KEY_BLOCK_SIZE
=
4
;
}
--
disable_query_log
# Load half records
CALL
populate_t1
(
1
);
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
/* Create index. */
CREATE
INDEX
idx_id
ON
t1
(
id
);
CREATE
INDEX
idx_title
ON
t1
(
title
);
/* Check table. */
CHECK
TABLE
t1
;
/* Select by index. */
EXPLAIN
SELECT
*
FROM
t1
WHERE
id
=
10
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
5000
;
SELECT
*
FROM
t1
WHERE
title
=
'a5000'
;
SELECT
*
FROM
t1
WHERE
id
=
10000
;
SELECT
*
FROM
t1
WHERE
title
=
'a10000'
;
SELECT
*
FROM
t1
WHERE
id
=
10010
;
SELECT
*
FROM
t1
WHERE
title
=
'a10010'
;
/*Insert/Update/Delete. */
DELETE
FROM
t1
WHERE
id
<
4010
AND
id
>
3990
;
INSERT
INTO
t1
VALUES
(
4000
,
4000
,
'b4000'
);
UPDATE
t1
SET
title
=
CONCAT
(
'b'
,
id
)
WHERE
id
<
3010
AND
id
>
2990
;
SELECT
*
FROM
t1
WHERE
id
=
3000
;
SELECT
*
FROM
t1
WHERE
title
=
'a3000'
;
SELECT
*
FROM
t1
WHERE
title
=
'b3000'
;
SELECT
*
FROM
t1
WHERE
id
=
4000
;
SELECT
*
FROM
t1
WHERE
title
=
'a4000'
;
SELECT
*
FROM
t1
WHERE
title
=
'b4000'
;
SELECT
*
FROM
t1
WHERE
id
=
4001
;
SELECT
*
FROM
t1
WHERE
title
=
'a4001'
;
--
disable_query_log
# Load half records (follow up load)
CALL
populate_t1
(
0
);
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
/* Add column. */
ALTER
TABLE
t1
ADD
COLUMN
content
TEXT
;
CHECK
TABLE
t1
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
5000
;
SELECT
*
FROM
t1
WHERE
title
=
'a5000'
;
SELECT
*
FROM
t1
WHERE
id
=
10000
;
SELECT
*
FROM
t1
WHERE
title
=
'a10000'
;
SELECT
*
FROM
t1
WHERE
id
=
10010
;
SELECT
*
FROM
t1
WHERE
title
=
'a10010'
;
/* Drop column. */
ALTER
TABLE
t1
DROP
COLUMN
content
;
CHECK
TABLE
t1
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
5000
;
SELECT
*
FROM
t1
WHERE
title
=
'a5000'
;
SELECT
*
FROM
t1
WHERE
id
=
10000
;
SELECT
*
FROM
t1
WHERE
title
=
'a10000'
;
SELECT
*
FROM
t1
WHERE
id
=
10010
;
SELECT
*
FROM
t1
WHERE
title
=
'a10010'
;
DROP
TABLE
t1
;
# Test Blob
if
(
$row_format
!=
'COMPRESSED'
)
{
eval
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
TEXT
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
;
}
if
(
$row_format
==
'COMPRESSED'
)
{
eval
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
BLOB
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
KEY_BLOCK_SIZE
=
4
;
}
let
$cnt
=
5000
;
--
disable_query_log
WHILE
(
$cnt
>=
4950
)
{
EVAL
INSERT
INTO
t1
VALUES
(
$cnt
,
REPEAT
(
CONCAT
(
'a'
,
$cnt
),
2000
),
CONCAT
(
'a'
,
$cnt
));
dec
$cnt
;
}
--
enable_query_log
ALTER
TABLE
t1
ADD
INDEX
`idx`
(
a
,
b
(
5
));
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
WHERE
a
=
4975
;
SELECT
b
=
REPEAT
(
CONCAT
(
'a'
,
4975
),
2000
)
FROM
t1
WHERE
a
=
4975
AND
b
like
'a4975%'
;
UPDATE
t1
SET
b
=
REPEAT
(
CONCAT
(
'b'
,
4975
),
2000
)
WHERE
a
=
4975
AND
b
like
'a4975%'
;
SELECT
b
=
REPEAT
(
CONCAT
(
'a'
,
4975
),
2000
)
FROM
t1
WHERE
a
=
4975
AND
b
like
'a4975%'
;
SELECT
b
=
REPEAT
(
CONCAT
(
'b'
,
4975
),
2000
)
FROM
t1
WHERE
a
=
4975
AND
b
like
'b4975%'
;
DELETE
FROM
t1
WHERE
a
=
4975
AND
b
like
'b4975%'
;
SELECT
b
=
REPEAT
(
CONCAT
(
'b'
,
4975
),
2000
)
FROM
t1
WHERE
a
=
4975
AND
b
like
'b4975%'
;
ALTER
TABLE
t1
DROP
COLUMN
c
;
CHECK
TABLE
t1
;
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
WHERE
a
=
4975
;
DROP
TABLE
t1
;
# Restore global variables
if
(
$row_format
==
'COMPRESSED'
)
{
SET
GLOBAL
innodb_file_per_table
=
default
;
}
DROP
PROCEDURE
populate_t1
;
mysql-test/suite/innodb/include/innodb_bulk_create_index_debug.inc
0 → 100644
View file @
18cdc254
#
# wl#7277: InnoDB: Bulk Load for Create Index
#
# Not supported in embedded
--
source
include
/
not_embedded
.
inc
# This test case needs to crash the server. Needs a debug server.
--
source
include
/
have_debug
.
inc
# Don't test this under valgrind, memory leaks will occur.
--
source
include
/
not_valgrind
.
inc
# Avoid CrashReporter popup on Mac
--
source
include
/
not_crashrep
.
inc
--
source
include
/
have_innodb
.
inc
# Create Insert Procedure
DELIMITER
|
;
CREATE
PROCEDURE
populate_t1
()
BEGIN
DECLARE
i
int
DEFAULT
1
;
START
TRANSACTION
;
WHILE
(
i
<=
10000
)
DO
INSERT
INTO
t1
VALUES
(
i
,
i
,
CONCAT
(
'a'
,
i
));
SET
i
=
i
+
1
;
END
WHILE
;
COMMIT
;
END
|
DELIMITER
;
|
# Test scenarios:
# 1. Test restart;
# 2. Test crash recovery.
# Test Restart
if
(
$row_format
!=
'COMPRESSED'
)
{
eval
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
;
}
if
(
$row_format
==
'COMPRESSED'
)
{
SET
GLOBAL
innodb_file_per_table
=
1
;
eval
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
KEY_BLOCK_SIZE
=
4
;
}
--
disable_query_log
CALL
populate_t1
();
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
CREATE
INDEX
idx_title
ON
t1
(
title
);
--
source
include
/
restart_mysqld
.
inc
CHECK
TABLE
t1
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
title
=
'a5000'
;
SELECT
*
FROM
t1
WHERE
title
=
'a10000'
;
SELECT
*
FROM
t1
WHERE
title
=
'a10010'
;
DROP
TABLE
t1
;
--
echo
# Test Blob
if
(
$row_format
!=
'COMPRESSED'
)
{
eval
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
TEXT
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
;
}
if
(
$row_format
==
'COMPRESSED'
)
{
SET
GLOBAL
innodb_file_per_table
=
1
;
eval
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
TEXT
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
KEY_BLOCK_SIZE
=
4
;
}
INSERT
INTO
t1
VALUES
(
1
,
REPEAT
(
'a'
,
10000
),
'a'
),
(
2
,
REPEAT
(
'b'
,
20000
),
'b'
),
(
3
,
REPEAT
(
'c'
,
40000
),
'c'
),
(
4
,
REPEAT
(
'd'
,
60000
),
'd'
);
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
;
ALTER
TABLE
t1
DROP
COLUMN
c
;
--
source
include
/
restart_mysqld
.
inc
CHECK
TABLE
t1
;
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
;
DROP
TABLE
t1
;
# Test Crash Recovery
if
(
$row_format
!=
'COMPRESSED'
)
{
eval
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
;
}
if
(
$row_format
==
'COMPRESSED'
)
{
SET
GLOBAL
innodb_file_per_table
=
1
;
eval
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
KEY_BLOCK_SIZE
=
4
;
}
--
disable_query_log
CALL
populate_t1
();
--
enable_query_log
SET
SESSION
debug
=
"+d,crash_commit_before"
;
# Write file to make mysql-test-run.pl start up the server again
--
exec
echo
"restart"
>
$MYSQLTEST_VARDIR
/
tmp
/
mysqld
.
1.
expect
--
error
2013
CREATE
INDEX
idx_title
ON
t1
(
title
);
--
enable_reconnect
--
source
include
/
wait_until_connected_again
.
inc
--
disable_reconnect
SELECT
COUNT
(
*
)
FROM
t1
;
CHECK
TABLE
t1
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
title
=
'a5000'
;
SELECT
*
FROM
t1
WHERE
title
=
'a10000'
;
SELECT
*
FROM
t1
WHERE
title
=
'a10010'
;
DROP
TABLE
t1
;
--
echo
# Test Blob
if
(
$row_format
!=
'COMPRESSED'
)
{
eval
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
TEXT
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
;
}
if
(
$row_format
==
'COMPRESSED'
)
{
SET
GLOBAL
innodb_file_per_table
=
1
;
eval
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
TEXT
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
$row_format
KEY_BLOCK_SIZE
=
4
;
}
INSERT
INTO
t1
VALUES
(
1
,
REPEAT
(
'a'
,
10000
),
'a'
),
(
2
,
REPEAT
(
'b'
,
20000
),
'b'
),
(
3
,
REPEAT
(
'c'
,
40000
),
'c'
),
(
4
,
REPEAT
(
'd'
,
60000
),
'd'
);
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
;
SET
SESSION
debug
=
"+d,crash_commit_before"
;
# Write file to make mysql-test-run.pl start up the server again
--
exec
echo
"restart"
>
$MYSQLTEST_VARDIR
/
tmp
/
mysqld
.
1.
expect
--
error
2013
ALTER
TABLE
t1
DROP
COLUMN
c
;
--
enable_reconnect
--
source
include
/
wait_until_connected_again
.
inc
--
disable_reconnect
CHECK
TABLE
t1
;
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
;
DROP
TABLE
t1
;
# Restore global variables
if
(
$row_format
==
'COMPRESSED'
)
{
SET
GLOBAL
innodb_file_per_table
=
default
;
}
DROP
PROCEDURE
populate_t1
;
mysql-test/suite/innodb/r/innodb_bulk_create_index.result
0 → 100644
View file @
18cdc254
This diff is collapsed.
Click to expand it.
mysql-test/suite/innodb/r/innodb_bulk_create_index_debug.result
0 → 100644
View file @
18cdc254
This diff is collapsed.
Click to expand it.
mysql-test/suite/innodb/r/innodb_bulk_create_index_flush.result
0 → 100644
View file @
18cdc254
CREATE PROCEDURE populate_t1()
BEGIN
DECLARE i int DEFAULT 1;
START TRANSACTION;
WHILE (i <= 10000) DO
INSERT INTO t1 VALUES (i, i, CONCAT('a', i));
SET i = i + 1;
END WHILE;
COMMIT;
END|
CREATE TABLE t1(
class INT,
id INT,
title VARCHAR(100)
) ENGINE=InnoDB;
SELECT COUNT(*) FROM t1;
COUNT(*)
10000
SET @saved_dbug= @@SESSION.debug_dbug;
SET debug_dbug='+d,ib_index_build_fail_before_flush';
CREATE INDEX idx_id ON t1(id);
ERROR 70100: Query execution was interrupted
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
CREATE INDEX idx_title ON t1(title);
ERROR 70100: Query execution was interrupted
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
CREATE FULLTEXT INDEX fidx_title ON t1(title);
ERROR 70100: Query execution was interrupted
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
ALTER TABLE t1 ADD COLUMN content TEXT;
ERROR 70100: Query execution was interrupted
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SET debug_dbug= @saved_dbug;
INSERT INTO t1 VALUES(10001, 10001, 'a10000');
ALTER TABLE t1 ADD UNIQUE INDEX idx_title(title);
ERROR 23000: Duplicate entry 'a10000' for key 'idx_title'
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
ALTER TABLE t1 ADD UNIQUE INDEX idx_id(id), ADD UNIQUE INDEX idx_title(title);
ERROR 23000: Duplicate entry 'a10000' for key 'idx_title'
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
DROP PROCEDURE populate_t1;
mysql-test/suite/innodb/r/innodb_bulk_create_index_replication.result
0 → 100644
View file @
18cdc254
include/master-slave.inc
[connection master]
connection master;
CREATE PROCEDURE populate_t1(load_even INT)
BEGIN
DECLARE i int DEFAULT 1;
START TRANSACTION;
WHILE (i <= 100) DO
IF i%2 = 0 AND load_even = 1 THEN
INSERT INTO t1 VALUES (i, i, CONCAT('a', i));
END IF;
IF i%2 != 0 AND load_even != 1 THEN
INSERT INTO t1 VALUES (i, i, CONCAT('a', i));
END IF;
SET i = i + 1;
END WHILE;
COMMIT;
END|
CREATE TABLE t1(
class INT,
id INT,
title VARCHAR(100)
) ENGINE=InnoDB ;
SELECT COUNT(*) FROM t1;
COUNT(*)
50
/* Create index. */
CREATE INDEX idx_id ON t1(id);
CREATE INDEX idx_title ON t1(title);
/* Select by index. */
EXPLAIN SELECT * FROM t1 WHERE id = 10;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref idx_id idx_id 5 const 1
EXPLAIN SELECT * FROM t1 WHERE title = 'a10';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref idx_title idx_title 103 const 1 Using index condition
SELECT * FROM t1 WHERE id = 10;
class id title
10 10 a10
SELECT * FROM t1 WHERE title = 'a10';
class id title
10 10 a10
SELECT * FROM t1 WHERE id = 20;
class id title
20 20 a20
SELECT * FROM t1 WHERE title = 'a20';
class id title
20 20 a20
SELECT * FROM t1 WHERE id = 30;
class id title
30 30 a30
SELECT * FROM t1 WHERE title = 'a30';
class id title
30 30 a30
SELECT * FROM t1 WHERE id = 101;
class id title
SELECT * FROM t1 WHERE title = 'a101';
class id title
/*Insert/Update/Delete. */
DELETE FROM t1 WHERE id < 40 AND id > 30;
INSERT INTO t1 VALUES(38, 38, 'b38');
UPDATE t1 SET title = CONCAT('b', id) WHERE id < 30 AND id > 20;
SELECT * FROM t1 WHERE id = 28;
class id title
28 28 b28
SELECT * FROM t1 WHERE title = 'a28';
class id title
SELECT * FROM t1 WHERE title = 'b28';
class id title
28 28 b28
SELECT * FROM t1 WHERE id = 38;
class id title
38 38 b38
SELECT * FROM t1 WHERE title = 'a38';
class id title
SELECT * FROM t1 WHERE title = 'b38';
class id title
38 38 b38
SELECT * FROM t1 WHERE id = 101;
class id title
SELECT * FROM t1 WHERE title = 'a101';
class id title
SELECT COUNT(*) FROM t1;
COUNT(*)
97
SELECT * FROM t1 WHERE id = 10;
class id title
10 10 a10
SELECT * FROM t1 WHERE title = 'a10';
class id title
10 10 a10
SELECT * FROM t1 WHERE id = 20;
class id title
20 20 a20
SELECT * FROM t1 WHERE title = 'a20';
class id title
20 20 a20
SELECT * FROM t1 WHERE id = 30;
class id title
30 30 a30
SELECT * FROM t1 WHERE title = 'a30';
class id title
30 30 a30
SELECT * FROM t1 WHERE id = 101;
class id title
SELECT * FROM t1 WHERE title = 'a101';
class id title
CREATE TABLE t_part (
class INT ,
id INT ,
title VARCHAR(30)
) ENGINE=InnoDB
PARTITION BY RANGE(id)
SUBPARTITION BY KEY(id)
SUBPARTITIONS 4
(
PARTITION p0 VALUES LESS THAN (5000),
PARTITION p1 VALUES LESS THAN (MAXVALUE)
);
INSERT INTO t_part SELECT * FROM t1;
ALTER TABLE t_part ADD INDEX `idx` (class,id,title(10));
SELECT * FROM t_part WHERE id = 10;
class id title
10 10 a10
SELECT * FROM t_part WHERE title = 'a10';
class id title
10 10 a10
SELECT * FROM t_part WHERE id = 20;
class id title
20 20 a20
SELECT * FROM t_part WHERE title = 'a20';
class id title
20 20 a20
SELECT * FROM t_part WHERE id = 30;
class id title
30 30 a30
SELECT * FROM t_part WHERE title = 'a30';
class id title
30 30 a30
SELECT * FROM t_part WHERE id = 101;
class id title
SELECT * FROM t_part WHERE title = 'a101';
class id title
include/sync_slave_sql_with_master.inc
connection slave;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`class` int(11) DEFAULT NULL,
`id` int(11) DEFAULT NULL,
`title` varchar(100) DEFAULT NULL,
KEY `idx_id` (`id`),
KEY `idx_title` (`title`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t_part;
Table Create Table
t_part CREATE TABLE `t_part` (
`class` int(11) DEFAULT NULL,
`id` int(11) DEFAULT NULL,
`title` varchar(30) DEFAULT NULL,
KEY `idx` (`class`,`id`,`title`(10))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
PARTITION BY RANGE (`id`)
SUBPARTITION BY KEY (`id`)
SUBPARTITIONS 4
(PARTITION `p0` VALUES LESS THAN (5000) ENGINE = InnoDB,
PARTITION `p1` VALUES LESS THAN MAXVALUE ENGINE = InnoDB)
SELECT COUNT(*) FROM t1;
COUNT(*)
97
SELECT COUNT(*) FROM t_part;
COUNT(*)
97
SELECT * FROM t1 WHERE id = 10;
class id title
10 10 a10
SELECT * FROM t1 WHERE title = 'a10';
class id title
10 10 a10
SELECT * FROM t1 WHERE id = 20;
class id title
20 20 a20
SELECT * FROM t1 WHERE title = 'a20';
class id title
20 20 a20
SELECT * FROM t1 WHERE id = 30;
class id title
30 30 a30
SELECT * FROM t1 WHERE title = 'a30';
class id title
30 30 a30
SELECT * FROM t1 WHERE id = 101;
class id title
SELECT * FROM t1 WHERE title = 'a101';
class id title
SELECT * FROM t_part WHERE id = 10;
class id title
10 10 a10
SELECT * FROM t_part WHERE title = 'a10';
class id title
10 10 a10
SELECT * FROM t_part WHERE id = 20;
class id title
20 20 a20
SELECT * FROM t_part WHERE title = 'a20';
class id title
20 20 a20
SELECT * FROM t_part WHERE id = 30;
class id title
30 30 a30
SELECT * FROM t_part WHERE title = 'a30';
class id title
30 30 a30
SELECT * FROM t_part WHERE id = 101;
class id title
SELECT * FROM t_part WHERE title = 'a101';
class id title
connection master;
DROP PROCEDURE populate_t1;
DROP TABLE t1;
DROP TABLE t_part;
include/rpl_end.inc
mysql-test/suite/innodb/r/innodb_bulk_create_index_small.result
0 → 100644
View file @
18cdc254
CREATE PROCEDURE populate_t1()
BEGIN
DECLARE i int DEFAULT 1;
START TRANSACTION;
WHILE (i <= 1000) DO
INSERT INTO t1 VALUES (i, i, CONCAT('a', i));
SET i = i + 1;
END WHILE;
COMMIT;
END|
SELECT @@innodb_fill_factor;
@@innodb_fill_factor
100
CREATE TABLE t1(
class INT,
id INT,
title VARCHAR(100)
) ENGINE=InnoDB ROW_FORMAT=COMPACT;
SELECT COUNT(*) FROM t1;
COUNT(*)
1000
/* Create index. */
CREATE INDEX idx_id ON t1(id);
CREATE INDEX idx_title ON t1(title);
/* Check table. */
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
/* Select by index. */
EXPLAIN SELECT * FROM t1 WHERE id = 10;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref idx_id idx_id 5 const 1
EXPLAIN SELECT * FROM t1 WHERE title = 'a10';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref idx_title idx_title 103 const 1 Using index condition
SELECT * FROM t1 WHERE id = 10;
class id title
10 10 a10
SELECT * FROM t1 WHERE title = 'a10';
class id title
10 10 a10
SELECT * FROM t1 WHERE id = 500;
class id title
500 500 a500
SELECT * FROM t1 WHERE title = 'a500';
class id title
500 500 a500
SELECT * FROM t1 WHERE id = 1000;
class id title
1000 1000 a1000
SELECT * FROM t1 WHERE title = 'a1000';
class id title
1000 1000 a1000
SELECT * FROM t1 WHERE id = 1010;
class id title
SELECT * FROM t1 WHERE title = 'a1010';
class id title
DROP TABLE t1;
CREATE TABLE t1(
a INT PRIMARY KEY,
b TEXT,
c TEXT) ENGINE=InnoDB ROW_FORMAT=COMPACT;
INSERT INTO t1 VALUES
(1, REPEAT('a',10000), 'a'),
(2, REPEAT('b',20000), 'b'),
(3, REPEAT('c',40000), 'c'),
(4, REPEAT('d',60000), 'd');
ALTER TABLE t1 DROP COLUMN c;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT CHAR_LENGTH(b) FROM t1 WHERE a=4975;
CHAR_LENGTH(b)
DROP TABLE t1;
SET GLOBAL innodb_file_per_table=default;
SET GLOBAL innodb_file_per_table=1;
CREATE TABLE t1(
class INT,
id INT,
title VARCHAR(100)
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
SELECT COUNT(*) FROM t1;
COUNT(*)
1000
/* Create index. */
CREATE INDEX idx_id ON t1(id);
CREATE INDEX idx_title ON t1(title);
/* Check table. */
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
/* Select by index. */
EXPLAIN SELECT * FROM t1 WHERE id = 10;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref idx_id idx_id 5 const 1
EXPLAIN SELECT * FROM t1 WHERE title = 'a10';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref idx_title idx_title 103 const 1 Using index condition
SELECT * FROM t1 WHERE id = 10;
class id title
10 10 a10
SELECT * FROM t1 WHERE title = 'a10';
class id title
10 10 a10
SELECT * FROM t1 WHERE id = 500;
class id title
500 500 a500
SELECT * FROM t1 WHERE title = 'a500';
class id title
500 500 a500
SELECT * FROM t1 WHERE id = 1000;
class id title
1000 1000 a1000
SELECT * FROM t1 WHERE title = 'a1000';
class id title
1000 1000 a1000
SELECT * FROM t1 WHERE id = 1010;
class id title
SELECT * FROM t1 WHERE title = 'a1010';
class id title
DROP TABLE t1;
CREATE TABLE t1(
a INT PRIMARY KEY,
b TEXT,
c TEXT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
INSERT INTO t1 VALUES
(1, REPEAT('a',10000), 'a'),
(2, REPEAT('b',20000), 'b'),
(3, REPEAT('c',40000), 'c'),
(4, REPEAT('d',60000), 'd');
ALTER TABLE t1 DROP COLUMN c;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT CHAR_LENGTH(b) FROM t1 WHERE a=4975;
CHAR_LENGTH(b)
DROP TABLE t1;
SET GLOBAL innodb_file_per_table=default;
DROP PROCEDURE populate_t1;
mysql-test/suite/innodb/t/innodb_bulk_create_index.test
0 → 100644
View file @
18cdc254
######## suite/innodb/t/innodb_bulk_create_index.test #####
# #
# Testcase for worklog WL#7277: InnoDB: Bulk Load for Create Index #
# The basic idea of bulk load is to build an index from bottom up #
# (also known as sorted index build). #
# Earlier index was create by repeatedly inserting records #
# Test scenario : #
# - Run bulk create index on 10K rows #
# - Run bulk create index on table with various row types #
# - Run DML and SELECT after bulk index creation #
# Creation: #
# 2014-06-19 Implemented this test as part of WL#7277 #
# #
######################################################################
--
source
include
/
not_embedded
.
inc
--
source
include
/
innodb_page_size_small
.
inc
--
source
include
/
big_test
.
inc
# Test Row Format: REDUNDANT.
let
$row_format
=
REDUNDANT
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index
.
inc
# Test Row Format: COMPACT.
let
$row_format
=
COMPACT
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index
.
inc
# Test Row Format: DYNAMIC.
let
$row_format
=
DYNAMIC
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index
.
inc
# Test Row Format: COMPRESSED.
let
$row_format
=
COMPRESSED
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index
.
inc
# Test Fill Factor: 10
let
$row_format
=
COMPACT
;
SET
GLOBAL
innodb_fill_factor
=
10
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index
.
inc
# Test Fill Factor: 50
let
$row_format
=
COMPACT
;
SET
GLOBAL
innodb_fill_factor
=
50
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index
.
inc
SET
GLOBAL
innodb_fill_factor
=
default
;
mysql-test/suite/innodb/t/innodb_bulk_create_index_debug.test
0 → 100644
View file @
18cdc254
#
# wl#7277: InnoDB: Bulk Load for Create Index
#
# Test Restart & Crash Recovery.
--
source
include
/
big_test
.
inc
--
source
include
/
innodb_page_size_small
.
inc
# Test Row Format: REDUNDANT.
let
$row_format
=
REDUNDANT
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index_debug
.
inc
# Test Row Format: COMPACT.
let
$row_format
=
COMPACT
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index_debug
.
inc
# Test Row Format: DYNAMIC.
let
$row_format
=
DYNAMIC
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index_debug
.
inc
# Test Row Format: COMPRESSED.
let
$row_format
=
COMPRESSED
;
--
source
suite
/
innodb
/
include
/
innodb_bulk_create_index_debug
.
inc
mysql-test/suite/innodb/t/innodb_bulk_create_index_flush.test
0 → 100644
View file @
18cdc254
#
# Test flush on error in bulk load to make sure we do a proper cleanup.
# Note: We flush all dirty pages before applying any online log in bulk load.
#
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_debug
.
inc
# Create Insert Procedure
DELIMITER
|
;
CREATE
PROCEDURE
populate_t1
()
BEGIN
DECLARE
i
int
DEFAULT
1
;
START
TRANSACTION
;
WHILE
(
i
<=
10000
)
DO
INSERT
INTO
t1
VALUES
(
i
,
i
,
CONCAT
(
'a'
,
i
));
SET
i
=
i
+
1
;
END
WHILE
;
COMMIT
;
END
|
DELIMITER
;
|
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
;
--
disable_query_log
CALL
populate_t1
();
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
SET
@
saved_dbug
=
@@
SESSION
.
debug_dbug
;
SET
debug_dbug
=
'+d,ib_index_build_fail_before_flush'
;
--
error
ER_QUERY_INTERRUPTED
CREATE
INDEX
idx_id
ON
t1
(
id
);
CHECK
TABLE
t1
;
--
error
ER_QUERY_INTERRUPTED
CREATE
INDEX
idx_title
ON
t1
(
title
);
CHECK
TABLE
t1
;
--
error
ER_QUERY_INTERRUPTED
CREATE
FULLTEXT
INDEX
fidx_title
ON
t1
(
title
);
CHECK
TABLE
t1
;
--
error
ER_QUERY_INTERRUPTED
ALTER
TABLE
t1
ADD
COLUMN
content
TEXT
;
CHECK
TABLE
t1
;
SET
debug_dbug
=
@
saved_dbug
;
INSERT
INTO
t1
VALUES
(
10001
,
10001
,
'a10000'
);
--
error
ER_DUP_ENTRY
ALTER
TABLE
t1
ADD
UNIQUE
INDEX
idx_title
(
title
);
CHECK
TABLE
t1
;
--
error
ER_DUP_ENTRY
ALTER
TABLE
t1
ADD
UNIQUE
INDEX
idx_id
(
id
),
ADD
UNIQUE
INDEX
idx_title
(
title
);
CHECK
TABLE
t1
;
DROP
TABLE
t1
;
DROP
PROCEDURE
populate_t1
;
mysql-test/suite/innodb/t/innodb_bulk_create_index_replication.test
0 → 100644
View file @
18cdc254
######## suite/innodb/t/innodb_wl7277_1.test #####
# #
# Testcase for worklog WL#7277: InnoDB: Bulk Load for Create Index #
# The basic idea of bulk load is to build an index from bottom up #
# (also known as sorted index build). #
# Earlier index was create by repeatedly inserting records #
# Test scenario : #
# - Run bulk create index on replication setup #
# - Run bulk create on partitioned table and see its replictaed #
# to slave #
# Creation: #
# 2014-06-19 Implemented this test as part of WL#7277 #
# #
######################################################################
--
source
include
/
not_embedded
.
inc
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_partition
.
inc
--
source
include
/
master
-
slave
.
inc
--
connection
master
# Create Insert Procedure
DELIMITER
|
;
CREATE
PROCEDURE
populate_t1
(
load_even
INT
)
BEGIN
DECLARE
i
int
DEFAULT
1
;
START
TRANSACTION
;
WHILE
(
i
<=
100
)
DO
IF
i
%
2
=
0
AND
load_even
=
1
THEN
INSERT
INTO
t1
VALUES
(
i
,
i
,
CONCAT
(
'a'
,
i
));
END
IF
;
IF
i
%
2
!=
0
AND
load_even
!=
1
THEN
INSERT
INTO
t1
VALUES
(
i
,
i
,
CONCAT
(
'a'
,
i
));
END
IF
;
SET
i
=
i
+
1
;
END
WHILE
;
COMMIT
;
END
|
DELIMITER
;
|
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
;
--
disable_query_log
# Load half records
CALL
populate_t1
(
1
);
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
/* Create index. */
CREATE
INDEX
idx_id
ON
t1
(
id
);
CREATE
INDEX
idx_title
ON
t1
(
title
);
/* Select by index. */
EXPLAIN
SELECT
*
FROM
t1
WHERE
id
=
10
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
20
;
SELECT
*
FROM
t1
WHERE
title
=
'a20'
;
SELECT
*
FROM
t1
WHERE
id
=
30
;
SELECT
*
FROM
t1
WHERE
title
=
'a30'
;
SELECT
*
FROM
t1
WHERE
id
=
101
;
SELECT
*
FROM
t1
WHERE
title
=
'a101'
;
/*Insert/Update/Delete. */
DELETE
FROM
t1
WHERE
id
<
40
AND
id
>
30
;
INSERT
INTO
t1
VALUES
(
38
,
38
,
'b38'
);
UPDATE
t1
SET
title
=
CONCAT
(
'b'
,
id
)
WHERE
id
<
30
AND
id
>
20
;
SELECT
*
FROM
t1
WHERE
id
=
28
;
SELECT
*
FROM
t1
WHERE
title
=
'a28'
;
SELECT
*
FROM
t1
WHERE
title
=
'b28'
;
SELECT
*
FROM
t1
WHERE
id
=
38
;
SELECT
*
FROM
t1
WHERE
title
=
'a38'
;
SELECT
*
FROM
t1
WHERE
title
=
'b38'
;
SELECT
*
FROM
t1
WHERE
id
=
101
;
SELECT
*
FROM
t1
WHERE
title
=
'a101'
;
--
disable_query_log
# Load half records (follow up load)
CALL
populate_t1
(
0
);
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
20
;
SELECT
*
FROM
t1
WHERE
title
=
'a20'
;
SELECT
*
FROM
t1
WHERE
id
=
30
;
SELECT
*
FROM
t1
WHERE
title
=
'a30'
;
SELECT
*
FROM
t1
WHERE
id
=
101
;
SELECT
*
FROM
t1
WHERE
title
=
'a101'
;
# Create partition table
CREATE
TABLE
t_part
(
class
INT
,
id
INT
,
title
VARCHAR
(
30
)
)
ENGINE
=
InnoDB
PARTITION
BY
RANGE
(
id
)
SUBPARTITION
BY
KEY
(
id
)
SUBPARTITIONS
4
(
PARTITION
p0
VALUES
LESS
THAN
(
5000
),
PARTITION
p1
VALUES
LESS
THAN
(
MAXVALUE
)
);
INSERT
INTO
t_part
SELECT
*
FROM
t1
;
ALTER
TABLE
t_part
ADD
INDEX
`idx`
(
class
,
id
,
title
(
10
));
SELECT
*
FROM
t_part
WHERE
id
=
10
;
SELECT
*
FROM
t_part
WHERE
title
=
'a10'
;
SELECT
*
FROM
t_part
WHERE
id
=
20
;
SELECT
*
FROM
t_part
WHERE
title
=
'a20'
;
SELECT
*
FROM
t_part
WHERE
id
=
30
;
SELECT
*
FROM
t_part
WHERE
title
=
'a30'
;
SELECT
*
FROM
t_part
WHERE
id
=
101
;
SELECT
*
FROM
t_part
WHERE
title
=
'a101'
;
--
source
include
/
sync_slave_sql_with_master
.
inc
--
connection
slave
SHOW
CREATE
TABLE
t1
;
SHOW
CREATE
TABLE
t_part
;
SELECT
COUNT
(
*
)
FROM
t1
;
SELECT
COUNT
(
*
)
FROM
t_part
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
20
;
SELECT
*
FROM
t1
WHERE
title
=
'a20'
;
SELECT
*
FROM
t1
WHERE
id
=
30
;
SELECT
*
FROM
t1
WHERE
title
=
'a30'
;
SELECT
*
FROM
t1
WHERE
id
=
101
;
SELECT
*
FROM
t1
WHERE
title
=
'a101'
;
SELECT
*
FROM
t_part
WHERE
id
=
10
;
SELECT
*
FROM
t_part
WHERE
title
=
'a10'
;
SELECT
*
FROM
t_part
WHERE
id
=
20
;
SELECT
*
FROM
t_part
WHERE
title
=
'a20'
;
SELECT
*
FROM
t_part
WHERE
id
=
30
;
SELECT
*
FROM
t_part
WHERE
title
=
'a30'
;
SELECT
*
FROM
t_part
WHERE
id
=
101
;
SELECT
*
FROM
t_part
WHERE
title
=
'a101'
;
--
connection
master
DROP
PROCEDURE
populate_t1
;
DROP
TABLE
t1
;
DROP
TABLE
t_part
;
--
source
include
/
rpl_end
.
inc
mysql-test/suite/innodb/t/innodb_bulk_create_index_small.test
0 → 100644
View file @
18cdc254
#
# wl#7277: InnoDB: Bulk Load for Create Index
#
--
source
include
/
innodb_page_size_small
.
inc
# Create Insert Procedure
DELIMITER
|
;
CREATE
PROCEDURE
populate_t1
()
BEGIN
DECLARE
i
int
DEFAULT
1
;
START
TRANSACTION
;
WHILE
(
i
<=
1000
)
DO
INSERT
INTO
t1
VALUES
(
i
,
i
,
CONCAT
(
'a'
,
i
));
SET
i
=
i
+
1
;
END
WHILE
;
COMMIT
;
END
|
DELIMITER
;
|
SELECT
@@
innodb_fill_factor
;
# Test Compact Table
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
COMPACT
;
--
disable_query_log
CALL
populate_t1
();
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
/* Create index. */
CREATE
INDEX
idx_id
ON
t1
(
id
);
CREATE
INDEX
idx_title
ON
t1
(
title
);
/* Check table. */
CHECK
TABLE
t1
;
/* Select by index. */
EXPLAIN
SELECT
*
FROM
t1
WHERE
id
=
10
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
500
;
SELECT
*
FROM
t1
WHERE
title
=
'a500'
;
SELECT
*
FROM
t1
WHERE
id
=
1000
;
SELECT
*
FROM
t1
WHERE
title
=
'a1000'
;
SELECT
*
FROM
t1
WHERE
id
=
1010
;
SELECT
*
FROM
t1
WHERE
title
=
'a1010'
;
DROP
TABLE
t1
;
# Test Blob
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
TEXT
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
COMPACT
;
INSERT
INTO
t1
VALUES
(
1
,
REPEAT
(
'a'
,
10000
),
'a'
),
(
2
,
REPEAT
(
'b'
,
20000
),
'b'
),
(
3
,
REPEAT
(
'c'
,
40000
),
'c'
),
(
4
,
REPEAT
(
'd'
,
60000
),
'd'
);
ALTER
TABLE
t1
DROP
COLUMN
c
;
CHECK
TABLE
t1
;
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
WHERE
a
=
4975
;
DROP
TABLE
t1
;
SET
GLOBAL
innodb_file_per_table
=
default
;
# Test Compressed Table
SET
GLOBAL
innodb_file_per_table
=
1
;
CREATE
TABLE
t1
(
class
INT
,
id
INT
,
title
VARCHAR
(
100
)
)
ENGINE
=
InnoDB
ROW_FORMAT
=
COMPRESSED
KEY_BLOCK_SIZE
=
4
;
--
disable_query_log
CALL
populate_t1
();
--
enable_query_log
SELECT
COUNT
(
*
)
FROM
t1
;
/* Create index. */
CREATE
INDEX
idx_id
ON
t1
(
id
);
CREATE
INDEX
idx_title
ON
t1
(
title
);
/* Check table. */
CHECK
TABLE
t1
;
/* Select by index. */
EXPLAIN
SELECT
*
FROM
t1
WHERE
id
=
10
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
10
;
SELECT
*
FROM
t1
WHERE
title
=
'a10'
;
SELECT
*
FROM
t1
WHERE
id
=
500
;
SELECT
*
FROM
t1
WHERE
title
=
'a500'
;
SELECT
*
FROM
t1
WHERE
id
=
1000
;
SELECT
*
FROM
t1
WHERE
title
=
'a1000'
;
SELECT
*
FROM
t1
WHERE
id
=
1010
;
SELECT
*
FROM
t1
WHERE
title
=
'a1010'
;
DROP
TABLE
t1
;
# Test Compression & Blob
CREATE
TABLE
t1
(
a
INT
PRIMARY
KEY
,
b
TEXT
,
c
TEXT
)
ENGINE
=
InnoDB
ROW_FORMAT
=
COMPRESSED
KEY_BLOCK_SIZE
=
4
;
INSERT
INTO
t1
VALUES
(
1
,
REPEAT
(
'a'
,
10000
),
'a'
),
(
2
,
REPEAT
(
'b'
,
20000
),
'b'
),
(
3
,
REPEAT
(
'c'
,
40000
),
'c'
),
(
4
,
REPEAT
(
'd'
,
60000
),
'd'
);
ALTER
TABLE
t1
DROP
COLUMN
c
;
CHECK
TABLE
t1
;
SELECT
CHAR_LENGTH
(
b
)
FROM
t1
WHERE
a
=
4975
;
DROP
TABLE
t1
;
SET
GLOBAL
innodb_file_per_table
=
default
;
DROP
PROCEDURE
populate_t1
;
storage/innobase/row/row0merge.cc
View file @
18cdc254
...
...
@@ -5024,7 +5024,7 @@ row_merge_build_indexes(
ut_ad
(
need_flush_observer
);
DBUG_EXECUTE_IF
(
"ib_index_build_fail_before_flush"
,
error
=
DB_
FAIL
;
error
=
DB_
INTERRUPTED
;
);
if
(
error
!=
DB_SUCCESS
)
{
...
...
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