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
6f854d7c
Commit
6f854d7c
authored
Nov 28, 2022
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.7 into 10.8
parents
035c4dd3
f124d71a
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
188 additions
and
162 deletions
+188
-162
mysql-test/main/query_cache_notembedded.result
mysql-test/main/query_cache_notembedded.result
+21
-0
mysql-test/main/query_cache_notembedded.test
mysql-test/main/query_cache_notembedded.test
+27
-0
mysql-test/suite/binlog/r/binlog_checkpoint.result
mysql-test/suite/binlog/r/binlog_checkpoint.result
+3
-22
mysql-test/suite/binlog/t/binlog_checkpoint.test
mysql-test/suite/binlog/t/binlog_checkpoint.test
+17
-1
mysql-test/suite/encryption/r/innodb_encrypt_log_corruption.result
...t/suite/encryption/r/innodb_encrypt_log_corruption.result
+8
-0
mysql-test/suite/innodb/r/log_corruption.result
mysql-test/suite/innodb/r/log_corruption.result
+8
-0
mysql-test/suite/innodb/t/log_corruption.test
mysql-test/suite/innodb/t/log_corruption.test
+37
-0
plugin/password_reuse_check/CMakeLists.txt
plugin/password_reuse_check/CMakeLists.txt
+2
-1
sql/share/errmsg-utf8.txt
sql/share/errmsg-utf8.txt
+2
-2
sql/sql_cache.cc
sql/sql_cache.cc
+7
-9
sql/sql_cache.h
sql/sql_cache.h
+2
-3
sql/sql_table.cc
sql/sql_table.cc
+4
-2
storage/innobase/buf/buf0dump.cc
storage/innobase/buf/buf0dump.cc
+0
-73
storage/innobase/buf/buf0lru.cc
storage/innobase/buf/buf0lru.cc
+7
-9
storage/innobase/dict/dict0boot.cc
storage/innobase/dict/dict0boot.cc
+12
-11
storage/innobase/ibuf/ibuf0ibuf.cc
storage/innobase/ibuf/ibuf0ibuf.cc
+22
-14
storage/innobase/include/univ.i
storage/innobase/include/univ.i
+0
-9
storage/innobase/log/log0recv.cc
storage/innobase/log/log0recv.cc
+1
-1
storage/innobase/mtr/mtr0mtr.cc
storage/innobase/mtr/mtr0mtr.cc
+2
-2
storage/innobase/srv/srv0start.cc
storage/innobase/srv/srv0start.cc
+2
-1
storage/maria/ma_control_file.c
storage/maria/ma_control_file.c
+4
-2
No files found.
mysql-test/main/query_cache_notembedded.result
View file @
6f854d7c
...
...
@@ -462,6 +462,27 @@ flush query cache|
delete from t1|
drop procedure bug3583|
drop table t1|
#
# MDEV-29760 DROP DATABASE hangs when particular query cache is present
#
create table t1 (id int);
create table t2 like t1;
create table t3 like t1;
create database d;
create table d.t1 like test.t1;
create table d.t2 like test.t2;
set LOCAL query_cache_type=ON;
select id from t3;
id
select 'x' a, 'y' b from d.t1;
a b
select 'x' a, 'y' b from d.t1, d.t2;
a b
drop database d;
drop table t1, t2, t3;
#
# End of 10.5 tests
#
SET GLOBAL query_cache_size=@query_cache_size_save;
SET GLOBAL query_cache_type=@query_cache_type_save;
set GLOBAL sql_mode=@sql_mode_save;
mysql-test/main/query_cache_notembedded.test
View file @
6f854d7c
...
...
@@ -325,6 +325,33 @@ drop procedure bug3583|
drop
table
t1
|
delimiter
;
|
--
echo
#
--
echo
# MDEV-29760 DROP DATABASE hangs when particular query cache is present
--
echo
#
create
table
t1
(
id
int
);
create
table
t2
like
t1
;
create
table
t3
like
t1
;
create
database
d
;
create
table
d
.
t1
like
test
.
t1
;
create
table
d
.
t2
like
test
.
t2
;
set
LOCAL
query_cache_type
=
ON
;
select
id
from
t3
;
select
'x'
a
,
'y'
b
from
d
.
t1
;
select
'x'
a
,
'y'
b
from
d
.
t1
,
d
.
t2
;
drop
database
d
;
drop
table
t1
,
t2
,
t3
;
--
echo
#
--
echo
# End of 10.5 tests
--
echo
#
# Wait till we reached the initial number of concurrent sessions
--
source
include
/
wait_until_count_sessions
.
inc
SET
GLOBAL
query_cache_size
=@
query_cache_size_save
;
...
...
mysql-test/suite/binlog/r/binlog_checkpoint.result
View file @
6f854d7c
...
...
@@ -164,28 +164,9 @@ connection default;
SET GLOBAL debug_dbug="+d,only_kill_system_threads_no_loop";
# restart
** Proof of shutdown caused ROLLBACK-completed transaction
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000002 # Gtid_list # # []
master-bin.000002 # Binlog_checkpoint # # master-bin.000001
master-bin.000002 # Binlog_checkpoint # # master-bin.000002
master-bin.000002 # Gtid # # GTID #-#-#
master-bin.000002 # Query # # use `test`; CREATE TABLE tm (a INT) ENGINE = myisam
master-bin.000002 # Gtid # # BEGIN GTID #-#-#
master-bin.000002 # Query # # use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Table \'./test/tm\' is marked as crashed' COLLATE 'latin1_swedish_ci'))
master-bin.000002 # Query # # COMMIT
master-bin.000002 # Gtid # # BEGIN GTID #-#-#
master-bin.000002 # Query # # use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Checking table' COLLATE 'latin1_swedish_ci'))
master-bin.000002 # Query # # COMMIT
master-bin.000002 # Gtid # # BEGIN GTID #-#-#
master-bin.000002 # Query # # use `test`; INSERT INTO tm SET a = 1
master-bin.000002 # Query # # COMMIT
master-bin.000002 # Gtid # # BEGIN GTID #-#-#
master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (2, 1)
master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (3, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
master-bin.000002 # Query # # ROLLBACK
master-bin.000002 # Rotate # # master-bin.000003;pos=POS
# MYSQL_BINLOG datadir/binlog_file --result-file=assert_file
include/assert_grep.inc [No XA statements should be written into the binary log]
include/assert_grep.inc [The transaction should be rolled back]
SELECT * FROM tm;
a
1
...
...
mysql-test/suite/binlog/t/binlog_checkpoint.test
View file @
6f854d7c
...
...
@@ -212,7 +212,23 @@ XA END 'xa1';
--source include/start_mysqld.inc
--echo ** Proof of shutdown caused ROLLBACK-completed transaction
--
source
include
/
show_binlog_events
.
inc
--let assert_file=$MYSQLTEST_VARDIR/tmp/binlog_decoded.out
--let datadir=`
select
@@
datadir
`
--
echo
# MYSQL_BINLOG datadir/binlog_file --result-file=assert_file
--
exec
$MYSQL_BINLOG
$datadir
/
$binlog_file
--
result
-
file
=
$assert_file
--
let
$assert_text
=
No
XA
statements
should
be
written
into
the
binary
log
--
let
$assert_count
=
0
--
let
assert_select
=
XA
START
|
XA
END
|
XA
PREPARE
|
XA
COMMIT
|
XA
ROLLBACK
--
source
include
/
assert_grep
.
inc
--
let
$assert_text
=
The
transaction
should
be
rolled
back
--
let
$assert_count
=
1
--
let
assert_select
=
^
ROLLBACK
\$
--
source
include
/
assert_grep
.
inc
SELECT
*
FROM
tm
;
--
eval
SELECT
*
FROM
t1
WHERE
a
=
$a
...
...
mysql-test/suite/encryption/r/innodb_encrypt_log_corruption.result
View file @
6f854d7c
...
...
@@ -190,6 +190,14 @@ AND support IN ('YES', 'DEFAULT', 'ENABLED');
COUNT(*)
1
FOUND 4 /InnoDB: Upgrading redo log:/ in mysqld.1.err
# Empty large multi-file redo log from after MariaDB 10.2.2
# restart: --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-force-recovery=5 --innodb-log-file-size=4m
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
COUNT(*)
1
FOUND 5 /InnoDB: Upgrading redo log:/ in mysqld.1.err
# Minimal MariaDB 10.1.21 encrypted redo log
# restart: --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-force-recovery=5
SELECT COUNT(*) `1` FROM INFORMATION_SCHEMA.ENGINES WHERE engine='innodb'
...
...
mysql-test/suite/innodb/r/log_corruption.result
View file @
6f854d7c
...
...
@@ -190,6 +190,14 @@ AND support IN ('YES', 'DEFAULT', 'ENABLED');
COUNT(*)
1
FOUND 4 /InnoDB: Upgrading redo log:/ in mysqld.1.err
# Empty large multi-file redo log from after MariaDB 10.2.2
# restart: --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-force-recovery=5 --innodb-log-file-size=4m
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
COUNT(*)
1
FOUND 5 /InnoDB: Upgrading redo log:/ in mysqld.1.err
# Minimal MariaDB 10.1.21 encrypted redo log
# restart: --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/log_corruption --innodb-force-recovery=5
SELECT * FROM INFORMATION_SCHEMA.ENGINES
...
...
mysql-test/suite/innodb/t/log_corruption.test
View file @
6f854d7c
...
...
@@ -18,6 +18,7 @@ call mtr.add_suppression("InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE bef
call
mtr
.
add_suppression
(
"InnoDB: Obtaining redo log encryption key version 1 failed"
);
call
mtr
.
add_suppression
(
"InnoDB: Decrypting checkpoint failed"
);
call
mtr
.
add_suppression
(
"InnoDB: Log file .*ib_logfile1 is of different size 2097152 bytes than other log files (1048576|4194304) bytes!"
);
call
mtr
.
add_suppression
(
"InnoDB: The change buffer is corrupted"
);
--
enable_query_log
let
bugdir
=
$MYSQLTEST_VARDIR
/
tmp
/
log_corruption
;
...
...
@@ -606,6 +607,42 @@ AND support IN ('YES', 'DEFAULT', 'ENABLED');
--
let
SEARCH_PATTERN
=
InnoDB
:
Upgrading
redo
log
:
--
source
include
/
search_pattern_in_file
.
inc
--
echo
# Empty large multi-file redo log from after MariaDB 10.2.2
perl
;
do
"
$ENV
{
MTR_SUITE_DIR
}
/../innodb/include/crc32.pl"
;
my
$polynomial
=
0x82f63b78
;
# CRC-32C
die
unless
open
OUT
,
"+<"
,
"
$ENV
{
bugdir
}
/ib_logfile0"
;
binmode
OUT
;
$_
=
pack
(
"Nx[5]nx[5]"
,
1
,
0x1286
)
.
"BogoDB 4.3.2.1"
.
chr
(
0
)
x
478
;
print
OUT
$_
,
pack
(
"N"
,
mycrc32
(
$_
,
0
,
$polynomial
));
# checkpoint page 1 and all-zero checkpoint 2
$_
=
pack
(
"x[13]nCNNx[484]"
,
0x1286
,
12
,
2
,
0x80c
);
print
OUT
$_
,
pack
(
"N"
,
mycrc32
(
$_
,
0
,
$polynomial
));
print
OUT
chr
(
0
)
x
1024
;
die
unless
seek
(
OUT
,
0x1FFFFFFFF
,
0
);
print
OUT
chr
(
0
);
close
OUT
or
die
;
die
unless
open
OUT
,
">"
,
"
$ENV
{
bugdir
}
/ib_logfile1"
;
binmode
OUT
;
die
unless
seek
(
OUT
,
0x800
,
0
);
# the first 2048 bytes are unused!
$_
=
pack
(
"Nnnx[500]"
,
0x80000944
,
12
,
12
);
print
OUT
$_
,
pack
(
"N"
,
mycrc32
(
$_
,
0
,
$polynomial
));
die
unless
seek
(
OUT
,
0x1FFFFFFFF
,
0
);
print
OUT
chr
(
0
);
close
OUT
or
die
;
EOF
--
let
$restart_parameters
=
$dirs
--
innodb
-
force
-
recovery
=
5
--
innodb
-
log
-
file
-
size
=
4
m
--
source
include
/
start_mysqld
.
inc
SELECT
COUNT
(
*
)
FROM
INFORMATION_SCHEMA
.
ENGINES
WHERE
engine
=
'innodb'
AND
support
IN
(
'YES'
,
'DEFAULT'
,
'ENABLED'
);
--
source
include
/
shutdown_mysqld
.
inc
--
let
SEARCH_PATTERN
=
InnoDB
:
Upgrading
redo
log
:
--
source
include
/
search_pattern_in_file
.
inc
--
let
$restart_parameters
=
$dirs
--
echo
# Minimal MariaDB 10.1.21 encrypted redo log
perl
;
die
unless
open
OUT
,
"+<"
,
"
$ENV
{
bugdir
}
/ib_logfile0"
;
...
...
plugin/password_reuse_check/CMakeLists.txt
View file @
6f854d7c
MYSQL_ADD_PLUGIN
(
password_reuse_check password_reuse_check.c
)
MYSQL_ADD_PLUGIN
(
password_reuse_check password_reuse_check.c
RECOMPILE_FOR_EMBEDDED
)
sql/share/errmsg-utf8.txt
View file @
6f854d7c
...
...
@@ -9773,9 +9773,9 @@ ER_UNUSED_23
spa "Nunca debería vd de ver esto"
ER_PARTITION_WRONG_TYPE
chi "错误
的分区类型,预期类型:%`s for partitioning by
%`s"
chi "错误
分区类型%`s,应当是
%`s"
eng "Wrong partition type %`s for partitioning by %`s"
spa "Tipo de partición equivocada
, tipo esperado: %`s for partitioning by
%`s"
spa "Tipo de partición equivocada
%`s para particionado mediante
%`s"
WARN_VERS_PART_FULL
chi "版本化表%`s.%`s:partition%`s已满,添加更多历史分区(out of %s)"
...
...
sql/sql_cache.cc
View file @
6f854d7c
...
...
@@ -2131,8 +2131,7 @@ def_week_frmt: %zu, in_trans: %d, autocommit: %d",
(
"Handler require invalidation queries of %.*s %llu-%llu"
,
(
int
)
qcache_se_key_len
,
qcache_se_key_name
,
engine_data
,
table
->
engine_data
()));
invalidate_table_internal
(
thd
,
(
uchar
*
)
table
->
db
(),
invalidate_table_internal
((
uchar
*
)
table
->
db
(),
table
->
key_length
());
}
else
...
...
@@ -2381,7 +2380,7 @@ void Query_cache::invalidate(THD *thd, const char *db)
if
(
strcmp
(
table
->
db
(),
db
)
==
0
)
{
Query_cache_block_table
*
list_root
=
table_block
->
table
(
0
);
invalidate_query_block_list
(
thd
,
list_root
);
invalidate_query_block_list
(
list_root
);
}
table_block
=
next
;
...
...
@@ -3320,7 +3319,7 @@ void Query_cache::invalidate_table(THD *thd, uchar * key, size_t key_length)
DEBUG_SYNC
(
thd
,
"wait_in_query_cache_invalidate2"
);
if
(
query_cache_size
>
0
)
invalidate_table_internal
(
thd
,
key
,
key_length
);
invalidate_table_internal
(
key
,
key_length
);
unlock
();
}
...
...
@@ -3335,14 +3334,14 @@ void Query_cache::invalidate_table(THD *thd, uchar * key, size_t key_length)
*/
void
Query_cache
::
invalidate_table_internal
(
THD
*
thd
,
uchar
*
key
,
size_t
key_length
)
Query_cache
::
invalidate_table_internal
(
uchar
*
key
,
size_t
key_length
)
{
Query_cache_block
*
table_block
=
(
Query_cache_block
*
)
my_hash_search
(
&
tables
,
key
,
key_length
);
if
(
table_block
)
{
Query_cache_block_table
*
list_root
=
table_block
->
table
(
0
);
invalidate_query_block_list
(
thd
,
list_root
);
invalidate_query_block_list
(
list_root
);
}
}
...
...
@@ -3359,8 +3358,7 @@ Query_cache::invalidate_table_internal(THD *thd, uchar *key, size_t key_length)
*/
void
Query_cache
::
invalidate_query_block_list
(
THD
*
thd
,
Query_cache_block_table
*
list_root
)
Query_cache
::
invalidate_query_block_list
(
Query_cache_block_table
*
list_root
)
{
while
(
list_root
->
next
!=
list_root
)
{
...
...
@@ -3544,7 +3542,7 @@ Query_cache::insert_table(THD *thd, size_t key_len, const char *key,
*/
{
Query_cache_block_table
*
list_root
=
table_block
->
table
(
0
);
invalidate_query_block_list
(
thd
,
list_root
);
invalidate_query_block_list
(
list_root
);
}
table_block
=
0
;
...
...
sql/sql_cache.h
View file @
6f854d7c
...
...
@@ -319,7 +319,7 @@ class Query_cache
Cache_staus
m_cache_status
;
void
free_query_internal
(
Query_cache_block
*
point
);
void
invalidate_table_internal
(
THD
*
thd
,
uchar
*
key
,
size_t
key_length
);
void
invalidate_table_internal
(
uchar
*
key
,
size_t
key_length
);
protected:
/*
...
...
@@ -375,8 +375,7 @@ class Query_cache
void
invalidate_table
(
THD
*
thd
,
TABLE
*
table
);
void
invalidate_table
(
THD
*
thd
,
uchar
*
key
,
size_t
key_length
);
void
invalidate_table
(
THD
*
thd
,
Query_cache_block
*
table_block
);
void
invalidate_query_block_list
(
THD
*
thd
,
Query_cache_block_table
*
list_root
);
void
invalidate_query_block_list
(
Query_cache_block_table
*
list_root
);
TABLE_COUNTER_TYPE
register_tables_from_list
(
THD
*
thd
,
TABLE_LIST
*
tables_used
,
...
...
sql/sql_table.cc
View file @
6f854d7c
...
...
@@ -1830,13 +1830,16 @@ int mysql_rm_table_no_locks(THD *thd, TABLE_LIST *tables,
}
error
=
thd
->
is_error
();
if
(
non_temp_tables_count
)
query_cache_invalidate3
(
thd
,
tables
,
0
);
/*
We are always logging drop of temporary tables.
The reason is to handle the following case:
- Use statement based replication
- CREATE TEMPORARY TABLE foo (logged)
- set row based replication
- DROP TEMPORA
Y TABLE foo
(needs to be logged)
- DROP TEMPORA
RY TABLE foo
(needs to be logged)
This should be fixed so that we remember if creation of the
temporary table was logged and only log it if the creation was
logged.
...
...
@@ -1848,7 +1851,6 @@ int mysql_rm_table_no_locks(THD *thd, TABLE_LIST *tables,
if
(
non_trans_tmp_table_deleted
||
trans_tmp_table_deleted
)
thd
->
transaction
->
stmt
.
mark_dropped_temp_table
();
query_cache_invalidate3
(
thd
,
tables
,
0
);
if
(
!
dont_log_query
&&
mysql_bin_log
.
is_open
())
{
debug_crash_here
(
"ddl_log_drop_before_binlog"
);
...
...
storage/innobase/buf/buf0dump.cc
View file @
6f854d7c
...
...
@@ -415,73 +415,6 @@ buf_dump(
export_vars
.
innodb_buffer_pool_load_incomplete
=
0
;
}
/*****************************************************************//**
Artificially delay the buffer pool loading if necessary. The idea of
this function is to prevent hogging the server with IO and slowing down
too much normal client queries. */
UNIV_INLINE
void
buf_load_throttle_if_needed
(
/*========================*/
ulint
*
last_check_time
,
/*!< in/out: milliseconds since epoch
of the last time we did check if
throttling is needed, we do the check
every srv_io_capacity IO ops. */
ulint
*
last_activity_count
,
ulint
n_io
)
/*!< in: number of IO ops done since
buffer pool load has started */
{
if
(
n_io
%
srv_io_capacity
<
srv_io_capacity
-
1
)
{
return
;
}
if
(
*
last_check_time
==
0
||
*
last_activity_count
==
0
)
{
*
last_check_time
=
ut_time_ms
();
*
last_activity_count
=
srv_get_activity_count
();
return
;
}
/* srv_io_capacity IO operations have been performed by buffer pool
load since the last time we were here. */
/* If no other activity, then keep going without any delay. */
if
(
srv_get_activity_count
()
==
*
last_activity_count
)
{
return
;
}
/* There has been other activity, throttle. */
ulint
now
=
ut_time_ms
();
ulint
elapsed_time
=
now
-
*
last_check_time
;
/* Notice that elapsed_time is not the time for the last
srv_io_capacity IO operations performed by BP load. It is the
time elapsed since the last time we detected that there has been
other activity. This has a small and acceptable deficiency, e.g.:
1. BP load runs and there is no other activity.
2. Other activity occurs, we run N IO operations after that and
enter here (where 0 <= N < srv_io_capacity).
3. last_check_time is very old and we do not sleep at this time, but
only update last_check_time and last_activity_count.
4. We run srv_io_capacity more IO operations and call this function
again.
5. There has been more other activity and thus we enter here.
6. Now last_check_time is recent and we sleep if necessary to prevent
more than srv_io_capacity IO operations per second.
The deficiency is that we could have slept at 3., but for this we
would have to update last_check_time before the
"cur_activity_count == *last_activity_count" check and calling
ut_time_ms() that often may turn out to be too expensive. */
if
(
elapsed_time
<
1000
/* 1 sec (1000 milli secs) */
)
{
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
1000
-
elapsed_time
));
}
*
last_check_time
=
ut_time_ms
();
*
last_activity_count
=
srv_get_activity_count
();
}
/*****************************************************************//**
Perform a buffer pool load from the file specified by
innodb_buffer_pool_filename. If any errors occur then the value of
...
...
@@ -631,9 +564,6 @@ buf_load()
std
::
sort
(
dump
,
dump
+
dump_n
);
}
ulint
last_check_time
=
0
;
ulint
last_activity_cnt
=
0
;
/* Avoid calling the expensive fil_space_t::get() for each
page within the same tablespace. dump[] is sorted by (space, page),
so all pages from a given tablespace are consecutive. */
...
...
@@ -707,9 +637,6 @@ buf_load()
return
;
}
buf_load_throttle_if_needed
(
&
last_check_time
,
&
last_activity_cnt
,
i
);
#ifdef UNIV_DEBUG
if
((
i
+
1
)
>=
srv_buf_pool_load_pages_abort
)
{
buf_load_abort_flag
=
true
;
...
...
storage/innobase/buf/buf0lru.cc
View file @
6f854d7c
...
...
@@ -190,8 +190,6 @@ LRU list. The compressed page is preserved, and it need not be clean.
@return true if freed */
static
bool
buf_LRU_free_from_unzip_LRU_list
(
ulint
limit
)
{
mysql_mutex_assert_owner
(
&
buf_pool
.
mutex
);
if
(
!
buf_LRU_evict_from_unzip_LRU
())
{
return
(
false
);
}
...
...
@@ -210,6 +208,7 @@ static bool buf_LRU_free_from_unzip_LRU_list(ulint limit)
freed
=
buf_LRU_free_page
(
&
block
->
page
,
false
);
if
(
freed
)
{
scanned
++
;
break
;
}
...
...
@@ -254,17 +253,16 @@ static bool buf_LRU_free_from_common_LRU_list(ulint limit)
}
freed
=
true
;
scanned
++
;
break
;
}
}
if
(
scanned
)
{
MONITOR_INC_VALUE_CUMULATIVE
(
MONITOR_LRU_SEARCH_SCANNED
,
MONITOR_LRU_SEARCH_SCANNED_NUM_CALL
,
MONITOR_LRU_SEARCH_SCANNED_PER_CALL
,
scanned
);
}
MONITOR_INC_VALUE_CUMULATIVE
(
MONITOR_LRU_SEARCH_SCANNED
,
MONITOR_LRU_SEARCH_SCANNED_NUM_CALL
,
MONITOR_LRU_SEARCH_SCANNED_PER_CALL
,
scanned
);
return
(
freed
);
}
...
...
storage/innobase/dict/dict0boot.cc
View file @
6f854d7c
...
...
@@ -297,9 +297,9 @@ dberr_t dict_boot()
dict_mem_index_add_field
(
index
,
"NAME"
,
0
);
index
->
id
=
DICT_TABLES_ID
;
dberr_t
erro
r
=
dict_index_add_to_cache
(
er
r
=
dict_index_add_to_cache
(
index
,
mach_read_from_4
(
dict_hdr
+
DICT_HDR_TABLES
));
ut_a
(
err
or
==
DB_SUCCESS
);
ut_a
(
err
==
DB_SUCCESS
);
ut_ad
(
!
table
->
is_instant
());
table
->
indexes
.
start
->
n_core_null_bytes
=
static_cast
<
uint8_t
>
(
UT_BITS_IN_BYTES
(
unsigned
(
table
->
indexes
.
start
->
n_nullable
)));
...
...
@@ -309,9 +309,9 @@ dberr_t dict_boot()
dict_mem_index_add_field
(
index
,
"ID"
,
0
);
index
->
id
=
DICT_TABLE_IDS_ID
;
err
or
=
dict_index_add_to_cache
(
err
=
dict_index_add_to_cache
(
index
,
mach_read_from_4
(
dict_hdr
+
DICT_HDR_TABLE_IDS
));
ut_a
(
err
or
==
DB_SUCCESS
);
ut_a
(
err
==
DB_SUCCESS
);
/*-------------------------*/
table
=
dict_table_t
::
create
(
dict_sys
.
SYS_TABLE
[
dict_sys
.
SYS_COLUMNS
],
...
...
@@ -339,9 +339,9 @@ dberr_t dict_boot()
dict_mem_index_add_field
(
index
,
"POS"
,
0
);
index
->
id
=
DICT_COLUMNS_ID
;
err
or
=
dict_index_add_to_cache
(
err
=
dict_index_add_to_cache
(
index
,
mach_read_from_4
(
dict_hdr
+
DICT_HDR_COLUMNS
));
ut_a
(
err
or
==
DB_SUCCESS
);
ut_a
(
err
==
DB_SUCCESS
);
ut_ad
(
!
table
->
is_instant
());
table
->
indexes
.
start
->
n_core_null_bytes
=
static_cast
<
uint8_t
>
(
UT_BITS_IN_BYTES
(
unsigned
(
table
->
indexes
.
start
->
n_nullable
)));
...
...
@@ -382,9 +382,9 @@ dberr_t dict_boot()
dict_mem_index_add_field
(
index
,
"ID"
,
0
);
index
->
id
=
DICT_INDEXES_ID
;
err
or
=
dict_index_add_to_cache
(
err
=
dict_index_add_to_cache
(
index
,
mach_read_from_4
(
dict_hdr
+
DICT_HDR_INDEXES
));
ut_a
(
err
or
==
DB_SUCCESS
);
ut_a
(
err
==
DB_SUCCESS
);
ut_ad
(
!
table
->
is_instant
());
table
->
indexes
.
start
->
n_core_null_bytes
=
static_cast
<
uint8_t
>
(
UT_BITS_IN_BYTES
(
unsigned
(
table
->
indexes
.
start
->
n_nullable
)));
...
...
@@ -411,9 +411,9 @@ dberr_t dict_boot()
dict_mem_index_add_field
(
index
,
"POS"
,
0
);
index
->
id
=
DICT_FIELDS_ID
;
err
or
=
dict_index_add_to_cache
(
err
=
dict_index_add_to_cache
(
index
,
mach_read_from_4
(
dict_hdr
+
DICT_HDR_FIELDS
));
ut_a
(
err
or
==
DB_SUCCESS
);
ut_a
(
err
==
DB_SUCCESS
);
ut_ad
(
!
table
->
is_instant
());
table
->
indexes
.
start
->
n_core_null_bytes
=
static_cast
<
uint8_t
>
(
UT_BITS_IN_BYTES
(
unsigned
(
table
->
indexes
.
start
->
n_nullable
)));
...
...
@@ -422,7 +422,8 @@ dberr_t dict_boot()
err
=
ibuf_init_at_db_start
();
if
(
err
==
DB_SUCCESS
)
{
if
(
err
==
DB_SUCCESS
||
srv_force_recovery
>=
SRV_FORCE_NO_DDL_UNDO
)
{
err
=
DB_SUCCESS
;
/* Load definitions of other indexes on system tables */
dict_load_sys_table
(
dict_sys
.
sys_tables
);
...
...
storage/innobase/ibuf/ibuf0ibuf.cc
View file @
6f854d7c
...
...
@@ -49,6 +49,7 @@ Created 7/19/1997 Heikki Tuuri
#include "que0que.h"
#include "srv0start.h"
/* srv_shutdown_state */
#include "rem0cmp.h"
#include "log.h"
/* STRUCTURE OF AN INSERT BUFFER RECORD
...
...
@@ -402,24 +403,11 @@ ibuf_init_at_db_start(void)
if
(
!
header_page
)
{
err_exit:
sql_print_error
(
"InnoDB: The change buffer is corrupted"
);
mtr
.
commit
();
return
err
;
}
/* At startup we intialize ibuf to have a maximum of
CHANGE_BUFFER_DEFAULT_SIZE in terms of percentage of the
buffer pool size. Once ibuf struct is initialized this
value is updated with the user supplied size by calling
ibuf_max_size_update(). */
ibuf
.
max_size
=
((
buf_pool_get_curr_size
()
>>
srv_page_size_shift
)
*
CHANGE_BUFFER_DEFAULT_SIZE
)
/
100
;
mysql_mutex_init
(
ibuf_mutex_key
,
&
ibuf_mutex
,
nullptr
);
mysql_mutex_init
(
ibuf_pessimistic_insert_mutex_key
,
&
ibuf_pessimistic_insert_mutex
,
nullptr
);
mysql_mutex_lock
(
&
ibuf_mutex
);
fseg_n_reserved_pages
(
*
header_page
,
IBUF_HEADER
+
IBUF_TREE_SEG_HEADER
+
header_page
->
page
.
frame
,
&
ibuf
.
seg_size
,
&
mtr
);
...
...
@@ -438,6 +426,25 @@ ibuf_init_at_db_start(void)
goto
err_exit
;
}
if
(
page_is_comp
(
root
)
||
fil_page_get_type
(
root
)
!=
FIL_PAGE_INDEX
||
btr_page_get_index_id
(
root
)
!=
DICT_IBUF_ID_MIN
)
{
err
=
DB_CORRUPTION
;
goto
err_exit
;
}
/* At startup we intialize ibuf to have a maximum of
CHANGE_BUFFER_DEFAULT_SIZE in terms of percentage of the
buffer pool size. Once ibuf struct is initialized this
value is updated with the user supplied size by calling
ibuf_max_size_update(). */
ibuf
.
max_size
=
((
buf_pool_get_curr_size
()
>>
srv_page_size_shift
)
*
CHANGE_BUFFER_DEFAULT_SIZE
)
/
100
;
mysql_mutex_init
(
ibuf_mutex_key
,
&
ibuf_mutex
,
nullptr
);
mysql_mutex_init
(
ibuf_pessimistic_insert_mutex_key
,
&
ibuf_pessimistic_insert_mutex
,
nullptr
);
mysql_mutex_lock
(
&
ibuf_mutex
);
ibuf_size_update
(
root
);
mysql_mutex_unlock
(
&
ibuf_mutex
);
...
...
@@ -487,6 +494,7 @@ ibuf_max_size_update(
ulint
new_val
)
/*!< in: new value in terms of
percentage of the buffer pool size */
{
if
(
UNIV_UNLIKELY
(
!
ibuf
.
index
))
return
;
ulint
new_size
=
((
buf_pool_get_curr_size
()
>>
srv_page_size_shift
)
*
new_val
)
/
100
;
mysql_mutex_lock
(
&
ibuf_mutex
);
...
...
storage/innobase/include/univ.i
View file @
6f854d7c
...
...
@@ -101,15 +101,6 @@ HAVE_PSI_INTERFACE is defined. */
#
define
UNIV_PFS_MEMORY
#
endif
/* HAVE_PSI_MEMORY_INTERFACE */
/* There are mutexes/rwlocks that we want to exclude from
instrumentation even if their corresponding performance schema
define is set. And this PFS_NOT_INSTRUMENTED is used
as the key value to identify those objects that would
be excluded from instrumentation. */
#
define
PFS_NOT_INSTRUMENTED
ULINT32_UNDEFINED
#
define
PFS_IS_INSTRUMENTED
(
key
)
((
key
)
!=
PFS_NOT_INSTRUMENTED
)
#
ifdef
HAVE_PFS_THREAD_PROVIDER_H
/* For PSI_MUTEX_CALL() and similar. */
#
include
"pfs_thread_provider.h"
...
...
storage/innobase/log/log0recv.cc
View file @
6f854d7c
...
...
@@ -1649,7 +1649,7 @@ static dberr_t recv_log_recover_10_5(lsn_t lsn_offset)
if
(
lsn_offset
<
(
log_sys
.
is_pmem
()
?
log_sys
.
file_size
:
4096
))
memcpy_aligned
<
512
>
(
buf
,
&
log_sys
.
buf
[
lsn_offset
&
~
511
],
512
);
else
recv_sys
.
read
(
lsn_offset
&
~
511
,
{
buf
,
512
});
recv_sys
.
read
(
lsn_offset
&
~
lsn_t
{
511
}
,
{
buf
,
512
});
if
(
!
recv_check_log_block
(
buf
))
{
...
...
storage/innobase/mtr/mtr0mtr.cc
View file @
6f854d7c
...
...
@@ -1171,14 +1171,14 @@ bool mtr_t::have_x_latch(const buf_block_t &block) const
if
(
!
m_memo
)
return
false
;
const
mtr_memo_slot_t
*
found
=
nullptr
;
ut_d
(
const
mtr_memo_slot_t
*
found
=
nullptr
)
;
for
(
const
mtr_memo_slot_t
&
slot
:
*
m_memo
)
{
if
(
slot
.
object
!=
&
block
)
continue
;
found
=
&
slot
;
ut_d
(
found
=
&
slot
)
;
if
(
!
(
slot
.
type
&
MTR_MEMO_PAGE_X_FIX
))
continue
;
...
...
storage/innobase/srv/srv0start.cc
View file @
6f854d7c
...
...
@@ -1729,7 +1729,8 @@ void innodb_shutdown()
||
srv_force_recovery
>=
SRV_FORCE_NO_TRX_UNDO
);
ut_ad
(
lock_sys
.
is_initialised
()
||
!
srv_was_started
);
ut_ad
(
log_sys
.
is_initialised
()
||
!
srv_was_started
);
ut_ad
(
ibuf
.
index
||
!
srv_was_started
);
ut_ad
(
ibuf
.
index
||
!
srv_was_started
||
srv_force_recovery
>=
SRV_FORCE_NO_DDL_UNDO
);
dict_stats_deinit
();
...
...
storage/maria/ma_control_file.c
View file @
6f854d7c
...
...
@@ -640,7 +640,7 @@ my_bool print_aria_log_control()
open_flags
,
MYF
(
MY_WME
)))
<
0
)
{
errmsg
=
"Can't open file"
;
goto
err
;
goto
err
2
;
}
file_size
=
mysql_file_seek
(
file
,
0
,
SEEK_END
,
MYF
(
MY_WME
));
...
...
@@ -723,10 +723,12 @@ my_bool print_aria_log_control()
(
buffer
+
new_cf_create_time_size
+
CF_RECOV_FAIL_OFFSET
)[
0
];
printf
(
"recovery_failures: %u
\n
"
,
recovery_fails
);
}
mysql_file_close
(
file
,
MYF
(
0
));
DBUG_RETURN
(
0
);
err:
mysql_file_close
(
file
,
MYF
(
0
));
err2:
my_printf_error
(
HA_ERR_INITIALIZATION
,
"Got error '%s' when trying to use aria control file "
"'%s'"
,
0
,
errmsg
,
name
);
...
...
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