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
b951fc4e
Commit
b951fc4e
authored
Jul 24, 2019
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.2 into 10.3
parents
33215edc
8fb39b2c
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
50 additions
and
2073 deletions
+50
-2073
mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff-disabled
...ite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff-disabled
+0
-1236
mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff-disabled
...est/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff-disabled
+0
-697
storage/innobase/buf/buf0buddy.cc
storage/innobase/buf/buf0buddy.cc
+2
-2
storage/innobase/fil/fil0crypt.cc
storage/innobase/fil/fil0crypt.cc
+9
-10
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.cc
+7
-6
storage/innobase/include/srv0mon.h
storage/innobase/include/srv0mon.h
+3
-3
storage/innobase/include/ut0ut.h
storage/innobase/include/ut0ut.h
+0
-25
storage/innobase/page/page0cur.cc
storage/innobase/page/page0cur.cc
+4
-6
storage/innobase/page/page0zip.cc
storage/innobase/page/page0zip.cc
+5
-5
storage/innobase/row/row0vers.cc
storage/innobase/row/row0vers.cc
+6
-6
storage/innobase/srv/srv0srv.cc
storage/innobase/srv/srv0srv.cc
+4
-6
storage/innobase/trx/trx0i_s.cc
storage/innobase/trx/trx0i_s.cc
+9
-25
storage/innobase/ut/ut0crc32.cc
storage/innobase/ut/ut0crc32.cc
+0
-17
storage/innobase/ut/ut0ut.cc
storage/innobase/ut/ut0ut.cc
+1
-29
No files found.
mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff-disabled
deleted
100644 → 0
View file @
33215edc
This diff is collapsed.
Click to expand it.
mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff-disabled
deleted
100644 → 0
View file @
33215edc
This diff is collapsed.
Click to expand it.
storage/innobase/buf/buf0buddy.cc
View file @
b951fc4e
...
...
@@ -635,7 +635,7 @@ buf_buddy_relocate(
if
(
buf_page_can_relocate
(
bpage
))
{
/* Relocate the compressed page. */
uintmax_t
usec
=
ut_time_us
(
NULL
);
const
ulonglong
ns
=
my_interval_timer
(
);
ut_a
(
bpage
->
zip
.
data
==
src
);
...
...
@@ -651,7 +651,7 @@ buf_buddy_relocate(
buf_buddy_stat_t
*
buddy_stat
=
&
buf_pool
->
buddy_stat
[
i
];
buddy_stat
->
relocated
++
;
buddy_stat
->
relocated_usec
+=
ut_time_us
(
NULL
)
-
usec
;
buddy_stat
->
relocated_usec
+=
(
my_interval_timer
()
-
ns
)
/
1000
;
return
(
true
);
}
...
...
storage/innobase/fil/fil0crypt.cc
View file @
b951fc4e
...
...
@@ -1618,19 +1618,18 @@ fil_crypt_get_page_throttle_func(
state
->
crypt_stat
.
pages_read_from_disk
++
;
uintmax_t
start
=
ut_time_us
(
NULL
);
const
ulonglong
start
=
my_interval_timer
(
);
block
=
buf_page_get_gen
(
page_id
,
page_size
,
RW_X_LATCH
,
NULL
,
BUF_GET_POSSIBLY_FREED
,
file
,
line
,
mtr
,
&
err
);
uintmax_t
end
=
ut_time_us
(
NULL
);
if
(
end
<
start
)
{
end
=
start
;
// safety...
}
const
ulonglong
end
=
my_interval_timer
();
state
->
cnt_waited
++
;
state
->
sum_waited_us
+=
(
end
-
start
);
if
(
end
>
start
)
{
state
->
sum_waited_us
+=
(
end
-
start
)
/
1000
;
}
/* average page load */
ulint
add_sleeptime_ms
=
0
;
...
...
@@ -1954,7 +1953,7 @@ fil_crypt_flush_space(
bool
success
=
false
;
ulint
n_pages
=
0
;
ulint
sum_pages
=
0
;
uintmax_t
start
=
ut_time_us
(
NULL
);
const
ulonglong
start
=
my_interval_timer
(
);
do
{
success
=
buf_flush_lists
(
ULINT_MAX
,
end_lsn
,
&
n_pages
);
...
...
@@ -1962,11 +1961,11 @@ fil_crypt_flush_space(
sum_pages
+=
n_pages
;
}
while
(
!
success
&&
!
space
->
is_stopping
());
uintmax_t
end
=
ut_time_us
(
NULL
);
const
ulonglong
end
=
my_interval_timer
(
);
if
(
sum_pages
&&
end
>
start
)
{
state
->
cnt_waited
+=
sum_pages
;
state
->
sum_waited_us
+=
(
end
-
start
);
state
->
sum_waited_us
+=
(
end
-
start
)
/
1000
;
/* statistics */
state
->
crypt_stat
.
pages_flushed
+=
sum_pages
;
...
...
storage/innobase/handler/ha_innodb.cc
View file @
b951fc4e
...
...
@@ -1719,12 +1719,13 @@ innobase_srv_conc_enter_innodb(
}
else
if
(
trx
->
mysql_thd
!=
NULL
&&
thd_is_replication_slave_thread
(
trx
->
mysql_thd
))
{
UT_WAIT_FOR
(
srv_conc_get_active_threads
()
<
srv_thread_concurrency
,
srv_replication_delay
*
1000
);
const
ulonglong
end
=
my_interval_timer
()
+
ulonglong
(
srv_replication_delay
)
*
1000000
;
while
(
srv_conc_get_active_threads
()
>=
srv_thread_concurrency
||
my_interval_timer
()
>=
end
)
{
os_thread_sleep
(
2000
/* 2 ms */
);
}
}
else
{
srv_conc_enter_innodb
(
prebuilt
);
}
...
...
storage/innobase/include/srv0mon.h
View file @
b951fc4e
...
...
@@ -2,7 +2,7 @@
Copyright (c) 2010, 2015, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2012, Facebook Inc.
Copyright (c) 2013, 201
8
, MariaDB Corporation.
Copyright (c) 2013, 201
9
, MariaDB Corporation.
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 the
...
...
@@ -720,8 +720,8 @@ monitor counter
#define MONITOR_INC_TIME_IN_MICRO_SECS(monitor, value) \
MONITOR_CHECK_DEFINED(value); \
if (MONITOR_IS_ON(monitor)) { \
uintmax_t old_time =
(value);
\
value =
ut_time_us(NULL);
\
uintmax_t old_time =
value;
\
value =
microsecond_interval_timer();
\
MONITOR_VALUE(monitor) += (mon_type_t) (value - old_time);\
}
...
...
storage/innobase/include/ut0ut.h
View file @
b951fc4e
...
...
@@ -54,22 +54,6 @@ Created 1/20/1994 Heikki Tuuri
/** Time stamp */
typedef
time_t
ib_time_t
;
/*********************************************************************//**
Delays execution for at most max_wait_us microseconds or returns earlier
if cond becomes true.
@param cond in: condition to wait for; evaluated every 2 ms
@param max_wait_us in: maximum delay to wait, in microseconds */
# define UT_WAIT_FOR(cond, max_wait_us) \
do { \
uintmax_t start_us; \
start_us = ut_time_us(NULL); \
while (!(cond) \
&& ut_time_us(NULL) - start_us < (max_wait_us)) {\
\
os_thread_sleep(2000
/* 2 ms */
); \
} \
} while (0)
#define ut_max std::max
#define ut_min std::min
...
...
@@ -192,15 +176,6 @@ ut_usectime(
ulint
*
ms
);
/*!< out: microseconds since the Epoch+*sec */
/**********************************************************//**
Returns the number of microseconds since epoch. Similar to
time(3), the return value is also stored in *tloc, provided
that tloc is non-NULL.
@return us since epoch */
uintmax_t
ut_time_us
(
/*=======*/
uintmax_t
*
tloc
);
/*!< out: us since epoch, if non-NULL */
/**********************************************************//**
Returns the number of milliseconds since some epoch. The
value may wrap around. It should only be used for heuristic
purposes.
...
...
storage/innobase/page/page0cur.cc
View file @
b951fc4e
...
...
@@ -41,7 +41,7 @@ number between 0 and 2^64-1 inclusive. The formula and the constants
being used are:
X[n+1] = (a * X[n] + c) mod m
where:
X[0] =
ut_time_us(NULL
)
X[0] =
my_interval_timer(
)
a = 1103515245 (3^5 * 5 * 7 * 129749)
c = 12345 (3 * 5 * 823)
m = 18446744073709551616 (2^64)
...
...
@@ -54,12 +54,10 @@ page_cur_lcg_prng(void)
{
#define LCG_a 1103515245
#define LCG_c 12345
static
ib_uint64_t
lcg_current
=
0
;
static
ibool
initialized
=
FALSE
;
static
uint64_t
lcg_current
;
if
(
!
initialized
)
{
lcg_current
=
(
ib_uint64_t
)
ut_time_us
(
NULL
);
initialized
=
TRUE
;
if
(
!
lcg_current
)
{
lcg_current
=
my_interval_timer
();
}
/* no need to "% 2^64" explicitly because lcg_current is
...
...
storage/innobase/page/page0zip.cc
View file @
b951fc4e
...
...
@@ -1274,7 +1274,7 @@ page_zip_compress(
byte
*
storage
;
/* storage of uncompressed
columns */
index_id_t
ind_id
;
uintmax_t
usec
=
ut_time_us
(
NULL
);
const
ulonglong
ns
=
my_interval_timer
(
);
#ifdef PAGE_ZIP_COMPRESS_DBG
FILE
*
logfile
=
NULL
;
#endif
...
...
@@ -1561,7 +1561,7 @@ page_zip_compress(
dict_index_zip_failure
(
index
);
}
uintmax_t
time_diff
=
ut_time_us
(
NULL
)
-
usec
;
const
uint64_t
time_diff
=
(
my_interval_timer
()
-
ns
)
/
1000
;
page_zip_stat
[
page_zip
->
ssize
-
1
].
compressed_usec
+=
time_diff
;
if
(
cmp_per_index_enabled
)
{
...
...
@@ -1627,7 +1627,7 @@ page_zip_compress(
fclose
(
logfile
);
}
#endif
/* PAGE_ZIP_COMPRESS_DBG */
uintmax_t
time_diff
=
ut_time_us
(
NULL
)
-
usec
;
const
uint64_t
time_diff
=
(
my_interval_timer
()
-
ns
)
/
1000
;
page_zip_stat
[
page_zip
->
ssize
-
1
].
compressed_ok
++
;
page_zip_stat
[
page_zip
->
ssize
-
1
].
compressed_usec
+=
time_diff
;
if
(
cmp_per_index_enabled
)
{
...
...
@@ -3250,13 +3250,13 @@ page_zip_decompress(
page header fields that should not change
after page creation */
{
uintmax_t
usec
=
ut_time_us
(
NULL
);
const
ulonglong
ns
=
my_interval_timer
(
);
if
(
!
page_zip_decompress_low
(
page_zip
,
page
,
all
))
{
return
(
FALSE
);
}
uintmax_t
time_diff
=
ut_time_us
(
NULL
)
-
usec
;
const
uint64_t
time_diff
=
(
my_interval_timer
()
-
ns
)
/
1000
;
page_zip_stat
[
page_zip
->
ssize
-
1
].
decompressed
++
;
page_zip_stat
[
page_zip
->
ssize
-
1
].
decompressed_usec
+=
time_diff
;
...
...
storage/innobase/row/row0vers.cc
View file @
b951fc4e
...
...
@@ -897,7 +897,8 @@ row_vers_old_has_index_entry(
ut_ad
(
mtr_memo_contains_page_flagged
(
mtr
,
rec
,
MTR_MEMO_PAGE_X_FIX
|
MTR_MEMO_PAGE_S_FIX
));
ut_ad
(
!
rw_lock_own
(
&
(
purge_sys
.
latch
),
RW_LOCK_S
));
ut_ad
(
!
rw_lock_own
(
&
purge_sys
.
latch
,
RW_LOCK_S
));
ut_ad
(
also_curr
||
!
vcol_info
);
clust_index
=
dict_table_get_first_index
(
index
->
table
);
...
...
@@ -964,7 +965,7 @@ row_vers_old_has_index_entry(
entry
=
row_build_index_entry
(
row
,
ext
,
index
,
heap
);
if
(
entry
&&
!
dtuple_coll_cmp
(
ientry
,
entry
))
{
goto
safe_to_purge
;
goto
un
safe_to_purge
;
}
}
else
{
/* Build index entry out of row */
...
...
@@ -985,7 +986,7 @@ row_vers_old_has_index_entry(
clust_index
,
clust_offsets
,
index
,
ientry
,
roll_ptr
,
trx_id
,
NULL
,
&
vrow
,
mtr
))
{
goto
safe_to_purge
;
goto
un
safe_to_purge
;
}
}
clust_offsets
=
rec_get_offsets
(
rec
,
clust_index
,
NULL
,
...
...
@@ -1018,7 +1019,7 @@ row_vers_old_has_index_entry(
a different binary value in a char field, but the
collation identifies the old and new value anyway! */
if
(
entry
&&
!
dtuple_coll_cmp
(
ientry
,
entry
))
{
safe_to_purge:
un
safe_to_purge:
mem_heap_free
(
heap
);
if
(
v_heap
)
{
...
...
@@ -1058,7 +1059,6 @@ row_vers_old_has_index_entry(
if
(
!
prev_version
)
{
/* Versions end here */
unsafe_to_purge:
mem_heap_free
(
heap
);
if
(
v_heap
)
{
...
...
@@ -1120,7 +1120,7 @@ row_vers_old_has_index_entry(
and new value anyway! */
if
(
entry
&&
!
dtuple_coll_cmp
(
ientry
,
entry
))
{
goto
safe_to_purge
;
goto
un
safe_to_purge
;
}
}
...
...
storage/innobase/srv/srv0srv.cc
View file @
b951fc4e
...
...
@@ -2129,7 +2129,7 @@ srv_master_do_active_tasks(void)
/*============================*/
{
ib_time_t
cur_time
=
ut_time
();
u
intmax_t
counter_time
=
ut_time_us
(
NULL
);
u
longlong
counter_time
=
microsecond_interval_timer
(
);
/* First do the tasks that we are suppose to do at each
invocation of this function. */
...
...
@@ -2159,7 +2159,7 @@ srv_master_do_active_tasks(void)
/* Do an ibuf merge */
srv_main_thread_op_info
=
"doing insert buffer merge"
;
counter_time
=
ut_time_us
(
NULL
);
counter_time
=
microsecond_interval_timer
(
);
ibuf_merge_in_background
(
false
);
MONITOR_INC_TIME_IN_MICRO_SECS
(
MONITOR_SRV_IBUF_MERGE_MICROSECOND
,
counter_time
);
...
...
@@ -2224,8 +2224,6 @@ void
srv_master_do_idle_tasks
(
void
)
/*==========================*/
{
uintmax_t
counter_time
;
++
srv_main_idle_loops
;
MONITOR_INC
(
MONITOR_MASTER_IDLE_LOOPS
);
...
...
@@ -2234,7 +2232,7 @@ srv_master_do_idle_tasks(void)
/* ALTER TABLE in MySQL requires on Unix that the table handler
can drop tables lazily after there no longer are SELECT
queries to them. */
counter_time
=
ut_time_us
(
NULL
);
ulonglong
counter_time
=
microsecond_interval_timer
(
);
srv_main_thread_op_info
=
"doing background drop tables"
;
row_drop_tables_for_mysql_in_background
();
MONITOR_INC_TIME_IN_MICRO_SECS
(
...
...
@@ -2253,7 +2251,7 @@ srv_master_do_idle_tasks(void)
log_free_check
();
/* Do an ibuf merge */
counter_time
=
ut_time_us
(
NULL
);
counter_time
=
microsecond_interval_timer
(
);
srv_main_thread_op_info
=
"doing insert buffer merge"
;
ibuf_merge_in_background
(
true
);
MONITOR_INC_TIME_IN_MICRO_SECS
(
...
...
storage/innobase/trx/trx0i_s.cc
View file @
b951fc4e
...
...
@@ -140,9 +140,8 @@ struct i_s_table_cache_t {
struct
trx_i_s_cache_t
{
rw_lock_t
rw_lock
;
/*!< read-write lock protecting
the rest of this structure */
uintmax_t
last_read
;
/*!< last time the cache was read;
measured in microseconds since
epoch */
ulonglong
last_read
;
/*!< last time the cache was read;
measured in nanoseconds */
ib_mutex_t
last_read_mutex
;
/*!< mutex protecting the
last_read member - it is updated
inside a shared lock of the
...
...
@@ -1183,22 +1182,16 @@ add_trx_relevant_locks_to_cache(
}
/** The minimum time that a cache must not be updated after it has been
read for the last time; measured in
micr
oseconds. We use this technique
read for the last time; measured in
nan
oseconds. We use this technique
to ensure that SELECTs which join several INFORMATION SCHEMA tables read
the same version of the cache. */
#define CACHE_MIN_IDLE_TIME_
US 1
00000
/* 0.1 sec */
#define CACHE_MIN_IDLE_TIME_
NS 1000
00000
/* 0.1 sec */
/*******************************************************************//**
Checks if the cache can safely be updated.
@return TRUE if can be updated */
static
ibool
can_cache_be_updated
(
/*=================*/
trx_i_s_cache_t
*
cache
)
/*!< in: cache */
@return whether the cache can be updated */
static
bool
can_cache_be_updated
(
trx_i_s_cache_t
*
cache
)
{
uintmax_t
now
;
/* Here we read cache->last_read without acquiring its mutex
because last_read is only updated when a shared rw lock on the
whole cache is being held (see trx_i_s_cache_end_read()) and
...
...
@@ -1208,13 +1201,7 @@ can_cache_be_updated(
ut_ad
(
rw_lock_own
(
&
cache
->
rw_lock
,
RW_LOCK_X
));
now
=
ut_time_us
(
NULL
);
if
(
now
-
cache
->
last_read
>
CACHE_MIN_IDLE_TIME_US
)
{
return
(
TRUE
);
}
return
(
FALSE
);
return
my_interval_timer
()
-
cache
->
last_read
>
CACHE_MIN_IDLE_TIME_NS
;
}
/*******************************************************************//**
...
...
@@ -1314,8 +1301,7 @@ trx_i_s_possibly_fetch_data_into_cache(
lock_mutex_exit
();
/* update cache last read time */
time_t
now
=
ut_time_us
(
NULL
);
cache
->
last_read
=
now
;
cache
->
last_read
=
my_interval_timer
();
return
(
0
);
}
...
...
@@ -1405,12 +1391,10 @@ trx_i_s_cache_end_read(
/*===================*/
trx_i_s_cache_t
*
cache
)
/*!< in: cache */
{
uintmax_t
now
;
ut_ad
(
rw_lock_own
(
&
cache
->
rw_lock
,
RW_LOCK_S
));
/* update cache last read time */
now
=
ut_time_us
(
NULL
);
const
ulonglong
now
=
my_interval_timer
(
);
mutex_enter
(
&
cache
->
last_read_mutex
);
cache
->
last_read
=
now
;
mutex_exit
(
&
cache
->
last_read_mutex
);
...
...
storage/innobase/ut/ut0crc32.cc
View file @
b951fc4e
...
...
@@ -618,23 +618,6 @@ ut_crc32_init()
ut_cpuid
(
vend
,
&
model
,
&
family
,
&
stepping
,
&
features_ecx
,
&
features_edx
);
/* Valgrind does not understand the CRC32 instructions:
vex amd64->IR: unhandled instruction bytes: 0xF2 0x48 0xF 0x38 0xF0 0xA
valgrind: Unrecognised instruction at address 0xad3db5.
Your program just tried to execute an instruction that Valgrind
did not recognise. There are two possible reasons for this.
1. Your program has a bug and erroneously jumped to a non-code
location. If you are running Memcheck and you just saw a
warning about a bad jump, it's probably your program's fault.
2. The instruction is legitimate but Valgrind doesn't handle it,
i.e. it's Valgrind's fault. If you think this is the case or
you are not sure, please let us know and we'll try to fix it.
Either way, Valgrind will now raise a SIGILL signal which will
probably kill your program.
*/
if
(
features_ecx
&
1
<<
20
)
{
ut_crc32
=
ut_crc32_hw
;
#ifdef INNODB_BUG_ENDIAN_CRC32
...
...
storage/innobase/ut/ut0ut.cc
View file @
b951fc4e
...
...
@@ -145,30 +145,6 @@ ut_usectime(
return
(
ret
);
}
/**********************************************************//**
Returns the number of microseconds since epoch. Similar to
time(3), the return value is also stored in *tloc, provided
that tloc is non-NULL.
@return us since epoch */
uintmax_t
ut_time_us
(
/*=======*/
uintmax_t
*
tloc
)
/*!< out: us since epoch, if non-NULL */
{
struct
timeval
tv
;
uintmax_t
us
;
ut_gettimeofday
(
&
tv
,
NULL
);
us
=
uintmax_t
(
tv
.
tv_sec
)
*
1000000
+
uintmax_t
(
tv
.
tv_usec
);
if
(
tloc
!=
NULL
)
{
*
tloc
=
us
;
}
return
(
us
);
}
/**********************************************************//**
Returns the number of milliseconds since some epoch. The
value may wrap around. It should only be used for heuristic
...
...
@@ -178,11 +154,7 @@ ulint
ut_time_ms
(
void
)
/*============*/
{
struct
timeval
tv
;
ut_gettimeofday
(
&
tv
,
NULL
);
return
(
ulint
(
tv
.
tv_sec
)
*
1000
+
ulint
(
tv
.
tv_usec
/
1000
));
return
static_cast
<
ulint
>
(
my_interval_timer
()
/
1000000
);
}
/**********************************************************//**
...
...
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