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
e52a36d3
Commit
e52a36d3
authored
Apr 22, 2020
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.1 into 10.2
parents
8760ba65
ad4b7056
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
27 additions
and
15 deletions
+27
-15
sql/opt_range.cc
sql/opt_range.cc
+12
-7
sql/wsrep_mysqld.cc
sql/wsrep_mysqld.cc
+11
-0
sql/wsrep_mysqld.h
sql/wsrep_mysqld.h
+2
-7
storage/maria/ma_pagecrc.c
storage/maria/ma_pagecrc.c
+2
-1
No files found.
sql/opt_range.cc
View file @
e52a36d3
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
Copyright (c) 2008, 20
15
, MariaDB
Copyright (c) 2008, 20
20
, MariaDB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -4680,6 +4680,7 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
double
roru_index_costs
;
ha_rows
roru_total_records
;
double
roru_intersect_part
=
1.0
;
bool
only_ror_scans_required
=
FALSE
;
size_t
n_child_scans
;
DBUG_ENTER
(
"get_best_disjunct_quick"
);
DBUG_PRINT
(
"info"
,
(
"Full table scan cost: %g"
,
read_time
));
...
...
@@ -4706,6 +4707,9 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
sizeof
(
TRP_RANGE
*
)
*
n_child_scans
)))
DBUG_RETURN
(
NULL
);
only_ror_scans_required
=
!
optimizer_flag
(
param
->
thd
,
OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION
);
/*
Collect best 'range' scan for each of disjuncts, and, while doing so,
analyze possibility of ROR scans. Also calculate some values needed by
...
...
@@ -4718,7 +4722,8 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
DBUG_EXECUTE
(
"info"
,
print_sel_tree
(
param
,
*
ptree
,
&
(
*
ptree
)
->
keys_map
,
"tree in SEL_IMERGE"
););
if
(
!
(
*
cur_child
=
get_key_scans_params
(
param
,
*
ptree
,
TRUE
,
FALSE
,
read_time
,
TRUE
)))
read_time
,
only_ror_scans_required
)))
{
/*
One of index scans in this index_merge is more expensive than entire
...
...
@@ -5040,7 +5045,7 @@ TABLE_READ_PLAN *merge_same_index_scans(PARAM *param, SEL_IMERGE *imerge,
index merge retrievals are not well calibrated
*/
trp
=
get_key_scans_params
(
param
,
*
imerge
->
trees
,
FALSE
,
TRUE
,
read_time
,
TRU
E
);
read_time
,
FALS
E
);
}
DBUG_RETURN
(
trp
);
...
...
@@ -6768,7 +6773,8 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
index_read_must_be_used if TRUE, assume 'index only' option will be set
(except for clustered PK indexes)
read_time don't create read plans with cost > read_time.
ror_scans_required set to TRUE for index merge
only_ror_scans_required set to TRUE when we are only interested
in ROR scan
RETURN
Best range read plan
NULL if no plan found or error occurred
...
...
@@ -6778,7 +6784,7 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
bool
index_read_must_be_used
,
bool
update_tbl_stats
,
double
read_time
,
bool
ror_scans_required
)
bool
only_
ror_scans_required
)
{
uint
idx
,
UNINIT_VAR
(
best_idx
);
SEL_ARG
*
key_to_read
=
NULL
;
...
...
@@ -6826,8 +6832,7 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
update_tbl_stats
,
&
mrr_flags
,
&
buf_size
,
&
cost
);
if
(
ror_scans_required
&&
!
param
->
is_ror_scan
&&
!
optimizer_flag
(
param
->
thd
,
OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION
))
if
(
only_ror_scans_required
&&
!
param
->
is_ror_scan
)
{
/* The scan is not a ROR-scan, just skip it */
continue
;
...
...
sql/wsrep_mysqld.cc
View file @
e52a36d3
...
...
@@ -259,6 +259,17 @@ static void wsrep_log_cb(wsrep_log_level_t level, const char *msg) {
}
}
void
wsrep_log
(
void
(
*
fun
)(
const
char
*
,
...),
const
char
*
format
,
...)
{
va_list
args
;
char
msg
[
1024
];
va_start
(
args
,
format
);
vsnprintf
(
msg
,
sizeof
(
msg
)
-
1
,
format
,
args
);
va_end
(
args
);
(
fun
)(
"WSREP: %s"
,
msg
);
}
static
void
wsrep_log_states
(
wsrep_log_level_t
const
level
,
const
wsrep_uuid_t
*
const
group_uuid
,
wsrep_seqno_t
const
group_seqno
,
...
...
sql/wsrep_mysqld.h
View file @
e52a36d3
...
...
@@ -203,13 +203,8 @@ extern wsrep_seqno_t wsrep_locked_seqno;
? wsrep_forced_binlog_format : (ulong)(my_format))
// prefix all messages with "WSREP"
#define WSREP_LOG(fun, ...) \
do { \
char msg[1024] = {'\0'}; \
snprintf(msg, sizeof(msg) - 1, ## __VA_ARGS__); \
fun("WSREP: %s", msg); \
} while(0)
void
wsrep_log
(
void
(
*
fun
)(
const
char
*
,
...),
const
char
*
format
,
...);
#define WSREP_LOG(fun, ...) wsrep_log(fun, ## __VA_ARGS__)
#define WSREP_LOG_CONFLICT_THD(thd, role) \
WSREP_LOG(sql_print_information, \
"%s: \n " \
...
...
storage/maria/ma_pagecrc.c
View file @
e52a36d3
...
...
@@ -251,7 +251,8 @@ my_bool maria_page_crc_check_index(int res, PAGECACHE_IO_HOOK_ARGS *args)
if
(
length
>
share
->
block_size
-
CRC_SIZE
)
{
DBUG_PRINT
(
"error"
,
(
"Wrong page length: %u"
,
length
));
return
(
my_errno
=
HA_ERR_WRONG_CRC
);
my_errno
=
HA_ERR_WRONG_CRC
;
return
1
;
}
return
maria_page_crc_check
(
page
,
(
uint32
)
page_no
,
share
,
MARIA_NO_CRC_NORMAL_PAGE
,
...
...
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