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
ae58cd6b
Commit
ae58cd6b
authored
Oct 09, 2018
by
Monty
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simple cleanups (no logic changes)
parent
9207a838
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
50 additions
and
75 deletions
+50
-75
client/mysqltest.cc
client/mysqltest.cc
+1
-1
sql/handler.cc
sql/handler.cc
+5
-2
sql/mdl.cc
sql/mdl.cc
+9
-6
sql/mdl.h
sql/mdl.h
+19
-9
sql/sql_base.cc
sql/sql_base.cc
+6
-4
sql/sql_base.h
sql/sql_base.h
+0
-4
sql/sql_cache.cc
sql/sql_cache.cc
+2
-2
sql/sql_table.cc
sql/sql_table.cc
+1
-1
sql/table_cache.cc
sql/table_cache.cc
+4
-4
sql/vers_utils.h
sql/vers_utils.h
+0
-39
sql/wsrep_sst.cc
sql/wsrep_sst.cc
+2
-2
unittest/sql/mf_iocache-t.cc
unittest/sql/mf_iocache-t.cc
+1
-1
No files found.
client/mysqltest.cc
View file @
ae58cd6b
...
...
@@ -9972,7 +9972,7 @@ void do_get_replace(struct st_command *command)
char
*
buff
,
*
start
;
char
word_end_chars
[
256
],
*
pos
;
POINTER_ARRAY
to_array
,
from_array
;
DBUG_ENTER
(
"get_replace"
);
DBUG_ENTER
(
"
do_
get_replace"
);
free_replace
();
...
...
sql/handler.cc
View file @
ae58cd6b
...
...
@@ -683,7 +683,7 @@ int ha_init()
binary log (which is considered a transaction-capable storage engine in
counting total_ha)
*/
opt_using_transactions
=
total_ha
>
(
ulong
)
opt_bin_log
;
opt_using_transactions
=
total_ha
>
(
ulong
)
opt_bin_log
;
savepoint_alloc_size
+=
sizeof
(
SAVEPOINT
);
DBUG_RETURN
(
error
);
}
...
...
@@ -693,7 +693,6 @@ int ha_end()
int
error
=
0
;
DBUG_ENTER
(
"ha_end"
);
/*
This should be eventualy based on the graceful shutdown flag.
So if flag is equal to HA_PANIC_CLOSE, the deallocate
...
...
@@ -6870,6 +6869,10 @@ int del_global_index_stat(THD *thd, TABLE* table, KEY* key_info)
DBUG_RETURN
(
res
);
}
/*****************************************************************************
VERSIONING functions
******************************************************************************/
bool
Vers_parse_info
::
is_start
(
const
char
*
name
)
const
{
DBUG_ASSERT
(
name
);
...
...
sql/mdl.cc
View file @
ae58cd6b
...
...
@@ -1368,17 +1368,23 @@ void MDL_lock::reschedule_waiters()
/**
Compatibility (or rather "incompatibility") matrices for scoped metadata
lock. Arrays of bitmaps which elements specify which granted/waiting locks
lock.
Scoped locks are GLOBAL READ LOCK, COMMIT and database (or schema) locks.
Arrays of bitmaps which elements specify which granted/waiting locks
are incompatible with type of lock being requested.
The first array specifies if particular type of request can be satisfied
if there is granted scoped lock of certain type.
(*) Since intention shared scoped locks (IS) are compatible with all other
type of locks, they don't need to be implemented and there is no code
for them.
| Type of active |
Request | scoped lock |
type | IS(*) IX S X |
---------+------------------+
IS
| + + + + |
IS
(*)
| + + + + |
IX | + + - - |
S | + - + - |
X | + - - - |
...
...
@@ -1391,7 +1397,7 @@ void MDL_lock::reschedule_waiters()
Request | scoped lock |
type | IS(*) IX S X |
---------+-----------------+
IS
| + + + + |
IS
(*)
| + + + + |
IX | + + - - |
S | + + + - |
X | + + + + |
...
...
@@ -1399,9 +1405,6 @@ void MDL_lock::reschedule_waiters()
Here: "+" -- means that request can be satisfied
"-" -- means that request can't be satisfied and should wait
(*) Since intention shared scoped locks are compatible with all other
type of locks we don't even have any accounting for them.
Note that relation between scoped locks and objects locks requested
by statement is not straightforward and is therefore fully defined
by SQL-layer.
...
...
sql/mdl.h
View file @
ae58cd6b
...
...
@@ -112,19 +112,25 @@ class MDL_context_owner
@sa Comments for MDL_object_lock::can_grant_lock() and
MDL_scoped_lock::can_grant_lock() for details.
Scoped locks are GLOBAL READ LOCK, COMMIT and database (or schema) locks.
The object locks are for tables, triggers etc.
*/
enum
enum_mdl_type
{
/*
An intention exclusive metadata lock. Used only for scoped locks.
An intention exclusive metadata lock
(IX)
. Used only for scoped locks.
Owner of this type of lock can acquire upgradable exclusive locks on
individual objects.
Compatible with other IX locks, but is incompatible with scoped S and
X locks.
IX lock is taken in SCHEMA namespace when we intend to modify
object metadata. Object may refer table, stored procedure, trigger,
view/etc.
*/
MDL_INTENTION_EXCLUSIVE
=
0
,
/*
A shared metadata lock.
A shared metadata lock
(S)
.
To be used in cases when we are interested in object metadata only
and there is no intention to access object data (e.g. for stored
routines or during preparing prepared statements).
...
...
@@ -144,6 +150,9 @@ enum enum_mdl_type {
use SNRW locks for them. It also does not arise when S locks are used
during PREPARE calls as table-level locks are not acquired in this
case.
This lock is taken for global read lock, when caching a stored
procedure in memory for the duration of the transaction and for
tables used by prepared statements.
*/
MDL_SHARED
,
/*
...
...
@@ -164,8 +173,8 @@ enum enum_mdl_type {
*/
MDL_SHARED_HIGH_PRIO
,
/*
A shared metadata lock
for cases when there is an intention to read data
from table.
A shared metadata lock
(SR) for cases when there is an intention to read
data
from table.
A connection holding this kind of lock can read table metadata and read
table data (after acquiring appropriate table and row-level locks).
This means that one can only acquire TL_READ, TL_READ_NO_INSERT, and
...
...
@@ -175,7 +184,7 @@ enum enum_mdl_type {
*/
MDL_SHARED_READ
,
/*
A shared metadata lock for cases when there is an intention to modify
A shared metadata lock
(SW)
for cases when there is an intention to modify
(and not just read) data in the table.
A connection holding SW lock can read table metadata and modify or read
table data (after acquiring appropriate table and row-level locks).
...
...
@@ -185,8 +194,8 @@ enum enum_mdl_type {
*/
MDL_SHARED_WRITE
,
/*
An upgradable shared metadata lock for cases when there is an
intention
to modify (and not just read) data in the table.
An upgradable shared metadata lock for cases when there is an
intention
to modify (and not just read) data in the table.
Can be upgraded to MDL_SHARED_NO_WRITE and MDL_EXCLUSIVE.
A connection holding SU lock can read table metadata and modify or read
table data (after acquiring appropriate table and row-level locks).
...
...
@@ -226,7 +235,7 @@ enum enum_mdl_type {
*/
MDL_SHARED_NO_READ_WRITE
,
/*
An exclusive metadata lock.
An exclusive metadata lock
(X)
.
A connection holding this lock can modify both table's metadata and data.
No other type of metadata lock can be granted while this lock is held.
To be used for CREATE/DROP/RENAME TABLE statements and for execution of
...
...
@@ -234,7 +243,8 @@ enum enum_mdl_type {
*/
MDL_EXCLUSIVE
,
/* This should be the last !!! */
MDL_TYPE_END
};
MDL_TYPE_END
};
/** Duration of metadata lock. */
...
...
sql/sql_base.cc
View file @
ae58cd6b
...
...
@@ -467,7 +467,8 @@ bool close_cached_tables(THD *thd, TABLE_LIST *tables,
{
if
(
thd
->
killed
)
break
;
if
(
tdc_wait_for_old_version
(
thd
,
table
->
db
.
str
,
table
->
table_name
.
str
,
timeout
,
if
(
tdc_wait_for_old_version
(
thd
,
table
->
db
.
str
,
table
->
table_name
.
str
,
timeout
,
MDL_wait_for_subgraph
::
DEADLOCK_WEIGHT_DDL
,
refresh_version
))
{
...
...
@@ -487,6 +488,7 @@ bool close_cached_tables(THD *thd, TABLE_LIST *tables,
*/
if
(
thd
->
locked_tables_list
.
reopen_tables
(
thd
,
false
))
result
=
true
;
/*
Since downgrade_lock() won't do anything with shared
metadata lock it is much simpler to go through all open tables rather
...
...
@@ -632,7 +634,7 @@ static void mark_used_tables_as_free_for_reuse(THD *thd, TABLE *table)
- The table is marked as closed in the
locked_table_list but kept there so one can call
locked_table_list->reopen_tables() to put it back.
In case of drop/rename the documented behavior is to
implicitly remove the table from LOCK TABLES
list.
...
...
@@ -1891,7 +1893,6 @@ bool open_table(THD *thd, TABLE_LIST *table_list, Open_table_context *ot_ctx)
if
(
mysql_make_view
(
thd
,
share
,
table_list
,
false
))
goto
err_lock
;
/* TODO: Don't free this */
tdc_release_share
(
share
);
...
...
@@ -1965,7 +1966,6 @@ bool open_table(THD *thd, TABLE_LIST *table_list, Open_table_context *ot_ctx)
else
{
enum
open_frm_error
error
;
/* make a new table */
if
(
!
(
table
=
(
TABLE
*
)
my_malloc
(
sizeof
(
*
table
),
MYF
(
MY_WME
))))
goto
err_lock
;
...
...
@@ -3805,6 +3805,8 @@ lock_table_names(THD *thd, const DDL_options_st &options,
for
(
table
=
tables_start
;
table
&&
table
!=
tables_end
;
table
=
table
->
next_global
)
{
DBUG_PRINT
(
"info"
,
(
"mdl_request.type: %d open_type: %d"
,
table
->
mdl_request
.
type
,
table
->
open_type
));
if
(
table
->
mdl_request
.
type
<
MDL_SHARED_UPGRADABLE
||
table
->
mdl_request
.
type
==
MDL_SHARED_READ_ONLY
||
table
->
open_type
==
OT_TEMPORARY_ONLY
||
...
...
sql/sql_base.h
View file @
ae58cd6b
...
...
@@ -288,10 +288,6 @@ TABLE *open_system_table_for_update(THD *thd, TABLE_LIST *one_table);
TABLE
*
open_log_table
(
THD
*
thd
,
TABLE_LIST
*
one_table
,
Open_tables_backup
*
backup
);
void
close_log_table
(
THD
*
thd
,
Open_tables_backup
*
backup
);
TABLE
*
open_performance_schema_table
(
THD
*
thd
,
TABLE_LIST
*
one_table
,
Open_tables_state
*
backup
);
void
close_performance_schema_table
(
THD
*
thd
,
Open_tables_state
*
backup
);
bool
close_cached_tables
(
THD
*
thd
,
TABLE_LIST
*
tables
,
bool
wait_for_refresh
,
ulong
timeout
);
bool
close_cached_connection_tables
(
THD
*
thd
,
LEX_CSTRING
*
connect_string
);
...
...
sql/sql_cache.cc
View file @
ae58cd6b
...
...
@@ -276,8 +276,8 @@ The query cache interfaces with the rest of the server code through 7
- Called before parsing and used to match a statement with the stored
queries hash.
If a match is found the cached result set is sent through repeated
calls to net_real_write. (note: calling thread does
n't have a regis-
tered result set writer: thd->net.query_cache_query=0)
calls to net_real_write. (note: calling thread does
not have a
regis
tered result set writer: thd->net.query_cache_query=0)
2. Query_cache::store_query
- Called just before handle_select() and is used to register a result
set writer to the statement currently being processed
...
...
sql/sql_table.cc
View file @
ae58cd6b
...
...
@@ -10541,7 +10541,7 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to,
if
(
!
cleanup_done
)
{
/* This happens if we get an error during initialzation of data */
/* This happens if we get an error during initial
i
zation of data */
DBUG_ASSERT
(
error
);
to
->
file
->
ha_end_bulk_insert
();
ha_enable_transaction
(
thd
,
TRUE
);
...
...
sql/table_cache.cc
View file @
ae58cd6b
...
...
@@ -232,7 +232,7 @@ static void intern_close_table(TABLE *table)
uint
tc_records
(
void
)
{
ulong
total
=
0
;
for
(
u
long
i
=
0
;
i
<
tc_instances
;
i
++
)
for
(
u
int32
i
=
0
;
i
<
tc_instances
;
i
++
)
{
mysql_mutex_lock
(
&
tc
[
i
].
LOCK_table_cache
);
total
+=
tc
[
i
].
records
;
...
...
@@ -277,7 +277,7 @@ static void tc_remove_all_unused_tables(TDC_element *element,
*/
if
(
mark_flushed
)
element
->
flushed
=
true
;
for
(
u
long
i
=
0
;
i
<
tc_instances
;
i
++
)
for
(
u
int32
i
=
0
;
i
<
tc_instances
;
i
++
)
{
mysql_mutex_lock
(
&
tc
[
i
].
LOCK_table_cache
);
while
((
table
=
element
->
free_tables
[
i
].
list
.
pop_front
()))
...
...
@@ -491,7 +491,7 @@ static void tdc_assert_clean_share(TDC_element *element)
DBUG_ASSERT
(
element
->
m_flush_tickets
.
is_empty
());
DBUG_ASSERT
(
element
->
all_tables
.
is_empty
());
#ifndef DBUG_OFF
for
(
u
long
i
=
0
;
i
<
tc_instances
;
i
++
)
for
(
u
int32
i
=
0
;
i
<
tc_instances
;
i
++
)
DBUG_ASSERT
(
element
->
free_tables
[
i
].
list
.
is_empty
());
#endif
DBUG_ASSERT
(
element
->
all_tables_refs
==
0
);
...
...
@@ -564,7 +564,7 @@ static void lf_alloc_constructor(uchar *arg)
mysql_cond_init
(
key_TABLE_SHARE_COND_release
,
&
element
->
COND_release
,
0
);
element
->
m_flush_tickets
.
empty
();
element
->
all_tables
.
empty
();
for
(
u
long
i
=
0
;
i
<
tc_instances
;
i
++
)
for
(
u
int32
i
=
0
;
i
<
tc_instances
;
i
++
)
element
->
free_tables
[
i
].
list
.
empty
();
element
->
all_tables_refs
=
0
;
element
->
share
=
0
;
...
...
sql/vers_utils.h
View file @
ae58cd6b
...
...
@@ -5,43 +5,4 @@
#include "sql_class.h"
#include "vers_string.h"
class
MDL_auto_lock
{
THD
*
thd
;
TABLE_LIST
&
table
;
bool
error
;
public:
MDL_auto_lock
(
THD
*
_thd
,
TABLE_LIST
&
_table
)
:
thd
(
_thd
),
table
(
_table
)
{
DBUG_ASSERT
(
thd
);
MDL_request
protection_request
;
if
(
thd
->
global_read_lock
.
can_acquire_protection
())
{
error
=
true
;
return
;
}
protection_request
.
init
(
MDL_key
::
GLOBAL
,
""
,
""
,
MDL_INTENTION_EXCLUSIVE
,
MDL_EXPLICIT
);
error
=
thd
->
mdl_context
.
acquire_lock
(
&
protection_request
,
thd
->
variables
.
lock_wait_timeout
);
if
(
error
)
return
;
table
.
mdl_request
.
init
(
MDL_key
::
TABLE
,
table
.
db
.
str
,
table
.
table_name
.
str
,
MDL_EXCLUSIVE
,
MDL_EXPLICIT
);
error
=
thd
->
mdl_context
.
acquire_lock
(
&
table
.
mdl_request
,
thd
->
variables
.
lock_wait_timeout
);
thd
->
mdl_context
.
release_lock
(
protection_request
.
ticket
);
}
~
MDL_auto_lock
()
{
if
(
!
error
)
{
DBUG_ASSERT
(
table
.
mdl_request
.
ticket
);
thd
->
mdl_context
.
release_lock
(
table
.
mdl_request
.
ticket
);
table
.
mdl_request
.
ticket
=
NULL
;
}
}
bool
acquire_error
()
const
{
return
error
;
}
};
#endif // VERS_UTILS_INCLUDED
sql/wsrep_sst.cc
View file @
ae58cd6b
...
...
@@ -1266,7 +1266,7 @@ static void* sst_donor_thread (void* a)
mysql_mutex_unlock
(
mysql_bin_log
.
get_log_lock
());
}
sst_disallow_writes
(
thd
.
ptr
,
false
);
thd
.
ptr
->
global_read_lock
.
unlock_global_read_lock
(
thd
.
ptr
);
thd
.
ptr
->
global_read_lock
.
unlock_global_read_lock
(
thd
.
ptr
);
locked
=
false
;
}
err
=
0
;
...
...
@@ -1303,7 +1303,7 @@ static void* sst_donor_thread (void* a)
mysql_mutex_unlock
(
mysql_bin_log
.
get_log_lock
());
}
sst_disallow_writes
(
thd
.
ptr
,
false
);
thd
.
ptr
->
global_read_lock
.
unlock_global_read_lock
(
thd
.
ptr
);
thd
.
ptr
->
global_read_lock
.
unlock_global_read_lock
(
thd
.
ptr
);
}
// signal to donor that SST is over
...
...
unittest/sql/mf_iocache-t.cc
View file @
ae58cd6b
...
...
@@ -352,7 +352,7 @@ void mdev17133()
// random size 2nd read
res
=
my_b_read
(
&
info
,
buf_i
+
total
+
MY_MIN
(
19
,
curr_read_size
),
19
>=
curr_read_size
?
0
:
curr_read_size
-
19
);
ok
(
res
==
0
,
"rest of read %lu"
,
curr_read_size
-
19
);
ok
(
res
==
0
,
"rest of read %lu"
,
(
ulong
)
(
curr_read_size
-
19
)
);
// mark read bytes in the used part of the cache buffer
memset
(
info
.
buffer
,
0
,
info
.
read_pos
-
info
.
buffer
);
...
...
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