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
ad436d92
Commit
ad436d92
authored
Dec 21, 2020
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.5 into 10.6
parents
8c68b549
39378e13
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
128 additions
and
119 deletions
+128
-119
cmake/cpack_rpm.cmake
cmake/cpack_rpm.cmake
+1
-3
cmake/plugin.cmake
cmake/plugin.cmake
+8
-8
mysql-test/suite/innodb/r/innodb-page_compression_tables.result
...test/suite/innodb/r/innodb-page_compression_tables.result
+8
-0
mysql-test/suite/innodb/t/innodb-page_compression_tables.test
...l-test/suite/innodb/t/innodb-page_compression_tables.test
+7
-0
plugin/type_inet/mysql-test/type_inet/type_inet6_plugin.result
...n/type_inet/mysql-test/type_inet/type_inet6_plugin.result
+1
-1
plugin/type_inet/plugin.cc
plugin/type_inet/plugin.cc
+1
-1
sql/CMakeLists.txt
sql/CMakeLists.txt
+8
-1
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+48
-71
sql/item_cmpfunc.h
sql/item_cmpfunc.h
+17
-20
sql/log.cc
sql/log.cc
+16
-12
storage/innobase/log/log0recv.cc
storage/innobase/log/log0recv.cc
+12
-2
storage/innobase/mtr/mtr0mtr.cc
storage/innobase/mtr/mtr0mtr.cc
+1
-0
No files found.
cmake/cpack_rpm.cmake
View file @
ad436d92
...
...
@@ -302,9 +302,7 @@ ENDIF()
IF
(
CMAKE_VERSION VERSION_GREATER
"3.9.99"
)
SET
(
CPACK_SOURCE_GENERATOR
"RPM"
)
SETA
(
CPACK_RPM_SOURCE_PKG_BUILD_PARAMS
"-DRPM=
${
RPM
}
"
)
SETA
(
CPACK_RPM_SOURCE_PKG_BUILD_PARAMS
"-DRPM=
${
RPM
}
"
)
MACRO
(
ADDIF var
)
IF
(
DEFINED
${
var
}
)
...
...
cmake/plugin.cmake
View file @
ad436d92
...
...
@@ -19,19 +19,21 @@ INCLUDE(CMakeParseArguments)
# MYSQL_ADD_PLUGIN(plugin_name source1...sourceN
# [STORAGE_ENGINE]
# [
CLIENT
]
# [
STATIC_ONLY|MODULE_ONLY
]
# [MANDATORY|DEFAULT]
# [STATIC_ONLY|DYNAMIC_ONLY]
# [DISABLED]
# [NOT_EMBEDDED|RECOMPILE_FOR_EMBEDDED]
# [CLIENT]
# [MODULE_OUTPUT_NAME module_name]
# [STATIC_OUTPUT_NAME static_name]
# [
RECOMPILE_FOR_EMBEDDED
]
# [
NOT_EMBEDDED
]
# [
COMPONENT component
]
# [
CONFIG cnf_file_name
]
# [LINK_LIBRARIES lib1...libN]
# [DEPENDENCIES target1...targetN]
MACRO
(
MYSQL_ADD_PLUGIN
)
CMAKE_PARSE_ARGUMENTS
(
ARG
"STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;NOT_EMBEDDED;RECOMPILE_FOR_EMBEDDED;CLIENT
;EXPORT_SYMBOLS
"
"STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;NOT_EMBEDDED;RECOMPILE_FOR_EMBEDDED;CLIENT"
"MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG"
"LINK_LIBRARIES;DEPENDENCIES"
${
ARGN
}
...
...
@@ -140,9 +142,7 @@ MACRO(MYSQL_ADD_PLUGIN)
ADD_LIBRARY
(
${
target
}
STATIC
${
SOURCES
}
)
DTRACE_INSTRUMENT
(
${
target
}
)
ADD_DEPENDENCIES
(
${
target
}
GenError
${
ARG_DEPENDENCIES
}
)
IF
(
NOT ARG_EXPORT_SYMBOLS
)
RESTRICT_SYMBOL_EXPORTS
(
${
target
}
)
ENDIF
()
RESTRICT_SYMBOL_EXPORTS
(
${
target
}
)
IF
(
WITH_EMBEDDED_SERVER
AND
(
NOT ARG_NOT_EMBEDDED
))
# Embedded library should contain PIC code and be linkable
# to shared libraries (on systems that need PIC)
...
...
mysql-test/suite/innodb/r/innodb-page_compression_tables.result
View file @
ad436d92
...
...
@@ -55,6 +55,14 @@ innodb_redundant CREATE TABLE `innodb_redundant` (
`b` char(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT `page_compressed`=1
drop table innodb_redundant;
#
# MDEV-24455 Assertion `!m_freed_space' failed in mtr_t::start
#
CREATE TABLE t1 (a TEXT, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED='ON';
BEGIN;
INSERT INTO t1 VALUES(REPEAT('x',81),REPEAT('x',8034));
ROLLBACK;
DROP TABLE t1;
create procedure innodb_insert_proc (repeat_count int)
begin
declare current_num int;
...
...
mysql-test/suite/innodb/t/innodb-page_compression_tables.test
View file @
ad436d92
...
...
@@ -30,6 +30,13 @@ alter table innodb_redundant row_format=compact page_compressed=1;
show
create
table
innodb_redundant
;
drop
table
innodb_redundant
;
--
echo
#
--
echo
# MDEV-24455 Assertion `!m_freed_space' failed in mtr_t::start
--
echo
#
CREATE
TABLE
t1
(
a
TEXT
,
b
TEXT
)
ENGINE
=
InnoDB
PAGE_COMPRESSED
=
'ON'
;
BEGIN
;
INSERT
INTO
t1
VALUES
(
REPEAT
(
'x'
,
81
),
REPEAT
(
'x'
,
8034
));
ROLLBACK
;
DROP
TABLE
t1
;
delimiter
//;
create
procedure
innodb_insert_proc
(
repeat_count
int
)
begin
...
...
plugin/type_inet/mysql-test/type_inet/type_inet6_plugin.result
View file @
ad436d92
...
...
@@ -24,7 +24,7 @@ PLUGIN_TYPE DATA TYPE
PLUGIN_AUTHOR MariaDB Corporation
PLUGIN_DESCRIPTION Data type INET6
PLUGIN_LICENSE GPL
PLUGIN_MATURITY
Bet
a
PLUGIN_MATURITY
Gamm
a
PLUGIN_AUTH_VERSION 1.0
#
# End of 10.5 tests
...
...
plugin/type_inet/plugin.cc
View file @
ad436d92
...
...
@@ -186,7 +186,7 @@ maria_declare_plugin(type_inet)
NULL
,
// Status variables
NULL
,
// System variables
"1.0"
,
// String version representation
MariaDB_PLUGIN_MATURITY_
BETA
// Maturity(see include/mysql/plugin.h)*/
MariaDB_PLUGIN_MATURITY_
GAMMA
// Maturity(see include/mysql/plugin.h)*/
},
{
MariaDB_FUNCTION_PLUGIN
,
// the plugin type (see include/mysql/plugin.h)
...
...
sql/CMakeLists.txt
View file @
ad436d92
...
...
@@ -36,7 +36,14 @@ IF(WITH_WSREP AND NOT EMBEDDED_LIBRARY)
wsrep_plugin.cc
service_wsrep.cc
)
MYSQL_ADD_PLUGIN
(
wsrep
${
WSREP_SOURCES
}
MANDATORY NOT_EMBEDDED EXPORT_SYMBOLS LINK_LIBRARIES wsrep-lib wsrep_api_v26
)
MYSQL_ADD_PLUGIN
(
wsrep
${
WSREP_SOURCES
}
MANDATORY NOT_EMBEDDED LINK_LIBRARIES wsrep-lib wsrep_api_v26
)
IF
(
VISIBILITY_HIDDEN_FLAG AND TARGET wsrep
)
# wsrep_info plugin needs some wsrep symbols from inside mysqld
# we have to remove -fvisibility=hidden from wsrep
GET_TARGET_PROPERTY
(
f wsrep COMPILE_FLAGS
)
STRING
(
REPLACE
"
${
VISIBILITY_HIDDEN_FLAG
}
"
""
f
${
f
}
)
SET_TARGET_PROPERTIES
(
wsrep PROPERTIES COMPILE_FLAGS
"
${
f
}
"
)
ENDIF
()
ELSE
()
ADD_LIBRARY
(
wsrep STATIC wsrep_dummy.cc
)
ADD_DEPENDENCIES
(
wsrep GenError
)
...
...
sql/item_cmpfunc.cc
View file @
ad436d92
...
...
@@ -5613,61 +5613,6 @@ void Item_func_like::print(String *str, enum_query_type query_type)
}
static
bool
fix_escape_item_now
(
THD
*
thd
,
Item
*
escape_item
,
String
*
tmp_str
,
bool
escape_used_in_parsing
,
CHARSET_INFO
*
cmp_cs
,
int
*
escape
)
{
String
*
escape_str
=
escape_item
->
val_str
(
tmp_str
);
if
(
escape_str
)
{
const
char
*
escape_str_ptr
=
escape_str
->
ptr
();
if
(
escape_used_in_parsing
&&
((((
thd
->
variables
.
sql_mode
&
MODE_NO_BACKSLASH_ESCAPES
)
&&
escape_str
->
numchars
()
!=
1
)
||
escape_str
->
numchars
()
>
1
)))
{
my_error
(
ER_WRONG_ARGUMENTS
,
MYF
(
0
),
"ESCAPE"
);
return
TRUE
;
}
if
(
cmp_cs
->
use_mb
())
{
CHARSET_INFO
*
cs
=
escape_str
->
charset
();
my_wc_t
wc
;
int
rc
=
cs
->
mb_wc
(
&
wc
,
(
const
uchar
*
)
escape_str_ptr
,
(
const
uchar
*
)
escape_str_ptr
+
escape_str
->
length
());
*
escape
=
(
int
)
(
rc
>
0
?
wc
:
'\\'
);
}
else
{
/*
In the case of 8bit character set, we pass native
code instead of Unicode code as "escape" argument.
Convert to "cs" if charset of escape differs.
*/
uint32
unused
;
if
(
escape_str
->
needs_conversion
(
escape_str
->
length
(),
escape_str
->
charset
(),
cmp_cs
,
&
unused
))
{
char
ch
;
uint
errors
;
uint32
cnvlen
=
copy_and_convert
(
&
ch
,
1
,
cmp_cs
,
escape_str_ptr
,
escape_str
->
length
(),
escape_str
->
charset
(),
&
errors
);
*
escape
=
cnvlen
?
ch
:
'\\'
;
}
else
*
escape
=
escape_str_ptr
?
*
escape_str_ptr
:
'\\'
;
}
}
else
*
escape
=
'\\'
;
return
FALSE
;
}
longlong
Item_func_like
::
val_int
()
{
DBUG_ASSERT
(
fixed
==
1
);
...
...
@@ -5686,17 +5631,6 @@ longlong Item_func_like::val_int()
null_value
=
0
;
if
(
canDoTurboBM
)
return
turboBM_matches
(
res
->
ptr
(),
res
->
length
())
?
!
negated
:
negated
;
if
(
unlikely
(
!
escape_item_evaluated
))
{
if
(
fix_escape_item_now
(
current_thd
,
escape_item
,
&
cmp_value1
,
escape_used_in_parsing
,
cmp_collation
.
collation
,
&
escape
))
{
null_value
=
1
;
return
0
;
}
escape_item_evaluated
=
1
;
}
return
cmp_collation
.
collation
->
wildcmp
(
res
->
ptr
(),
res
->
ptr
()
+
res
->
length
(),
res2
->
ptr
(),
res2
->
ptr
()
+
res2
->
length
(),
...
...
@@ -5777,13 +5711,58 @@ bool fix_escape_item(THD *thd, Item *escape_item, String *tmp_str,
if
(
escape_item
->
const_item
())
{
/* If we are on execution stage */
return
fix_escape_item_now
(
thd
,
escape_item
,
tmp_str
,
escape_used_in_parsing
,
cmp_cs
,
escape
);
String
*
escape_str
=
escape_item
->
val_str
(
tmp_str
);
if
(
escape_str
)
{
const
char
*
escape_str_ptr
=
escape_str
->
ptr
();
if
(
escape_used_in_parsing
&&
(
(((
thd
->
variables
.
sql_mode
&
MODE_NO_BACKSLASH_ESCAPES
)
&&
escape_str
->
numchars
()
!=
1
)
||
escape_str
->
numchars
()
>
1
)))
{
my_error
(
ER_WRONG_ARGUMENTS
,
MYF
(
0
),
"ESCAPE"
);
return
TRUE
;
}
if
(
cmp_cs
->
use_mb
())
{
CHARSET_INFO
*
cs
=
escape_str
->
charset
();
my_wc_t
wc
;
int
rc
=
cs
->
mb_wc
(
&
wc
,
(
const
uchar
*
)
escape_str_ptr
,
(
const
uchar
*
)
escape_str_ptr
+
escape_str
->
length
());
*
escape
=
(
int
)
(
rc
>
0
?
wc
:
'\\'
);
}
else
{
/*
In the case of 8bit character set, we pass native
code instead of Unicode code as "escape" argument.
Convert to "cs" if charset of escape differs.
*/
uint32
unused
;
if
(
escape_str
->
needs_conversion
(
escape_str
->
length
(),
escape_str
->
charset
(),
cmp_cs
,
&
unused
))
{
char
ch
;
uint
errors
;
uint32
cnvlen
=
copy_and_convert
(
&
ch
,
1
,
cmp_cs
,
escape_str_ptr
,
escape_str
->
length
(),
escape_str
->
charset
(),
&
errors
);
*
escape
=
cnvlen
?
ch
:
'\\'
;
}
else
*
escape
=
escape_str_ptr
?
*
escape_str_ptr
:
'\\'
;
}
}
else
*
escape
=
'\\'
;
}
return
FALSE
;
}
bool
Item_func_like
::
fix_fields
(
THD
*
thd
,
Item
**
ref
)
{
DBUG_ASSERT
(
fixed
==
0
);
...
...
@@ -5793,10 +5772,8 @@ bool Item_func_like::fix_fields(THD *thd, Item **ref)
cmp_collation
.
collation
,
&
escape
))
return
TRUE
;
escape_item_evaluated
=
0
;
if
(
escape_item
->
const_item
())
{
escape_item_evaluated
=
1
;
/*
We could also do boyer-more for non-const items, but as we would have to
recompute the tables for each row it's not worth it.
...
...
sql/item_cmpfunc.h
View file @
ad436d92
...
...
@@ -2672,24 +2672,14 @@ class Item_func_isnotnull :public Item_func_null_predicate
class
Item_func_like
:
public
Item_bool_func2
{
// Turbo Boyer-Moore data
bool
canDoTurboBM
;
// pattern is '%abcd%' case
const
char
*
pattern
;
Item
*
escape_item
;
DTCollation
cmp_collation
;
String
cmp_value1
,
cmp_value2
;
int
pattern_len
;
// Turbo Boyer-Moore data
// TurboBM buffers, *this is owner
int
*
bmGs
;
// good suffix shift table, size is pattern_len + 1
int
*
bmBc
;
// bad character shift table, size is alphabet_size
int
pattern_len
;
public:
int
escape
;
bool
negated
;
private:
bool
canDoTurboBM
;
// pattern is '%abcd%' case
bool
escape_item_evaluated
;
bool
escape_used_in_parsing
;
bool
use_sampling
;
int
*
bmGs
;
// good suffix shift table, size is pattern_len + 1
int
*
bmBc
;
// bad character shift table, size is alphabet_size
void
turboBM_compute_suffixes
(
int
*
suff
);
void
turboBM_compute_good_suffix_shifts
(
int
*
suff
);
...
...
@@ -2697,6 +2687,13 @@ class Item_func_like :public Item_bool_func2
bool
turboBM_matches
(
const
char
*
text
,
int
text_len
)
const
;
enum
{
alphabet_size
=
256
};
Item
*
escape_item
;
bool
escape_used_in_parsing
;
bool
use_sampling
;
DTCollation
cmp_collation
;
String
cmp_value1
,
cmp_value2
;
bool
with_sargable_pattern
()
const
;
protected:
SEL_TREE
*
get_func_mm_tree
(
RANGE_OPT_PARAM
*
param
,
...
...
@@ -2709,13 +2706,13 @@ class Item_func_like :public Item_bool_func2
KEY_PART
*
key_part
,
Item_func
::
Functype
type
,
Item
*
value
);
public:
int
escape
;
bool
negated
;
Item_func_like
(
THD
*
thd
,
Item
*
a
,
Item
*
b
,
Item
*
escape_arg
,
bool
escape_used
)
:
Item_bool_func2
(
thd
,
a
,
b
),
pattern
(
0
),
escape_item
(
escape_arg
),
bmGs
(
0
),
bmBc
(
0
),
pattern_len
(
0
),
negated
(
0
),
canDoTurboBM
(
FALSE
),
escape_item_evaluated
(
0
),
escape_used_in_parsing
(
escape_used
),
use_sampling
(
0
)
{}
Item_bool_func2
(
thd
,
a
,
b
),
canDoTurboBM
(
FALSE
),
pattern
(
0
),
pattern_len
(
0
),
bmGs
(
0
),
bmBc
(
0
),
escape_item
(
escape_arg
),
escape_used_in_parsing
(
escape_used
),
use_sampling
(
0
),
negated
(
0
)
{}
bool
get_negated
()
const
{
return
negated
;
}
// Used by ColumnStore
...
...
sql/log.cc
View file @
ad436d92
...
...
@@ -393,12 +393,12 @@ class binlog_cache_data
In the future, we can refactor this and change it to avoid
the set_binlog_info.
*/
DBUG_ASSERT
(
saved_max_binlog_cache_size
==
0
&&
param_max_binlog_cache_size
!=
0
&&
ptr_binlog_cache_use
==
0
&&
param_ptr_binlog_cache_use
!=
0
&&
ptr_binlog_cache_disk_use
==
0
&&
param_ptr_binlog_cache_disk_use
!=
0
);
DBUG_ASSERT
(
saved_max_binlog_cache_size
==
0
);
DBUG_ASSERT
(
param_max_binlog_cache_size
!=
0
);
DBUG_ASSERT
(
ptr_binlog_cache_use
==
0
);
DBUG_ASSERT
(
param_ptr_binlog_cache_use
!=
0
);
DBUG_ASSERT
(
ptr_binlog_cache_disk_use
==
0
);
DBUG_ASSERT
(
param_ptr_binlog_cache_disk_use
!=
0
);
saved_max_binlog_cache_size
=
param_max_binlog_cache_size
;
ptr_binlog_cache_use
=
param_ptr_binlog_cache_use
;
...
...
@@ -1814,8 +1814,8 @@ binlog_flush_cache(THD *thd, binlog_cache_mngr *cache_mngr,
}
cache_mngr
->
reset
(
using_stmt
,
using_trx
);
DBUG_ASSERT
(
(
!
using_stmt
||
cache_mngr
->
stmt_cache
.
empty
())
&&
(
!
using_trx
||
cache_mngr
->
trx_cache
.
empty
()
));
DBUG_ASSERT
(
!
using_stmt
||
cache_mngr
->
stmt_cache
.
empty
());
DBUG_ASSERT
(
!
using_trx
||
cache_mngr
->
trx_cache
.
empty
(
));
DBUG_RETURN
(
error
);
}
...
...
@@ -9273,7 +9273,8 @@ int TC_LOG_MMAP::log_and_order(THD *thd, my_xid xid, bool all,
prev
=
queue
;
queue
=
next
;
}
DBUG_ASSERT
(
prev
==
&
entry
&&
prev
->
thd
==
thd
);
DBUG_ASSERT
(
prev
==
&
entry
);
DBUG_ASSERT
(
prev
->
thd
==
thd
);
}
else
{
...
...
@@ -9367,7 +9368,8 @@ int TC_LOG_MMAP::open(const char *opt_name)
PAGE
*
pg
;
DBUG_ASSERT
(
total_ha_2pc
>
1
);
DBUG_ASSERT
(
opt_name
&&
opt_name
[
0
]);
DBUG_ASSERT
(
opt_name
);
DBUG_ASSERT
(
opt_name
[
0
]);
tc_log_page_size
=
my_getpagesize
();
...
...
@@ -9786,7 +9788,8 @@ int TC_LOG_MMAP::delete_entry(ulong cookie)
PAGE
*
p
=
pages
+
(
cookie
/
tc_log_page_size
);
my_xid
*
x
=
(
my_xid
*
)(
data
+
cookie
);
DBUG_ASSERT
(
x
>=
p
->
start
&&
x
<
p
->
end
);
DBUG_ASSERT
(
x
>=
p
->
start
);
DBUG_ASSERT
(
x
<
p
->
end
);
mysql_mutex_lock
(
&
p
->
lock
);
*
x
=
0
;
...
...
@@ -9931,7 +9934,8 @@ int TC_LOG_BINLOG::open(const char *opt_name)
int
error
=
1
;
DBUG_ASSERT
(
total_ha_2pc
>
1
);
DBUG_ASSERT
(
opt_name
&&
opt_name
[
0
]);
DBUG_ASSERT
(
opt_name
);
DBUG_ASSERT
(
opt_name
[
0
]);
if
(
!
my_b_inited
(
&
index_file
))
{
...
...
storage/innobase/log/log0recv.cc
View file @
ad436d92
...
...
@@ -2739,14 +2739,24 @@ void recv_sys_t::apply(bool last_batch)
buf_pool
.
free_block
(
free_block
);
/* Wait until all the pages have been processed */
while
(
!
pages
.
empty
()
)
for
(;;
)
{
const
bool
empty
=
pages
.
empty
();
if
(
empty
&&
!
buf_pool
.
n_pend_reads
)
break
;
if
(
!
is_corrupt_fs
()
&&
!
is_corrupt_log
())
{
if
(
last_batch
)
{
mysql_mutex_assert_not_owner
(
&
log_sys
.
mutex
);
mysql_cond_wait
(
&
cond
,
&
mutex
);
if
(
!
empty
)
mysql_cond_wait
(
&
cond
,
&
mutex
);
else
{
set_timespec_nsec
(
abstime
,
100000ULL
);
/* 100ms */
mysql_cond_timedwait
(
&
cond
,
&
mutex
,
&
abstime
);
}
}
else
{
...
...
storage/innobase/mtr/mtr0mtr.cc
View file @
ad436d92
...
...
@@ -434,6 +434,7 @@ void mtr_t::commit()
m_freed_space
->
clear_freed_ranges
();
delete
m_freed_pages
;
m_freed_pages
=
nullptr
;
m_freed_space
=
nullptr
;
/* mtr_t::start() will reset m_trim_pages */
}
else
...
...
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