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
8536c541
Commit
8536c541
authored
Sep 15, 2013
by
Rich Prohaska
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refs #71 basic lock tree visualization
parent
aa07e4bd
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
396 additions
and
46 deletions
+396
-46
storage/tokudb/hatoku_defines.h
storage/tokudb/hatoku_defines.h
+7
-2
storage/tokudb/hatoku_hton.cc
storage/tokudb/hatoku_hton.cc
+389
-44
No files found.
storage/tokudb/hatoku_defines.h
View file @
8536c541
...
...
@@ -330,9 +330,14 @@ static inline void make_name(char *newname, const char *tablename, const char *d
}
static
inline
int
txn_begin
(
DB_ENV
*
env
,
DB_TXN
*
parent
,
DB_TXN
**
txn
,
uint32_t
flags
,
THD
*
thd
)
{
*
txn
=
NULL
;
int
r
=
env
->
txn_begin
(
env
,
parent
,
txn
,
flags
);
if
((
tokudb_debug
&
TOKUDB_DEBUG_TXN
)
&&
r
==
0
)
{
TOKUDB_TRACE
(
"begin txn %p %p %u
\n
"
,
parent
,
*
txn
,
flags
);
if
(
r
==
0
&&
thd
)
{
DB_TXN
*
this_txn
=
*
txn
;
this_txn
->
set_client_id
(
this_txn
,
thd_get_thread_id
(
thd
));
}
if
((
tokudb_debug
&
TOKUDB_DEBUG_TXN
))
{
TOKUDB_TRACE
(
"begin txn %p %p %u r=%d
\n
"
,
parent
,
*
txn
,
flags
,
r
);
}
return
r
;
}
...
...
storage/tokudb/hatoku_hton.cc
View file @
8536c541
...
...
@@ -311,6 +311,10 @@ srv_row_format_t get_row_format(THD *thd)
return
(
srv_row_format_t
)
THDVAR
(
thd
,
row_format
);
}
static
MYSQL_THDVAR_UINT
(
lock_timeout_debug
,
0
,
"TokuDB lock timeout debug"
,
NULL
,
NULL
,
0
,
0
,
~
0U
,
1
);
static
MYSQL_THDVAR_STR
(
last_lock_timeout
,
PLUGIN_VAR_MEMALLOC
,
"last TokuDB lock timeout"
,
NULL
,
NULL
,
NULL
);
static
void
tokudb_print_error
(
const
DB_ENV
*
db_env
,
const
char
*
db_errpfx
,
const
char
*
buffer
);
static
void
tokudb_cleanup_log_files
(
void
);
static
int
tokudb_end
(
handlerton
*
hton
,
ha_panic_function
type
);
...
...
@@ -354,6 +358,7 @@ void toku_hton_update_primary_key_bytes_inserted(uint64_t row_size) {
}
static
ulonglong
tokudb_lock_timeout
;
static
void
tokudb_lock_timeout_callback
(
DB
*
db
,
uint64_t
requesting_txnid
,
const
DBT
*
left_key
,
const
DBT
*
right_key
,
uint64_t
blocking_txnid
);
static
ulong
tokudb_cleaner_period
;
static
ulong
tokudb_cleaner_iterations
;
...
...
@@ -438,6 +443,7 @@ static SHOW_VAR *toku_global_status_variables = NULL;
static
uint64_t
toku_global_status_max_rows
;
static
TOKU_ENGINE_STATUS_ROW_S
*
toku_global_status_rows
=
NULL
;
static
int
tokudb_init_func
(
void
*
p
)
{
TOKUDB_DBUG_ENTER
(
"tokudb_init_func"
);
int
r
;
...
...
@@ -624,6 +630,8 @@ static int tokudb_init_func(void *p) {
db_env
->
set_update
(
db_env
,
tokudb_update_fun
);
db_env_set_direct_io
(
tokudb_directio
==
TRUE
);
db_env
->
change_fsync_log_period
(
db_env
,
tokudb_fsync_log_period
);
db_env
->
set_lock_timeout_callback
(
db_env
,
tokudb_lock_timeout_callback
);
r
=
db_env
->
open
(
db_env
,
tokudb_home
,
tokudb_init_flags
,
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
|
S_IROTH
|
S_IWOTH
);
if
(
tokudb_debug
&
TOKUDB_DEBUG_INIT
)
TOKUDB_TRACE
(
"%s:env opened:return=%d
\n
"
,
__FUNCTION__
,
r
);
...
...
@@ -856,54 +864,19 @@ typedef struct txn_progress_info {
THD
*
thd
;
}
*
TXN_PROGRESS_INFO
;
void
txn_progress_func
(
TOKU_TXN_PROGRESS
progress
,
void
*
extra
)
{
static
void
txn_progress_func
(
TOKU_TXN_PROGRESS
progress
,
void
*
extra
)
{
TXN_PROGRESS_INFO
progress_info
=
(
TXN_PROGRESS_INFO
)
extra
;
int
r
;
if
(
progress
->
stalled_on_checkpoint
)
{
if
(
progress
->
is_commit
)
{
r
=
sprintf
(
progress_info
->
status
,
"Writing committed changes to disk, processing commit of transaction, %"
PRId64
" out of %"
PRId64
,
progress
->
entries_processed
,
progress
->
entries_total
);
assert
(
r
>=
0
);
}
else
{
r
=
sprintf
(
progress_info
->
status
,
"Writing committed changes to disk, processing abort of transaction, %"
PRId64
" out of %"
PRId64
,
progress
->
entries_processed
,
progress
->
entries_total
);
assert
(
r
>=
0
);
}
}
else
{
if
(
progress
->
is_commit
)
{
r
=
sprintf
(
progress_info
->
status
,
"processing commit of transaction, %"
PRId64
" out of %"
PRId64
,
progress
->
entries_processed
,
progress
->
entries_total
);
assert
(
r
>=
0
);
}
else
{
r
=
sprintf
(
progress_info
->
status
,
"processing abort of transaction, %"
PRId64
" out of %"
PRId64
,
int
r
=
sprintf
(
progress_info
->
status
,
"%sprocessing %s of transaction, %"
PRId64
" out of %"
PRId64
,
progress
->
stalled_on_checkpoint
?
"Writing committed changes to disk, "
:
""
,
progress
->
is_commit
?
"commit"
:
"abort"
,
progress
->
entries_processed
,
progress
->
entries_total
);
assert
(
r
>=
0
);
}
}
thd_proc_info
(
progress_info
->
thd
,
progress_info
->
status
);
}
static
void
commit_txn_with_progress
(
DB_TXN
*
txn
,
uint32_t
flags
,
THD
*
thd
)
{
int
r
;
struct
txn_progress_info
info
;
...
...
@@ -1551,6 +1524,8 @@ static struct st_mysql_sys_var *tokudb_system_variables[] = {
MYSQL_SYSVAR
(
fsync_log_period
),
MYSQL_SYSVAR
(
gdb_path
),
MYSQL_SYSVAR
(
gdb_on_fatal
),
MYSQL_SYSVAR
(
last_lock_timeout
),
MYSQL_SYSVAR
(
lock_timeout_debug
),
NULL
};
...
...
@@ -2290,6 +2265,280 @@ static int tokudb_fractal_tree_block_map_done(void *p) {
return
0
;
}
static
void
tokudb_pretty_key
(
const
DB
*
db
,
const
DBT
*
key
,
const
char
*
default_key
,
String
*
out
)
{
if
(
key
->
data
==
NULL
)
{
out
->
append
(
default_key
);
}
else
{
bool
do_hexdump
=
true
;
if
(
do_hexdump
)
{
// hexdump the key
const
unsigned
char
*
data
=
reinterpret_cast
<
const
unsigned
char
*>
(
key
->
data
);
for
(
size_t
i
=
0
;
i
<
key
->
size
;
i
++
)
{
char
str
[
3
];
snprintf
(
str
,
sizeof
str
,
"%2.2x"
,
data
[
i
]);
out
->
append
(
str
);
}
}
}
}
static
void
tokudb_pretty_left_key
(
const
DB
*
db
,
const
DBT
*
key
,
String
*
out
)
{
tokudb_pretty_key
(
db
,
key
,
"-infinity"
,
out
);
}
static
void
tokudb_pretty_right_key
(
const
DB
*
db
,
const
DBT
*
key
,
String
*
out
)
{
tokudb_pretty_key
(
db
,
key
,
"+infinity"
,
out
);
}
static
const
char
*
tokudb_get_index_name
(
DB
*
db
)
{
if
(
db
!=
NULL
)
{
return
db
->
get_dname
(
db
);
}
else
{
return
"$ydb_internal"
;
}
}
static
void
tokudb_lock_timeout_callback
(
DB
*
db
,
uint64_t
requesting_txnid
,
const
DBT
*
left_key
,
const
DBT
*
right_key
,
uint64_t
blocking_txnid
)
{
THD
*
thd
=
current_thd
;
if
(
!
thd
)
return
;
ulong
lock_timeout_debug
=
THDVAR
(
thd
,
lock_timeout_debug
);
if
(
lock_timeout_debug
!=
0
)
{
// generate a JSON document with the lock timeout info
String
log_str
;
log_str
.
append
(
"{"
);
log_str
.
append
(
"
\"
mysql_thread_id
\"
:"
);
log_str
.
append_ulonglong
(
thd
->
thread_id
);
log_str
.
append
(
",
\"
dbname
\"
:
\"
"
);
log_str
.
append
(
tokudb_get_index_name
(
db
));
log_str
.
append
(
"
\"
,
\"
requesting_txnid
\"
:"
);
log_str
.
append_ulonglong
(
requesting_txnid
);
log_str
.
append
(
",
\"
blocking_txnid
\"
:"
);
log_str
.
append_ulonglong
(
blocking_txnid
);
String
left_str
;
tokudb_pretty_left_key
(
db
,
left_key
,
&
left_str
);
log_str
.
append
(
",
\"
left
\"
:
\"
"
);
log_str
.
append
(
left_str
);
String
right_str
;
tokudb_pretty_right_key
(
db
,
right_key
,
&
right_str
);
log_str
.
append
(
"
\"
,
\"
right
\"
:
\"
"
);
log_str
.
append
(
right_str
);
log_str
.
append
(
"
\"
}"
);
// set last_lock_timeout
if
(
lock_timeout_debug
&
1
)
{
char
*
old_lock_timeout
=
THDVAR
(
thd
,
last_lock_timeout
);
char
*
new_lock_timeout
=
my_strdup
(
log_str
.
c_ptr
(),
MY_FAE
);
THDVAR
(
thd
,
last_lock_timeout
)
=
new_lock_timeout
;
my_free
(
old_lock_timeout
);
}
// dump to stderr
if
(
lock_timeout_debug
&
2
)
{
fprintf
(
stderr
,
"tokudb_lock_timeout: %s
\n
"
,
log_str
.
c_ptr
());
}
}
}
static
struct
st_mysql_information_schema
tokudb_trx_information_schema
=
{
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION
};
static
ST_FIELD_INFO
tokudb_trx_field_info
[]
=
{
{
"trx_id"
,
0
,
MYSQL_TYPE_LONGLONG
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"trx_mysql_thread_id"
,
0
,
MYSQL_TYPE_LONGLONG
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
NULL
,
0
,
MYSQL_TYPE_NULL
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
}
};
struct
tokudb_trx_extra
{
THD
*
thd
;
TABLE
*
table
;
};
static
int
tokudb_trx_callback
(
uint64_t
txn_id
,
uint64_t
client_id
,
iterate_row_locks_callback
iterate_locks
,
void
*
locks_extra
,
void
*
extra
)
{
struct
tokudb_trx_extra
*
e
=
reinterpret_cast
<
struct
tokudb_trx_extra
*>
(
extra
);
THD
*
thd
=
e
->
thd
;
TABLE
*
table
=
e
->
table
;
table
->
field
[
0
]
->
store
(
txn_id
,
false
);
table
->
field
[
1
]
->
store
(
client_id
,
false
);
int
error
=
schema_table_store_record
(
thd
,
table
);
return
error
;
}
#if MYSQL_VERSION_ID >= 50600
static
int
tokudb_trx_fill_table
(
THD
*
thd
,
TABLE_LIST
*
tables
,
Item
*
cond
)
{
#else
static
int
tokudb_trx_fill_table
(
THD
*
thd
,
TABLE_LIST
*
tables
,
COND
*
cond
)
{
#endif
int
error
;
rw_rdlock
(
&
tokudb_hton_initialized_lock
);
if
(
!
tokudb_hton_initialized
)
{
my_error
(
ER_PLUGIN_IS_NOT_LOADED
,
MYF
(
0
),
"TokuDB"
);
error
=
-
1
;
}
else
{
struct
tokudb_trx_extra
e
=
{
thd
,
tables
->
table
};
error
=
db_env
->
iterate_live_transactions
(
db_env
,
tokudb_trx_callback
,
&
e
);
}
rw_unlock
(
&
tokudb_hton_initialized_lock
);
return
error
;
}
static
int
tokudb_trx_init
(
void
*
p
)
{
ST_SCHEMA_TABLE
*
schema
=
(
ST_SCHEMA_TABLE
*
)
p
;
schema
->
fields_info
=
tokudb_trx_field_info
;
schema
->
fill_table
=
tokudb_trx_fill_table
;
return
0
;
}
static
int
tokudb_trx_done
(
void
*
p
)
{
return
0
;
}
static
struct
st_mysql_information_schema
tokudb_lock_waits_information_schema
=
{
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION
};
static
ST_FIELD_INFO
tokudb_lock_waits_field_info
[]
=
{
{
"requesting_trx_id"
,
0
,
MYSQL_TYPE_LONGLONG
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"blocking_trx_id"
,
0
,
MYSQL_TYPE_LONGLONG
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"lock_waits_dname"
,
256
,
MYSQL_TYPE_STRING
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"lock_waits_left"
,
256
,
MYSQL_TYPE_STRING
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"lock_waits_right"
,
256
,
MYSQL_TYPE_STRING
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"lock_waits_start_time"
,
0
,
MYSQL_TYPE_LONGLONG
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
NULL
,
0
,
MYSQL_TYPE_NULL
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
}
};
struct
tokudb_lock_waits_extra
{
THD
*
thd
;
TABLE
*
table
;
};
static
int
tokudb_lock_waits_callback
(
DB
*
db
,
uint64_t
requesting_txnid
,
const
DBT
*
left_key
,
const
DBT
*
right_key
,
uint64_t
blocking_txnid
,
uint64_t
start_time
,
void
*
extra
)
{
struct
tokudb_lock_waits_extra
*
e
=
reinterpret_cast
<
struct
tokudb_lock_waits_extra
*>
(
extra
);
THD
*
thd
=
e
->
thd
;
TABLE
*
table
=
e
->
table
;
table
->
field
[
0
]
->
store
(
requesting_txnid
,
false
);
table
->
field
[
1
]
->
store
(
blocking_txnid
,
false
);
const
char
*
dname
=
tokudb_get_index_name
(
db
);
size_t
dname_length
=
strlen
(
dname
);
table
->
field
[
2
]
->
store
(
dname
,
dname_length
,
system_charset_info
);
String
left_str
;
tokudb_pretty_left_key
(
db
,
left_key
,
&
left_str
);
table
->
field
[
3
]
->
store
(
left_str
.
ptr
(),
left_str
.
length
(),
system_charset_info
);
String
right_str
;
tokudb_pretty_right_key
(
db
,
right_key
,
&
right_str
);
table
->
field
[
4
]
->
store
(
right_str
.
ptr
(),
right_str
.
length
(),
system_charset_info
);
table
->
field
[
5
]
->
store
(
start_time
,
false
);
int
error
=
schema_table_store_record
(
thd
,
table
);
return
error
;
}
#if MYSQL_VERSION_ID >= 50600
static
int
tokudb_lock_waits_fill_table
(
THD
*
thd
,
TABLE_LIST
*
tables
,
Item
*
cond
)
{
#else
static
int
tokudb_lock_waits_fill_table
(
THD
*
thd
,
TABLE_LIST
*
tables
,
COND
*
cond
)
{
#endif
int
error
;
rw_rdlock
(
&
tokudb_hton_initialized_lock
);
if
(
!
tokudb_hton_initialized
)
{
my_error
(
ER_PLUGIN_IS_NOT_LOADED
,
MYF
(
0
),
"TokuDB"
);
error
=
-
1
;
}
else
{
struct
tokudb_lock_waits_extra
e
=
{
thd
,
tables
->
table
};
error
=
db_env
->
iterate_pending_lock_requests
(
db_env
,
tokudb_lock_waits_callback
,
&
e
);
}
rw_unlock
(
&
tokudb_hton_initialized_lock
);
return
error
;
}
static
int
tokudb_lock_waits_init
(
void
*
p
)
{
ST_SCHEMA_TABLE
*
schema
=
(
ST_SCHEMA_TABLE
*
)
p
;
schema
->
fields_info
=
tokudb_lock_waits_field_info
;
schema
->
fill_table
=
tokudb_lock_waits_fill_table
;
return
0
;
}
static
int
tokudb_lock_waits_done
(
void
*
p
)
{
return
0
;
}
static
struct
st_mysql_information_schema
tokudb_locks_information_schema
=
{
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION
};
static
ST_FIELD_INFO
tokudb_locks_field_info
[]
=
{
{
"locks_trx_id"
,
0
,
MYSQL_TYPE_LONGLONG
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"locks_mysql_thread_id"
,
0
,
MYSQL_TYPE_LONGLONG
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"locks_dname"
,
256
,
MYSQL_TYPE_STRING
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"locks_left"
,
256
,
MYSQL_TYPE_STRING
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
"locks_right"
,
256
,
MYSQL_TYPE_STRING
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
},
{
NULL
,
0
,
MYSQL_TYPE_NULL
,
0
,
0
,
NULL
,
SKIP_OPEN_TABLE
}
};
struct
tokudb_locks_extra
{
THD
*
thd
;
TABLE
*
table
;
};
static
int
tokudb_locks_callback
(
uint64_t
txn_id
,
uint64_t
client_id
,
iterate_row_locks_callback
iterate_locks
,
void
*
locks_extra
,
void
*
extra
)
{
struct
tokudb_locks_extra
*
e
=
reinterpret_cast
<
struct
tokudb_locks_extra
*>
(
extra
);
THD
*
thd
=
e
->
thd
;
TABLE
*
table
=
e
->
table
;
int
error
=
0
;
DB
*
db
;
DBT
left_key
,
right_key
;
while
(
error
==
0
&&
iterate_locks
(
&
db
,
&
left_key
,
&
right_key
,
locks_extra
)
==
0
)
{
table
->
field
[
0
]
->
store
(
txn_id
,
false
);
table
->
field
[
1
]
->
store
(
client_id
,
false
);
const
char
*
dname
=
tokudb_get_index_name
(
db
);
size_t
dname_length
=
strlen
(
dname
);
table
->
field
[
2
]
->
store
(
dname
,
dname_length
,
system_charset_info
);
String
left_str
;
tokudb_pretty_left_key
(
db
,
&
left_key
,
&
left_str
);
table
->
field
[
3
]
->
store
(
left_str
.
ptr
(),
left_str
.
length
(),
system_charset_info
);
String
right_str
;
tokudb_pretty_right_key
(
db
,
&
right_key
,
&
right_str
);
table
->
field
[
4
]
->
store
(
right_str
.
ptr
(),
right_str
.
length
(),
system_charset_info
);
error
=
schema_table_store_record
(
thd
,
table
);
}
return
error
;
}
#if MYSQL_VERSION_ID >= 50600
static
int
tokudb_locks_fill_table
(
THD
*
thd
,
TABLE_LIST
*
tables
,
Item
*
cond
)
{
#else
static
int
tokudb_locks_fill_table
(
THD
*
thd
,
TABLE_LIST
*
tables
,
COND
*
cond
)
{
#endif
int
error
;
rw_rdlock
(
&
tokudb_hton_initialized_lock
);
if
(
!
tokudb_hton_initialized
)
{
my_error
(
ER_PLUGIN_IS_NOT_LOADED
,
MYF
(
0
),
"TokuDB"
);
error
=
-
1
;
}
else
{
struct
tokudb_locks_extra
e
=
{
thd
,
tables
->
table
};
error
=
db_env
->
iterate_live_transactions
(
db_env
,
tokudb_locks_callback
,
&
e
);
}
rw_unlock
(
&
tokudb_hton_initialized_lock
);
return
error
;
}
static
int
tokudb_locks_init
(
void
*
p
)
{
ST_SCHEMA_TABLE
*
schema
=
(
ST_SCHEMA_TABLE
*
)
p
;
schema
->
fields_info
=
tokudb_locks_field_info
;
schema
->
fill_table
=
tokudb_locks_fill_table
;
return
0
;
}
static
int
tokudb_locks_done
(
void
*
p
)
{
return
0
;
}
enum
{
TOKUDB_PLUGIN_VERSION
=
0x0400
};
#define TOKUDB_PLUGIN_VERSION_STR "1024"
...
...
@@ -2432,6 +2681,57 @@ mysql_declare_plugin(tokudb)
0
,
/* flags */
#endif
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_trx_information_schema
,
"TokuDB_trx"
,
"Tokutek Inc"
,
"Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology"
,
PLUGIN_LICENSE_GPL
,
tokudb_trx_init
,
/* plugin init */
tokudb_trx_done
,
/* plugin deinit */
TOKUDB_PLUGIN_VERSION
,
/* 4.0.0 */
NULL
,
/* status variables */
NULL
,
/* system variables */
NULL
,
/* config options */
#if MYSQL_VERSION_ID >= 50521
0
,
/* flags */
#endif
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_lock_waits_information_schema
,
"TokuDB_lock_waits"
,
"Tokutek Inc"
,
"Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology"
,
PLUGIN_LICENSE_GPL
,
tokudb_lock_waits_init
,
/* plugin init */
tokudb_lock_waits_done
,
/* plugin deinit */
TOKUDB_PLUGIN_VERSION
,
/* 4.0.0 */
NULL
,
/* status variables */
NULL
,
/* system variables */
NULL
,
/* config options */
#if MYSQL_VERSION_ID >= 50521
0
,
/* flags */
#endif
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_locks_information_schema
,
"TokuDB_locks"
,
"Tokutek Inc"
,
"Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology"
,
PLUGIN_LICENSE_GPL
,
tokudb_locks_init
,
/* plugin init */
tokudb_locks_done
,
/* plugin deinit */
TOKUDB_PLUGIN_VERSION
,
/* 4.0.0 */
NULL
,
/* status variables */
NULL
,
/* system variables */
NULL
,
/* config options */
#if MYSQL_VERSION_ID >= 50521
0
,
/* flags */
#endif
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_user_data_information_schema
,
...
...
@@ -2537,6 +2837,51 @@ maria_declare_plugin(tokudb)
TOKUDB_PLUGIN_VERSION_STR
,
/* string version */
MariaDB_PLUGIN_MATURITY_STABLE
/* maturity */
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_trx_information_schema
,
"TokuDB_trx"
,
"Tokutek Inc"
,
"Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology"
,
PLUGIN_LICENSE_GPL
,
tokudb_trx_init
,
/* plugin init */
tokudb_trx_done
,
/* plugin deinit */
TOKUDB_PLUGIN_VERSION
,
/* 4.0.0 */
NULL
,
/* status variables */
NULL
,
/* system variables */
TOKUDB_PLUGIN_VERSION_STR
,
/* string version */
MariaDB_PLUGIN_MATURITY_STABLE
/* maturity */
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_lock_waits_information_schema
,
"TokuDB_lock_waits"
,
"Tokutek Inc"
,
"Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology"
,
PLUGIN_LICENSE_GPL
,
tokudb_lock_waits_init
,
/* plugin init */
tokudb_lock_waits_done
,
/* plugin deinit */
TOKUDB_PLUGIN_VERSION
,
/* 4.0.0 */
NULL
,
/* status variables */
NULL
,
/* system variables */
TOKUDB_PLUGIN_VERSION_STR
,
/* string version */
MariaDB_PLUGIN_MATURITY_STABLE
/* maturity */
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_locks_information_schema
,
"TokuDB_locks"
,
"Tokutek Inc"
,
"Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology"
,
PLUGIN_LICENSE_GPL
,
tokudb_locks_init
,
/* plugin init */
tokudb_locks_done
,
/* plugin deinit */
TOKUDB_PLUGIN_VERSION
,
/* 4.0.0 */
NULL
,
/* status variables */
NULL
,
/* system variables */
TOKUDB_PLUGIN_VERSION_STR
,
/* string version */
MariaDB_PLUGIN_MATURITY_STABLE
/* maturity */
},
{
MYSQL_INFORMATION_SCHEMA_PLUGIN
,
&
tokudb_user_data_information_schema
,
...
...
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