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
e5b75ac3
Commit
e5b75ac3
authored
Jan 18, 2022
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.7 into 10.8
parents
4775a406
b0998583
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
211 additions
and
295 deletions
+211
-295
storage/example/ha_example.cc
storage/example/ha_example.cc
+1
-1
storage/innobase/buf/buf0buf.cc
storage/innobase/buf/buf0buf.cc
+3
-0
storage/innobase/buf/buf0flu.cc
storage/innobase/buf/buf0flu.cc
+1
-6
storage/innobase/dict/dict0defrag_bg.cc
storage/innobase/dict/dict0defrag_bg.cc
+7
-3
storage/innobase/include/mtr0types.h
storage/innobase/include/mtr0types.h
+4
-12
storage/innobase/log/log0recv.cc
storage/innobase/log/log0recv.cc
+0
-6
storage/oqgraph/ha_oqgraph.cc
storage/oqgraph/ha_oqgraph.cc
+1
-1
storage/oqgraph/mysql-test/oqgraph/invalid_operations.result
storage/oqgraph/mysql-test/oqgraph/invalid_operations.result
+11
-0
storage/oqgraph/mysql-test/oqgraph/invalid_operations.test
storage/oqgraph/mysql-test/oqgraph/invalid_operations.test
+13
-0
storage/spider/ha_spider.cc
storage/spider/ha_spider.cc
+99
-169
storage/spider/ha_spider.h
storage/spider/ha_spider.h
+2
-3
storage/spider/mysql-test/spider/bugfix/r/mdev_27240.result
storage/spider/mysql-test/spider/bugfix/r/mdev_27240.result
+16
-0
storage/spider/mysql-test/spider/bugfix/t/mdev_27240.cnf
storage/spider/mysql-test/spider/bugfix/t/mdev_27240.cnf
+2
-0
storage/spider/mysql-test/spider/bugfix/t/mdev_27240.test
storage/spider/mysql-test/spider/bugfix/t/mdev_27240.test
+28
-0
storage/spider/spd_include.h
storage/spider/spd_include.h
+4
-13
storage/spider/spd_table.cc
storage/spider/spd_table.cc
+18
-72
storage/spider/spd_table.h
storage/spider/spd_table.h
+1
-9
No files found.
storage/example/ha_example.cc
View file @
e5b75ac3
...
@@ -262,7 +262,7 @@ static int example_init_func(void *p)
...
@@ -262,7 +262,7 @@ static int example_init_func(void *p)
example_hton
->
table_options
=
example_table_option_list
;
example_hton
->
table_options
=
example_table_option_list
;
example_hton
->
field_options
=
example_field_option_list
;
example_hton
->
field_options
=
example_field_option_list
;
example_hton
->
tablefile_extensions
=
ha_example_exts
;
example_hton
->
tablefile_extensions
=
ha_example_exts
;
example_hton
->
drop_table
=
[](
handlerton
*
,
const
char
*
)
{
return
0
;
};
example_hton
->
drop_table
=
[](
handlerton
*
,
const
char
*
)
{
return
-
1
;
};
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
...
...
storage/innobase/buf/buf0buf.cc
View file @
e5b75ac3
...
@@ -1310,6 +1310,9 @@ inline bool buf_pool_t::realloc(buf_block_t *block)
...
@@ -1310,6 +1310,9 @@ inline bool buf_pool_t::realloc(buf_block_t *block)
new_block
=
buf_LRU_get_free_only
();
new_block
=
buf_LRU_get_free_only
();
if
(
new_block
==
NULL
)
{
if
(
new_block
==
NULL
)
{
mysql_mutex_lock
(
&
buf_pool
.
flush_list_mutex
);
page_cleaner_wakeup
();
mysql_mutex_unlock
(
&
buf_pool
.
flush_list_mutex
);
return
(
false
);
/* free list was not enough */
return
(
false
);
/* free list was not enough */
}
}
...
...
storage/innobase/buf/buf0flu.cc
View file @
e5b75ac3
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2013, 202
1
, MariaDB Corporation.
Copyright (c) 2013, 202
2
, MariaDB Corporation.
Copyright (c) 2013, 2014, Fusion-io
Copyright (c) 2013, 2014, Fusion-io
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
...
@@ -1789,11 +1789,6 @@ static void buf_flush_wait(lsn_t lsn)
...
@@ -1789,11 +1789,6 @@ static void buf_flush_wait(lsn_t lsn)
my_cond_wait
(
&
buf_pool
.
done_flush_list
,
my_cond_wait
(
&
buf_pool
.
done_flush_list
,
&
buf_pool
.
flush_list_mutex
.
m_mutex
);
&
buf_pool
.
flush_list_mutex
.
m_mutex
);
}
}
/* Wait for the checkpoint. */
while
(
buf_flush_sync_lsn
)
my_cond_wait
(
&
buf_pool
.
done_flush_list
,
&
buf_pool
.
flush_list_mutex
.
m_mutex
);
}
}
/** Wait until all persistent pages are flushed up to a limit.
/** Wait until all persistent pages are flushed up to a limit.
...
...
storage/innobase/dict/dict0defrag_bg.cc
View file @
e5b75ac3
/*****************************************************************************
/*****************************************************************************
Copyright (c) 2016, 202
1
, MariaDB Corporation.
Copyright (c) 2016, 202
2
, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
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 Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -253,7 +253,9 @@ dberr_t dict_stats_save_defrag_summary(dict_index_t *index, THD *thd)
...
@@ -253,7 +253,9 @@ dberr_t dict_stats_save_defrag_summary(dict_index_t *index, THD *thd)
trx_t
*
trx
=
trx_create
();
trx_t
*
trx
=
trx_create
();
trx
->
mysql_thd
=
thd
;
trx
->
mysql_thd
=
thd
;
trx_start_internal
(
trx
);
trx_start_internal
(
trx
);
dberr_t
ret
=
lock_table_for_trx
(
table_stats
,
trx
,
LOCK_X
);
dberr_t
ret
=
trx
->
read_only
?
DB_READ_ONLY
:
lock_table_for_trx
(
table_stats
,
trx
,
LOCK_X
);
if
(
ret
==
DB_SUCCESS
)
if
(
ret
==
DB_SUCCESS
)
ret
=
lock_table_for_trx
(
index_stats
,
trx
,
LOCK_X
);
ret
=
lock_table_for_trx
(
index_stats
,
trx
,
LOCK_X
);
row_mysql_lock_data_dictionary
(
trx
);
row_mysql_lock_data_dictionary
(
trx
);
...
@@ -388,7 +390,9 @@ dict_stats_save_defrag_stats(
...
@@ -388,7 +390,9 @@ dict_stats_save_defrag_stats(
trx_t
*
trx
=
trx_create
();
trx_t
*
trx
=
trx_create
();
trx
->
mysql_thd
=
thd
;
trx
->
mysql_thd
=
thd
;
trx_start_internal
(
trx
);
trx_start_internal
(
trx
);
dberr_t
ret
=
lock_table_for_trx
(
table_stats
,
trx
,
LOCK_X
);
dberr_t
ret
=
trx
->
read_only
?
DB_READ_ONLY
:
lock_table_for_trx
(
table_stats
,
trx
,
LOCK_X
);
if
(
ret
==
DB_SUCCESS
)
if
(
ret
==
DB_SUCCESS
)
ret
=
lock_table_for_trx
(
index_stats
,
trx
,
LOCK_X
);
ret
=
lock_table_for_trx
(
index_stats
,
trx
,
LOCK_X
);
...
...
storage/innobase/include/mtr0types.h
View file @
e5b75ac3
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1995, 2015, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 1995, 2015, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 202
1
, MariaDB Corporation.
Copyright (c) 2017, 202
2
, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
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 Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -112,13 +112,9 @@ If same_page=1 is set in a record that follows a same_page=0 record
...
@@ -112,13 +112,9 @@ If same_page=1 is set in a record that follows a same_page=0 record
in a mini-transaction, the tablespace identifier and page number
in a mini-transaction, the tablespace identifier and page number
fields will be omitted.
fields will be omitted.
(For some file-oriented records (if same_page=1 for the first records
For FILE_ records (if same_page=1 for the first record
of a mini-transaction), we will write tablespace identifier using the
of a mini-transaction), we will write a tablespace identifier and
same 1-to-5-byte encoding. TBD: describe the exact format of
a page number (always 0) using the same 1-to-5-byte encoding.
file-oriented records. With MDEV-14425, we could write file-level log
records to a separate file, not interleaved with page-level redo log
at all. We could reserve the file ib_logfile0 for checkpoint information
and for file-level redo log records.)
For FREE_PAGE or INIT_PAGE, if same_page=1, the record will be treated
For FREE_PAGE or INIT_PAGE, if same_page=1, the record will be treated
as corrupted (or reserved for future extension). The type code must
as corrupted (or reserved for future extension). The type code must
...
@@ -301,18 +297,14 @@ enum mfile_type_t
...
@@ -301,18 +297,14 @@ enum mfile_type_t
FILE_RENAME
=
0xa0
,
FILE_RENAME
=
0xa0
,
/** Modify a file. Followed by tablespace ID and the file name. */
/** Modify a file. Followed by tablespace ID and the file name. */
FILE_MODIFY
=
0xb0
,
FILE_MODIFY
=
0xb0
,
#if 1
/* MDEV-14425 FIXME: Remove this! */
/** End-of-checkpoint marker. Followed by 2 dummy bytes of page identifier,
/** End-of-checkpoint marker. Followed by 2 dummy bytes of page identifier,
8 bytes of LSN, and padded with a NUL; @see SIZE_OF_FILE_CHECKPOINT. */
8 bytes of LSN, and padded with a NUL; @see SIZE_OF_FILE_CHECKPOINT. */
FILE_CHECKPOINT
=
0xf0
FILE_CHECKPOINT
=
0xf0
#endif
};
};
#if 1
/* MDEV-14425 FIXME: Remove this! */
/** Size of a FILE_CHECKPOINT record, including the trailing byte to
/** Size of a FILE_CHECKPOINT record, including the trailing byte to
terminate the mini-transaction. */
terminate the mini-transaction. */
constexpr
byte
SIZE_OF_FILE_CHECKPOINT
=
3
/*type,page_id*/
+
8
/*LSN*/
+
1
;
constexpr
byte
SIZE_OF_FILE_CHECKPOINT
=
3
/*type,page_id*/
+
8
/*LSN*/
+
1
;
#endif
#ifndef UNIV_INNOCHECKSUM
#ifndef UNIV_INNOCHECKSUM
/** Types for the mlock objects to store in the mtr_t::m_memo */
/** Types for the mlock objects to store in the mtr_t::m_memo */
...
...
storage/innobase/log/log0recv.cc
View file @
e5b75ac3
...
@@ -2229,9 +2229,7 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
...
@@ -2229,9 +2229,7 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
#endif
#endif
uint32_t
space_id
=
0
,
page_no
=
0
,
last_offset
=
0
;
uint32_t
space_id
=
0
,
page_no
=
0
,
last_offset
=
0
;
#if 1
/* MDEV-14425 FIXME: remove this */
bool
got_page_op
=
false
;
bool
got_page_op
=
false
;
#endif
for
(
l
=
log
;
l
<
end
;
l
+=
rlen
)
for
(
l
=
log
;
l
<
end
;
l
+=
rlen
)
{
{
const
byte
*
const
recs
=
l
;
const
byte
*
const
recs
=
l
;
...
@@ -2503,11 +2501,9 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
...
@@ -2503,11 +2501,9 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
pages
.
erase
(
i
);
pages
.
erase
(
i
);
}
}
}
}
#if 1
/* MDEV-14425 FIXME: this must be in the checkpoint file only! */
else
if
(
rlen
)
else
if
(
rlen
)
{
{
switch
(
b
&
0xf0
)
{
switch
(
b
&
0xf0
)
{
# if 1
/* MDEV-14425 FIXME: Remove this! */
case
FILE_CHECKPOINT
:
case
FILE_CHECKPOINT
:
if
(
space_id
==
0
&&
page_no
==
0
&&
rlen
==
8
)
if
(
space_id
==
0
&&
page_no
==
0
&&
rlen
==
8
)
{
{
...
@@ -2538,7 +2534,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
...
@@ -2538,7 +2534,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
}
}
continue
;
continue
;
}
}
# endif
/* fall through */
/* fall through */
default:
default:
if
(
!
srv_force_recovery
)
if
(
!
srv_force_recovery
)
...
@@ -2618,7 +2613,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
...
@@ -2618,7 +2613,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
return
true
;
return
true
;
}
}
}
}
#endif
else
else
goto
malformed
;
goto
malformed
;
}
}
...
...
storage/oqgraph/ha_oqgraph.cc
View file @
e5b75ac3
...
@@ -194,7 +194,7 @@ static int oqgraph_init(void *p)
...
@@ -194,7 +194,7 @@ static int oqgraph_init(void *p)
hton
->
discover_table_structure
=
oqgraph_discover_table_structure
;
hton
->
discover_table_structure
=
oqgraph_discover_table_structure
;
hton
->
close_connection
=
oqgraph_close_connection
;
hton
->
close_connection
=
oqgraph_close_connection
;
hton
->
drop_table
=
[](
handlerton
*
,
const
char
*
)
{
return
0
;
};
hton
->
drop_table
=
[](
handlerton
*
,
const
char
*
)
{
return
-
1
;
};
oqgraph_init_done
=
TRUE
;
oqgraph_init_done
=
TRUE
;
return
0
;
return
0
;
...
...
storage/oqgraph/mysql-test/oqgraph/invalid_operations.result
View file @
e5b75ac3
...
@@ -30,3 +30,14 @@ update graph set origid=123;
...
@@ -30,3 +30,14 @@ update graph set origid=123;
ERROR HY000: Table 'graph' is read only
ERROR HY000: Table 'graph' is read only
DROP TABLE graph_base;
DROP TABLE graph_base;
DROP TABLE graph;
DROP TABLE graph;
#
# End of 10.0 tests
#
#
# MDEV-25373 DROP TABLE doesn't raise error while dropping non-existing table in MariaDB 10.5.9 when OQGraph SE is loaded to the server
#
drop table foobar;
ERROR 42S02: Unknown table 'test.foobar'
#
# End of 10.5 tests
#
storage/oqgraph/mysql-test/oqgraph/invalid_operations.test
View file @
e5b75ac3
...
@@ -48,3 +48,16 @@ update graph set origid=123;
...
@@ -48,3 +48,16 @@ update graph set origid=123;
DROP
TABLE
graph_base
;
DROP
TABLE
graph_base
;
DROP
TABLE
graph
;
DROP
TABLE
graph
;
--
echo
#
--
echo
# End of 10.0 tests
--
echo
#
--
echo
#
--
echo
# MDEV-25373 DROP TABLE doesn't raise error while dropping non-existing table in MariaDB 10.5.9 when OQGraph SE is loaded to the server
--
echo
#
--
error
1051
drop
table
foobar
;
--
echo
#
--
echo
# End of 10.5 tests
--
echo
#
storage/spider/ha_spider.cc
View file @
e5b75ac3
This diff is collapsed.
Click to expand it.
storage/spider/ha_spider.h
View file @
e5b75ac3
/* Copyright (C) 2008-2019 Kentoku Shiba
/* Copyright (C) 2008-2019 Kentoku Shiba
Copyright (C) 2019 MariaDB corp
Copyright (C) 2019
-2022
MariaDB corp
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
@@ -92,8 +92,7 @@ class ha_spider final : public handler
...
@@ -92,8 +92,7 @@ class ha_spider final : public handler
SPIDER_POSITION
*
pushed_pos
;
SPIDER_POSITION
*
pushed_pos
;
SPIDER_POSITION
pushed_pos_buf
;
SPIDER_POSITION
pushed_pos_buf
;
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
bool
pt_handler_share_owner
=
FALSE
;
SPIDER_PARTITION_HANDLER
*
partition_handler
;
SPIDER_PARTITION_HANDLER_SHARE
*
partition_handler_share
;
#endif
#endif
bool
wide_handler_owner
=
FALSE
;
bool
wide_handler_owner
=
FALSE
;
SPIDER_WIDE_HANDLER
*
wide_handler
=
NULL
;
SPIDER_WIDE_HANDLER
*
wide_handler
=
NULL
;
...
...
storage/spider/mysql-test/spider/bugfix/r/mdev_27240.result
0 → 100644
View file @
e5b75ac3
for master_1
for child2
for child3
CREATE DATABASE auto_test_local;
USE auto_test_local;
CREATE TABLE tbl_a (a INT KEY) ENGINE=SPIDER;
SELECT a.z FROM tbl_a AS a,tbl_a b WHERE a.z=b.z;
ERROR 42S22: Unknown column 'a.z' in 'field list'
ALTER TABLE tbl_a CHANGE c c INT;
ERROR 42S22: Unknown column 'c' in 'tbl_a'
LOCK TABLE tbl_a READ;
ERROR HY000: Unable to connect to foreign data source: localhost
DROP DATABASE auto_test_local;
for master_1
for child2
for child3
storage/spider/mysql-test/spider/bugfix/t/mdev_27240.cnf
0 → 100644
View file @
e5b75ac3
!include include/default_mysqld.cnf
!include ../my_1_1.cnf
storage/spider/mysql-test/spider/bugfix/t/mdev_27240.test
0 → 100644
View file @
e5b75ac3
--
disable_warnings
--
disable_query_log
--
disable_result_log
--
source
../../
t
/
test_init
.
inc
--
enable_result_log
--
enable_query_log
--
enable_warnings
CREATE
DATABASE
auto_test_local
;
USE
auto_test_local
;
CREATE
TABLE
tbl_a
(
a
INT
KEY
)
ENGINE
=
SPIDER
;
--
error
ER_BAD_FIELD_ERROR
SELECT
a
.
z
FROM
tbl_a
AS
a
,
tbl_a
b
WHERE
a
.
z
=
b
.
z
;
--
error
ER_BAD_FIELD_ERROR
ALTER
TABLE
tbl_a
CHANGE
c
c
INT
;
--
error
ER_CONNECT_TO_FOREIGN_DATA_SOURCE
LOCK
TABLE
tbl_a
READ
;
DROP
DATABASE
auto_test_local
;
--
disable_warnings
--
disable_query_log
--
disable_result_log
--
source
../../
t
/
test_deinit
.
inc
--
enable_result_log
--
enable_query_log
--
enable_warnings
storage/spider/spd_include.h
View file @
e5b75ac3
/* Copyright (C) 2008-2020 Kentoku Shiba
/* Copyright (C) 2008-2020 Kentoku Shiba
Copyright (C) 2019-202
0
MariaDB corp
Copyright (C) 2019-202
2
MariaDB corp
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
@@ -688,18 +688,15 @@ typedef struct st_spider_lgtm_tblhnd_share
...
@@ -688,18 +688,15 @@ typedef struct st_spider_lgtm_tblhnd_share
}
SPIDER_LGTM_TBLHND_SHARE
;
}
SPIDER_LGTM_TBLHND_SHARE
;
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
typedef
struct
st_spider_patition_handler
_share
typedef
struct
st_spider_patition_handler
{
{
bool
clone_bitmap_init
;
bool
clone_bitmap_init
;
#ifdef SPIDER_HAS_HASH_VALUE_TYPE
my_hash_value_type
table_hash_value
;
#endif
query_id_t
parallel_search_query_id
;
query_id_t
parallel_search_query_id
;
uint
no_parts
;
uint
no_parts
;
TABLE
*
table
;
TABLE
*
table
;
ha_spider
*
owner
;
ha_spider
*
owner
;
ha_spider
**
handlers
;
ha_spider
**
handlers
;
}
SPIDER_PARTITION_HANDLER
_SHARE
;
}
SPIDER_PARTITION_HANDLER
;
#endif
#endif
typedef
struct
st_spider_wide_share
typedef
struct
st_spider_wide_share
...
@@ -713,12 +710,6 @@ typedef struct st_spider_wide_share
...
@@ -713,12 +710,6 @@ typedef struct st_spider_wide_share
THR_LOCK
lock
;
THR_LOCK
lock
;
pthread_mutex_t
sts_mutex
;
pthread_mutex_t
sts_mutex
;
pthread_mutex_t
crd_mutex
;
pthread_mutex_t
crd_mutex
;
pthread_mutex_t
pt_handler_mutex
;
HASH
pt_handler_hash
;
uint
pt_handler_hash_id
;
const
char
*
pt_handler_hash_func_name
;
const
char
*
pt_handler_hash_file_name
;
ulong
pt_handler_hash_line_no
;
volatile
bool
sts_init
;
volatile
bool
sts_init
;
volatile
bool
crd_init
;
volatile
bool
crd_init
;
...
@@ -763,7 +754,7 @@ typedef struct st_spider_wide_handler
...
@@ -763,7 +754,7 @@ typedef struct st_spider_wide_handler
#endif
#endif
#endif
#endif
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARTITION_HANDLER
_SHARE
*
partition_handler_share
;
SPIDER_PARTITION_HANDLER
*
partition_handler
;
#endif
#endif
#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS
#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS
List
<
Item
>
*
direct_update_fields
;
List
<
Item
>
*
direct_update_fields
;
...
...
storage/spider/spd_table.cc
View file @
e5b75ac3
/* Copyright (C) 2008-2020 Kentoku Shiba
/* Copyright (C) 2008-2020 Kentoku Shiba
Copyright (C) 2019-202
0
MariaDB corp
Copyright (C) 2019-202
2
MariaDB corp
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
@@ -184,7 +184,6 @@ PSI_mutex_key spd_key_mutex_share_auto_increment;
...
@@ -184,7 +184,6 @@ PSI_mutex_key spd_key_mutex_share_auto_increment;
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
PSI_mutex_key
spd_key_mutex_wide_share_sts
;
PSI_mutex_key
spd_key_mutex_wide_share_sts
;
PSI_mutex_key
spd_key_mutex_wide_share_crd
;
PSI_mutex_key
spd_key_mutex_wide_share_crd
;
PSI_mutex_key
spd_key_mutex_pt_handler
;
#endif
#endif
PSI_mutex_key
spd_key_mutex_udf_table
;
PSI_mutex_key
spd_key_mutex_udf_table
;
PSI_mutex_key
spd_key_mutex_mem_calc
;
PSI_mutex_key
spd_key_mutex_mem_calc
;
...
@@ -244,7 +243,6 @@ static PSI_mutex_info all_spider_mutexes[]=
...
@@ -244,7 +243,6 @@ static PSI_mutex_info all_spider_mutexes[]=
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
{
&
spd_key_mutex_wide_share_sts
,
"wide_share_sts"
,
0
},
{
&
spd_key_mutex_wide_share_sts
,
"wide_share_sts"
,
0
},
{
&
spd_key_mutex_wide_share_crd
,
"wide_share_crd"
,
0
},
{
&
spd_key_mutex_wide_share_crd
,
"wide_share_crd"
,
0
},
{
&
spd_key_mutex_pt_handler
,
"pt_handler"
,
0
},
#endif
#endif
{
&
spd_key_mutex_udf_table
,
"udf_table"
,
0
},
{
&
spd_key_mutex_udf_table
,
"udf_table"
,
0
},
{
&
spd_key_mutex_conn_loop_check
,
"conn_loop_check"
,
0
},
{
&
spd_key_mutex_conn_loop_check
,
"conn_loop_check"
,
0
},
...
@@ -430,18 +428,6 @@ uchar *spider_wide_share_get_key(
...
@@ -430,18 +428,6 @@ uchar *spider_wide_share_get_key(
DBUG_RETURN
((
uchar
*
)
share
->
table_name
);
DBUG_RETURN
((
uchar
*
)
share
->
table_name
);
}
}
#ifdef WITH_PARTITION_STORAGE_ENGINE
uchar
*
spider_pt_handler_share_get_key
(
SPIDER_PARTITION_HANDLER_SHARE
*
share
,
size_t
*
length
,
my_bool
not_used
__attribute__
((
unused
))
)
{
DBUG_ENTER
(
"spider_pt_handler_share_get_key"
);
*
length
=
sizeof
(
ha_spider
*
);
DBUG_RETURN
((
uchar
*
)
share
->
owner
);
}
#endif
uchar
*
spider_lgtm_tblhnd_share_hash_get_key
(
uchar
*
spider_lgtm_tblhnd_share_hash_get_key
(
SPIDER_LGTM_TBLHND_SHARE
*
share
,
SPIDER_LGTM_TBLHND_SHARE
*
share
,
size_t
*
length
,
size_t
*
length
,
...
@@ -6609,34 +6595,8 @@ SPIDER_WIDE_SHARE *spider_get_wide_share(
...
@@ -6609,34 +6595,8 @@ SPIDER_WIDE_SHARE *spider_get_wide_share(
goto
error_init_crd_mutex
;
goto
error_init_crd_mutex
;
}
}
#if MYSQL_VERSION_ID < 50500
if
(
pthread_mutex_init
(
&
wide_share
->
pt_handler_mutex
,
MY_MUTEX_INIT_FAST
))
#else
if
(
mysql_mutex_init
(
spd_key_mutex_pt_handler
,
&
wide_share
->
pt_handler_mutex
,
MY_MUTEX_INIT_FAST
))
#endif
{
*
error_num
=
HA_ERR_OUT_OF_MEM
;
goto
error_init_pt_handler_mutex
;
}
if
(
my_hash_init
(
PSI_INSTRUMENT_ME
,
&
wide_share
->
pt_handler_hash
,
spd_charset_utf8mb3_bin
,
32
,
0
,
0
,
(
my_hash_get_key
)
spider_pt_handler_share_get_key
,
0
,
0
)
)
{
*
error_num
=
HA_ERR_OUT_OF_MEM
;
goto
error_init_pt_handler_hash
;
}
thr_lock_init
(
&
wide_share
->
lock
);
thr_lock_init
(
&
wide_share
->
lock
);
spider_alloc_calc_mem_init
(
wide_share
->
pt_handler_hash
,
142
);
spider_alloc_calc_mem
(
spider_current_trx
,
wide_share
->
pt_handler_hash
,
wide_share
->
pt_handler_hash
.
array
.
max_element
*
wide_share
->
pt_handler_hash
.
array
.
size_of_element
);
uint
old_elements
=
spider_open_wide_share
.
array
.
max_element
;
uint
old_elements
=
spider_open_wide_share
.
array
.
max_element
;
#ifdef HASH_UPDATE_WITH_HASH_VALUE
#ifdef HASH_UPDATE_WITH_HASH_VALUE
if
(
my_hash_insert_with_hash_value
(
&
spider_open_wide_share
,
if
(
my_hash_insert_with_hash_value
(
&
spider_open_wide_share
,
...
@@ -6664,14 +6624,6 @@ SPIDER_WIDE_SHARE *spider_get_wide_share(
...
@@ -6664,14 +6624,6 @@ SPIDER_WIDE_SHARE *spider_get_wide_share(
DBUG_RETURN
(
wide_share
);
DBUG_RETURN
(
wide_share
);
error_hash_insert:
error_hash_insert:
spider_free_mem_calc
(
spider_current_trx
,
wide_share
->
pt_handler_hash_id
,
wide_share
->
pt_handler_hash
.
array
.
max_element
*
wide_share
->
pt_handler_hash
.
array
.
size_of_element
);
my_hash_free
(
&
wide_share
->
pt_handler_hash
);
error_init_pt_handler_hash:
pthread_mutex_destroy
(
&
wide_share
->
pt_handler_mutex
);
error_init_pt_handler_mutex:
pthread_mutex_destroy
(
&
wide_share
->
crd_mutex
);
pthread_mutex_destroy
(
&
wide_share
->
crd_mutex
);
error_init_crd_mutex:
error_init_crd_mutex:
pthread_mutex_destroy
(
&
wide_share
->
sts_mutex
);
pthread_mutex_destroy
(
&
wide_share
->
sts_mutex
);
...
@@ -6696,12 +6648,6 @@ int spider_free_wide_share(
...
@@ -6696,12 +6648,6 @@ int spider_free_wide_share(
#else
#else
my_hash_delete
(
&
spider_open_wide_share
,
(
uchar
*
)
wide_share
);
my_hash_delete
(
&
spider_open_wide_share
,
(
uchar
*
)
wide_share
);
#endif
#endif
spider_free_mem_calc
(
spider_current_trx
,
wide_share
->
pt_handler_hash_id
,
wide_share
->
pt_handler_hash
.
array
.
max_element
*
wide_share
->
pt_handler_hash
.
array
.
size_of_element
);
my_hash_free
(
&
wide_share
->
pt_handler_hash
);
pthread_mutex_destroy
(
&
wide_share
->
pt_handler_mutex
);
pthread_mutex_destroy
(
&
wide_share
->
crd_mutex
);
pthread_mutex_destroy
(
&
wide_share
->
crd_mutex
);
pthread_mutex_destroy
(
&
wide_share
->
sts_mutex
);
pthread_mutex_destroy
(
&
wide_share
->
sts_mutex
);
spider_free
(
spider_current_trx
,
wide_share
,
MYF
(
0
));
spider_free
(
spider_current_trx
,
wide_share
,
MYF
(
0
));
...
@@ -8210,15 +8156,15 @@ int spider_get_sts(
...
@@ -8210,15 +8156,15 @@ int spider_get_sts(
if
(
error_num
)
if
(
error_num
)
{
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARTITION_HANDLER
_SHARE
*
partition_handler_share
=
SPIDER_PARTITION_HANDLER
*
partition_handler
=
spider
->
partition_handler
_share
;
spider
->
partition_handler
;
if
(
if
(
!
share
->
wide_share
->
sts_init
&&
!
share
->
wide_share
->
sts_init
&&
sts_sync
>=
sts_sync_level
&&
sts_sync
>=
sts_sync_level
&&
get_type
>
1
&&
get_type
>
1
&&
partition_handler
_share
&&
partition_handler
&&
partition_handler
_share
->
handlers
&&
partition_handler
->
handlers
&&
partition_handler
_share
->
handlers
[
0
]
==
spider
partition_handler
->
handlers
[
0
]
==
spider
)
{
)
{
int
roop_count
;
int
roop_count
;
ha_spider
*
tmp_spider
;
ha_spider
*
tmp_spider
;
...
@@ -8228,11 +8174,11 @@ int spider_get_sts(
...
@@ -8228,11 +8174,11 @@ int spider_get_sts(
int
tmp_sts_sync
;
int
tmp_sts_sync
;
THD
*
thd
=
spider
->
wide_handler
->
trx
->
thd
;
THD
*
thd
=
spider
->
wide_handler
->
trx
->
thd
;
for
(
roop_count
=
1
;
for
(
roop_count
=
1
;
roop_count
<
(
int
)
partition_handler
_share
->
no_parts
;
roop_count
<
(
int
)
partition_handler
->
no_parts
;
roop_count
++
)
roop_count
++
)
{
{
tmp_spider
=
tmp_spider
=
(
ha_spider
*
)
partition_handler
_share
->
handlers
[
roop_count
];
(
ha_spider
*
)
partition_handler
->
handlers
[
roop_count
];
tmp_share
=
tmp_spider
->
share
;
tmp_share
=
tmp_spider
->
share
;
tmp_sts_interval
=
spider_param_sts_interval
(
thd
,
share
->
sts_interval
);
tmp_sts_interval
=
spider_param_sts_interval
(
thd
,
share
->
sts_interval
);
tmp_sts_mode
=
spider_param_sts_mode
(
thd
,
share
->
sts_mode
);
tmp_sts_mode
=
spider_param_sts_mode
(
thd
,
share
->
sts_mode
);
...
@@ -8362,15 +8308,15 @@ int spider_get_crd(
...
@@ -8362,15 +8308,15 @@ int spider_get_crd(
if
(
error_num
)
if
(
error_num
)
{
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARTITION_HANDLER
_SHARE
*
partition_handler_share
=
SPIDER_PARTITION_HANDLER
*
partition_handler
=
spider
->
partition_handler
_share
;
spider
->
partition_handler
;
if
(
if
(
!
share
->
wide_share
->
crd_init
&&
!
share
->
wide_share
->
crd_init
&&
crd_sync
>=
crd_sync_level
&&
crd_sync
>=
crd_sync_level
&&
get_type
>
1
&&
get_type
>
1
&&
partition_handler
_share
&&
partition_handler
&&
partition_handler
_share
->
handlers
&&
partition_handler
->
handlers
&&
partition_handler
_share
->
handlers
[
0
]
==
spider
partition_handler
->
handlers
[
0
]
==
spider
)
{
)
{
int
roop_count
;
int
roop_count
;
ha_spider
*
tmp_spider
;
ha_spider
*
tmp_spider
;
...
@@ -8380,11 +8326,11 @@ int spider_get_crd(
...
@@ -8380,11 +8326,11 @@ int spider_get_crd(
int
tmp_crd_sync
;
int
tmp_crd_sync
;
THD
*
thd
=
spider
->
wide_handler
->
trx
->
thd
;
THD
*
thd
=
spider
->
wide_handler
->
trx
->
thd
;
for
(
roop_count
=
1
;
for
(
roop_count
=
1
;
roop_count
<
(
int
)
partition_handler
_share
->
no_parts
;
roop_count
<
(
int
)
partition_handler
->
no_parts
;
roop_count
++
)
roop_count
++
)
{
{
tmp_spider
=
tmp_spider
=
(
ha_spider
*
)
partition_handler
_share
->
handlers
[
roop_count
];
(
ha_spider
*
)
partition_handler
->
handlers
[
roop_count
];
tmp_share
=
tmp_spider
->
share
;
tmp_share
=
tmp_spider
->
share
;
tmp_crd_interval
=
spider_param_crd_interval
(
thd
,
share
->
crd_interval
);
tmp_crd_interval
=
spider_param_crd_interval
(
thd
,
share
->
crd_interval
);
tmp_crd_mode
=
spider_param_crd_mode
(
thd
,
share
->
crd_mode
);
tmp_crd_mode
=
spider_param_crd_mode
(
thd
,
share
->
crd_mode
);
...
@@ -9529,10 +9475,10 @@ int spider_set_direct_limit_offset(
...
@@ -9529,10 +9475,10 @@ int spider_set_direct_limit_offset(
DBUG_RETURN
(
TRUE
);
DBUG_RETURN
(
TRUE
);
if
(
if
(
spider
->
partition_handler
_share
&&
spider
->
partition_handler
&&
!
spider
->
pt_handler_share
_owner
!
spider
->
wide_handler
_owner
)
{
)
{
if
(
spider
->
partition_handler
_share
->
owner
->
if
(
spider
->
partition_handler
->
owner
->
result_list
.
direct_limit_offset
==
TRUE
)
result_list
.
direct_limit_offset
==
TRUE
)
{
{
spider
->
result_list
.
direct_limit_offset
=
TRUE
;
spider
->
result_list
.
direct_limit_offset
=
TRUE
;
...
...
storage/spider/spd_table.h
View file @
e5b75ac3
/* Copyright (C) 2008-2019 Kentoku Shiba
/* Copyright (C) 2008-2019 Kentoku Shiba
Copyright (C) 2019 MariaDB corp
Copyright (C) 2019
-2022
MariaDB corp
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
@@ -319,14 +319,6 @@ uchar *spider_wide_share_get_key(
...
@@ -319,14 +319,6 @@ uchar *spider_wide_share_get_key(
my_bool
not_used
__attribute__
((
unused
))
my_bool
not_used
__attribute__
((
unused
))
);
);
#ifdef WITH_PARTITION_STORAGE_ENGINE
uchar
*
spider_pt_handler_share_get_key
(
SPIDER_PARTITION_HANDLER_SHARE
*
share
,
size_t
*
length
,
my_bool
not_used
__attribute__
((
unused
))
);
#endif
uchar
*
spider_link_get_key
(
uchar
*
spider_link_get_key
(
SPIDER_LINK_FOR_HASH
*
link_for_hash
,
SPIDER_LINK_FOR_HASH
*
link_for_hash
,
size_t
*
length
,
size_t
*
length
,
...
...
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