mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 10.6 into 10.11
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -134,6 +134,7 @@ scripts/mysqld_safe
|
|||||||
scripts/mysqldumpslow
|
scripts/mysqldumpslow
|
||||||
scripts/mysqlhotcopy
|
scripts/mysqlhotcopy
|
||||||
scripts/mytop
|
scripts/mytop
|
||||||
|
scripts/print_ddl_recovery_log.pl
|
||||||
scripts/wsrep_sst_backup
|
scripts/wsrep_sst_backup
|
||||||
scripts/wsrep_sst_common
|
scripts/wsrep_sst_common
|
||||||
scripts/wsrep_sst_mysqldump
|
scripts/wsrep_sst_mysqldump
|
||||||
|
@@ -898,6 +898,9 @@ static int disable_binlog()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Ok as mysqlcheck is not multi threaded */
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
static int handle_request_for_tables(char *tables, size_t length,
|
static int handle_request_for_tables(char *tables, size_t length,
|
||||||
my_bool view, my_bool dont_quote)
|
my_bool view, my_bool dont_quote)
|
||||||
{
|
{
|
||||||
@@ -1029,9 +1032,6 @@ static void insert_table_name(DYNAMIC_ARRAY *arr, char *in, size_t dblen)
|
|||||||
insert_dynamic(arr, (uchar*) buf);
|
insert_dynamic(arr, (uchar*) buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ok as mysqlcheck is not multi threaded */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
static void __attribute__((noinline)) print_result()
|
static void __attribute__((noinline)) print_result()
|
||||||
{
|
{
|
||||||
MYSQL_RES *res;
|
MYSQL_RES *res;
|
||||||
|
@@ -430,6 +430,8 @@ int main(int argc, char **argv)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
void concurrency_loop(MYSQL *mysql, uint current, option_string *eptr)
|
void concurrency_loop(MYSQL *mysql, uint current, option_string *eptr)
|
||||||
{
|
{
|
||||||
unsigned int x;
|
unsigned int x;
|
||||||
@@ -525,6 +527,7 @@ void concurrency_loop(MYSQL *mysql, uint current, option_string *eptr)
|
|||||||
my_free(head_sptr);
|
my_free(head_sptr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
|
|
||||||
static struct my_option my_long_options[] =
|
static struct my_option my_long_options[] =
|
||||||
@@ -2297,6 +2300,7 @@ statement_cleanup(statement *stmt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
int
|
int
|
||||||
slap_connect(MYSQL *mysql)
|
slap_connect(MYSQL *mysql)
|
||||||
@@ -2330,3 +2334,4 @@ slap_connect(MYSQL *mysql)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
@@ -41,6 +41,7 @@ SET(MY_WARNING_FLAGS
|
|||||||
-Wvla
|
-Wvla
|
||||||
-Wwrite-strings
|
-Wwrite-strings
|
||||||
-Wcast-function-type-strict
|
-Wcast-function-type-strict
|
||||||
|
-Wframe-larger-than=16384
|
||||||
)
|
)
|
||||||
|
|
||||||
# Warning flags that are in testing before moving
|
# Warning flags that are in testing before moving
|
||||||
|
@@ -209,7 +209,10 @@ xb_fil_cur_open(
|
|||||||
cursor->buf_size = XB_FIL_CUR_PAGES * cursor->page_size;
|
cursor->buf_size = XB_FIL_CUR_PAGES * cursor->page_size;
|
||||||
cursor->buf = static_cast<byte*>(aligned_malloc(cursor->buf_size,
|
cursor->buf = static_cast<byte*>(aligned_malloc(cursor->buf_size,
|
||||||
srv_page_size));
|
srv_page_size));
|
||||||
|
cursor->tmp_page = static_cast<byte*>(aligned_malloc(srv_page_size,
|
||||||
|
srv_page_size));
|
||||||
|
cursor->tmp_frame = static_cast<byte*>(aligned_malloc(srv_page_size,
|
||||||
|
srv_page_size));
|
||||||
cursor->buf_read = 0;
|
cursor->buf_read = 0;
|
||||||
cursor->buf_npages = 0;
|
cursor->buf_npages = 0;
|
||||||
cursor->buf_offset = 0;
|
cursor->buf_offset = 0;
|
||||||
@@ -237,15 +240,10 @@ xb_fil_cur_open(
|
|||||||
return(XB_FIL_CUR_SUCCESS);
|
return(XB_FIL_CUR_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stack usage 131224 with clang */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
static bool page_is_corrupted(const byte *page, ulint page_no,
|
static bool page_is_corrupted(const byte *page, ulint page_no,
|
||||||
const xb_fil_cur_t *cursor,
|
const xb_fil_cur_t *cursor,
|
||||||
const fil_space_t *space)
|
const fil_space_t *space)
|
||||||
{
|
{
|
||||||
byte tmp_frame[UNIV_PAGE_SIZE_MAX];
|
|
||||||
byte tmp_page[UNIV_PAGE_SIZE_MAX];
|
|
||||||
const ulint page_size = cursor->page_size;
|
const ulint page_size = cursor->page_size;
|
||||||
uint16_t page_type = fil_page_get_type(page);
|
uint16_t page_type = fil_page_get_type(page);
|
||||||
|
|
||||||
@@ -308,42 +306,43 @@ static bool page_is_corrupted(const byte *page, ulint page_no,
|
|||||||
&& !opt_extended_validation)
|
&& !opt_extended_validation)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
memcpy(tmp_page, page, page_size);
|
memcpy(cursor->tmp_page, page, page_size);
|
||||||
|
|
||||||
if (!space->crypt_data
|
if (!space->crypt_data
|
||||||
|| space->crypt_data->type == CRYPT_SCHEME_UNENCRYPTED
|
|| space->crypt_data->type == CRYPT_SCHEME_UNENCRYPTED
|
||||||
|| !fil_space_decrypt(space, tmp_frame, tmp_page)) {
|
|| !fil_space_decrypt(space, cursor->tmp_frame,
|
||||||
|
cursor->tmp_page)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (page_type != FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) {
|
if (page_type != FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) {
|
||||||
return buf_page_is_corrupted(false, tmp_page,
|
return buf_page_is_corrupted(false, cursor->tmp_page,
|
||||||
space->flags);
|
space->flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (page_type == FIL_PAGE_PAGE_COMPRESSED) {
|
if (page_type == FIL_PAGE_PAGE_COMPRESSED) {
|
||||||
memcpy(tmp_page, page, page_size);
|
memcpy(cursor->tmp_page, page, page_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (page_type == FIL_PAGE_PAGE_COMPRESSED
|
if (page_type == FIL_PAGE_PAGE_COMPRESSED
|
||||||
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) {
|
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) {
|
||||||
ulint decomp = fil_page_decompress(tmp_frame, tmp_page,
|
ulint decomp = fil_page_decompress(cursor->tmp_frame,
|
||||||
|
cursor->tmp_page,
|
||||||
space->flags);
|
space->flags);
|
||||||
page_type = fil_page_get_type(tmp_page);
|
page_type = fil_page_get_type(cursor->tmp_page);
|
||||||
|
|
||||||
return (!decomp
|
return (!decomp
|
||||||
|| (decomp != srv_page_size
|
|| (decomp != srv_page_size
|
||||||
&& cursor->zip_size)
|
&& cursor->zip_size)
|
||||||
|| page_type == FIL_PAGE_PAGE_COMPRESSED
|
|| page_type == FIL_PAGE_PAGE_COMPRESSED
|
||||||
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED
|
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED
|
||||||
|| buf_page_is_corrupted(false, tmp_page,
|
|| buf_page_is_corrupted(false, cursor->tmp_page,
|
||||||
space->flags));
|
space->flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf_page_is_corrupted(false, page, space->flags);
|
return buf_page_is_corrupted(false, page, space->flags);
|
||||||
}
|
}
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
/** Reads and verifies the next block of pages from the source
|
/** Reads and verifies the next block of pages from the source
|
||||||
file. Positions the cursor after the last read non-corrupted page.
|
file. Positions the cursor after the last read non-corrupted page.
|
||||||
@@ -507,7 +506,11 @@ xb_fil_cur_close(
|
|||||||
xb_fil_cur_t *cursor) /*!< in/out: source file cursor */
|
xb_fil_cur_t *cursor) /*!< in/out: source file cursor */
|
||||||
{
|
{
|
||||||
aligned_free(cursor->buf);
|
aligned_free(cursor->buf);
|
||||||
|
aligned_free(cursor->tmp_page);
|
||||||
|
aligned_free(cursor->tmp_frame);
|
||||||
cursor->buf = NULL;
|
cursor->buf = NULL;
|
||||||
|
cursor->tmp_page = NULL;
|
||||||
|
cursor->tmp_frame = NULL;
|
||||||
|
|
||||||
if (cursor->node != NULL) {
|
if (cursor->node != NULL) {
|
||||||
xb_fil_node_close_file(cursor->node);
|
xb_fil_node_close_file(cursor->node);
|
||||||
|
@@ -46,7 +46,9 @@ struct xb_fil_cur_t {
|
|||||||
xb_read_filt_t* read_filter; /*!< read filter */
|
xb_read_filt_t* read_filter; /*!< read filter */
|
||||||
xb_read_filt_ctxt_t read_filter_ctxt;
|
xb_read_filt_ctxt_t read_filter_ctxt;
|
||||||
/*!< read filter context */
|
/*!< read filter context */
|
||||||
byte* buf; /*!< read buffer */
|
byte* buf; /*!< read buffer of XB_FIL_CUR_PAGES */
|
||||||
|
byte* tmp_page; /*!< buffer for decrypting a page */
|
||||||
|
byte* tmp_frame; /*!< buffer for decompressing a page */
|
||||||
size_t buf_size; /*!< buffer size in bytes */
|
size_t buf_size; /*!< buffer size in bytes */
|
||||||
size_t buf_read; /*!< number of read bytes in buffer
|
size_t buf_read; /*!< number of read bytes in buffer
|
||||||
after the last cursor read */
|
after the last cursor read */
|
||||||
|
@@ -1186,6 +1186,7 @@ static void backup_file_op_fail(uint32_t space_id, int type,
|
|||||||
const byte* name, ulint len,
|
const byte* name, ulint len,
|
||||||
const byte* new_name, ulint new_len)
|
const byte* new_name, ulint new_len)
|
||||||
{
|
{
|
||||||
|
const char *error= "";
|
||||||
bool fail = false;
|
bool fail = false;
|
||||||
const std::string spacename{filename_to_spacename(name, len)};
|
const std::string spacename{filename_to_spacename(name, len)};
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@@ -1193,6 +1194,7 @@ static void backup_file_op_fail(uint32_t space_id, int type,
|
|||||||
msg("DDL tracking : create %" PRIu32 " \"%.*s\"",
|
msg("DDL tracking : create %" PRIu32 " \"%.*s\"",
|
||||||
space_id, int(len), name);
|
space_id, int(len), name);
|
||||||
fail = !check_if_skip_table(spacename.c_str());
|
fail = !check_if_skip_table(spacename.c_str());
|
||||||
|
error= "create";
|
||||||
break;
|
break;
|
||||||
case FILE_MODIFY:
|
case FILE_MODIFY:
|
||||||
break;
|
break;
|
||||||
@@ -1202,12 +1204,14 @@ static void backup_file_op_fail(uint32_t space_id, int type,
|
|||||||
fail = !check_if_skip_table(spacename.c_str())
|
fail = !check_if_skip_table(spacename.c_str())
|
||||||
|| !check_if_skip_table(
|
|| !check_if_skip_table(
|
||||||
filename_to_spacename(new_name, new_len).c_str());
|
filename_to_spacename(new_name, new_len).c_str());
|
||||||
|
error= "rename";
|
||||||
break;
|
break;
|
||||||
case FILE_DELETE:
|
case FILE_DELETE:
|
||||||
fail = !check_if_skip_table(spacename.c_str())
|
fail = !check_if_skip_table(spacename.c_str())
|
||||||
&& !check_if_fts_table(spacename.c_str());
|
&& !check_if_fts_table(spacename.c_str());
|
||||||
msg("DDL tracking : delete %" PRIu32 " \"%.*s\"",
|
msg("DDL tracking : delete %" PRIu32 " \"%.*s\"",
|
||||||
space_id, int(len), name);
|
space_id, int(len), name);
|
||||||
|
error= "delete";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
@@ -1215,9 +1219,14 @@ static void backup_file_op_fail(uint32_t space_id, int type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fail) {
|
if (fail) {
|
||||||
ut_a(opt_no_lock);
|
if (opt_no_lock)
|
||||||
die("DDL operation detected in the late phase of backup."
|
die("DDL operation detected in the late phase of backup while "
|
||||||
"Backup is inconsistent. Remove --no-lock option to fix.");
|
"executing %s on %s. "
|
||||||
|
"Backup is inconsistent. Remove --no-lock option to fix.",
|
||||||
|
error, name);
|
||||||
|
die("Unexpected DDL operation detected in the late phase of backup "
|
||||||
|
"while executing %s on %s. Backup is inconsistent.",
|
||||||
|
error, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -83,13 +83,13 @@
|
|||||||
|
|
||||||
/* Define pragmas to disable warnings for stack frame checking */
|
/* Define pragmas to disable warnings for stack frame checking */
|
||||||
|
|
||||||
#if defined(__clang__)
|
#ifdef __GNUC__
|
||||||
#define PRAGMA_DISABLE_CHECK_STACK_FRAME \
|
#define PRAGMA_DISABLE_CHECK_STACK_FRAME \
|
||||||
_Pragma("clang diagnostic push") \
|
_Pragma("GCC diagnostic push") \
|
||||||
_Pragma("clang diagnostic ignored \"-Wframe-larger-than=\"")
|
_Pragma("GCC diagnostic ignored \"-Wframe-larger-than=\"")
|
||||||
|
|
||||||
#define PRAGMA_REENABLE_CHECK_STACK_FRAME \
|
#define PRAGMA_REENABLE_CHECK_STACK_FRAME \
|
||||||
_Pragma("clang diagnostic pop")
|
_Pragma("GCC diagnostic pop")
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define PRAGMA_DISABLE_CHECK_STACK_FRAME
|
#define PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
@@ -453,5 +453,56 @@ SELECT * FROM t1 WHERE f LIKE '2023%';
|
|||||||
f
|
f
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-36536 Add option to not collect statistics for long char/varchars
|
||||||
|
#
|
||||||
|
select @@session.analyze_max_length;
|
||||||
|
@@session.analyze_max_length
|
||||||
|
4294967295
|
||||||
|
create table t1 (c0 char(2), c1 char(16), c2 char(64), v1 varchar(16), v2 varchar(1000), b1 blob, i1 int)
|
||||||
|
character set utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
insert into t1 values ("A", "A","A","A","A","A",1), ("B","B","B","B","B","B",1);
|
||||||
|
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b1'
|
||||||
|
test.t1 analyze status OK
|
||||||
|
select column_name from mysql.column_stats where table_name = 't1';
|
||||||
|
column_name
|
||||||
|
c0
|
||||||
|
c1
|
||||||
|
c2
|
||||||
|
i1
|
||||||
|
v1
|
||||||
|
v2
|
||||||
|
set @@session.analyze_max_length= 64;
|
||||||
|
truncate table mysql.column_stats;
|
||||||
|
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 'c2'
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 'v2'
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b1'
|
||||||
|
test.t1 analyze status Table is already up to date
|
||||||
|
select column_name from mysql.column_stats where table_name = 't1';
|
||||||
|
column_name
|
||||||
|
c0
|
||||||
|
c1
|
||||||
|
i1
|
||||||
|
v1
|
||||||
|
truncate table mysql.column_stats;
|
||||||
|
ANALYZE TABLE t1 PERSISTENT for COLUMNS (c0,c2,v1,v2,i1) INDEXES ALL;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze status Table is already up to date
|
||||||
|
select column_name from mysql.column_stats where table_name = 't1';
|
||||||
|
column_name
|
||||||
|
c0
|
||||||
|
c2
|
||||||
|
i1
|
||||||
|
v1
|
||||||
|
v2
|
||||||
|
set @@session.analyze_max_length= default;
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
# End of 10.6 tests
|
# End of 10.6 tests
|
||||||
#
|
#
|
||||||
|
@@ -306,6 +306,26 @@ ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
|||||||
SELECT * FROM t1 WHERE f LIKE '2023%';
|
SELECT * FROM t1 WHERE f LIKE '2023%';
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-36536 Add option to not collect statistics for long char/varchars
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
select @@session.analyze_max_length;
|
||||||
|
create table t1 (c0 char(2), c1 char(16), c2 char(64), v1 varchar(16), v2 varchar(1000), b1 blob, i1 int)
|
||||||
|
character set utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
insert into t1 values ("A", "A","A","A","A","A",1), ("B","B","B","B","B","B",1);
|
||||||
|
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||||
|
select column_name from mysql.column_stats where table_name = 't1';
|
||||||
|
set @@session.analyze_max_length= 64;
|
||||||
|
truncate table mysql.column_stats;
|
||||||
|
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||||
|
select column_name from mysql.column_stats where table_name = 't1';
|
||||||
|
truncate table mysql.column_stats;
|
||||||
|
ANALYZE TABLE t1 PERSISTENT for COLUMNS (c0,c2,v1,v2,i1) INDEXES ALL;
|
||||||
|
select column_name from mysql.column_stats where table_name = 't1';
|
||||||
|
set @@session.analyze_max_length= default;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.6 tests
|
--echo # End of 10.6 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@@ -16,6 +16,10 @@ The following specify which files/extra groups are read (specified before remain
|
|||||||
--alter-algorithm[=name]
|
--alter-algorithm[=name]
|
||||||
Specify the alter table algorithm. One of: DEFAULT, COPY,
|
Specify the alter table algorithm. One of: DEFAULT, COPY,
|
||||||
INPLACE, NOCOPY, INSTANT
|
INPLACE, NOCOPY, INSTANT
|
||||||
|
--analyze-max-length=#
|
||||||
|
Fields which length in bytes more than this are skipped
|
||||||
|
by ANALYZE TABLE PERSISTENT unless explicitly listed in
|
||||||
|
the FOR COLUMNS () clause
|
||||||
--analyze-sample-percentage=#
|
--analyze-sample-percentage=#
|
||||||
Percentage of rows from the table ANALYZE TABLE will
|
Percentage of rows from the table ANALYZE TABLE will
|
||||||
sample to collect table statistics. Set to 0 to let
|
sample to collect table statistics. Set to 0 to let
|
||||||
|
@@ -20,7 +20,7 @@ exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --log-bin=foo --lower-case-table-n
|
|||||||
|
|
||||||
perl;
|
perl;
|
||||||
# Variables which we don't want to display in the result file since
|
# Variables which we don't want to display in the result file since
|
||||||
# their paths may vary:
|
# their paths may vary or they may use a default of 4294967295 :
|
||||||
@skipvars=qw/basedir open-files-limit general-log-file log plugin-dir plugin-maturity
|
@skipvars=qw/basedir open-files-limit general-log-file log plugin-dir plugin-maturity
|
||||||
log-slow-queries pid-file slow-query-log-file log-basename
|
log-slow-queries pid-file slow-query-log-file log-basename
|
||||||
log-slow-query-file
|
log-slow-query-file
|
||||||
@@ -30,7 +30,7 @@ perl;
|
|||||||
table-open-cache table-open-cache-instances max-connections
|
table-open-cache table-open-cache-instances max-connections
|
||||||
server-uid tls-version version.* password-reuse-check
|
server-uid tls-version version.* password-reuse-check
|
||||||
provider-bzip2 provider-lzma provider-lzo
|
provider-bzip2 provider-lzma provider-lzo
|
||||||
password-reuse-check-interval/;
|
password-reuse-check-interval analyze-max-length/;
|
||||||
|
|
||||||
# Plugins which may or may not be there:
|
# Plugins which may or may not be there:
|
||||||
@plugins=qw/innodb archive blackhole federated partition s3
|
@plugins=qw/innodb archive blackhole federated partition s3
|
||||||
|
@@ -1,26 +1,87 @@
|
|||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 1 (0x0)
|
||||||
|
Serial Number: 4096 (0x1000)
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Issuer: C=FI, ST=Helsinki, L=Helsinki, O=MariaDB, CN=Galera CA
|
||||||
|
Validity
|
||||||
|
Not Before: May 20 01:31:39 2025 GMT
|
||||||
|
Not After : May 20 01:31:39 2125 GMT
|
||||||
|
Subject:
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: rsaEncryption
|
||||||
|
Public-Key: (2048 bit)
|
||||||
|
Modulus:
|
||||||
|
00:a5:04:b1:45:03:ef:44:cb:1f:31:0c:5d:87:60:
|
||||||
|
82:25:a8:f7:62:1f:a9:ed:82:06:67:23:6a:b0:0c:
|
||||||
|
59:3e:b7:c9:ec:17:16:e2:0b:55:06:49:26:82:e9:
|
||||||
|
d0:bb:82:a4:79:08:6d:93:2f:6b:a2:40:73:3a:77:
|
||||||
|
a0:e8:47:99:40:27:fa:d7:39:33:26:9c:3d:c5:0b:
|
||||||
|
82:ba:ea:48:71:53:18:0f:f6:47:a5:02:89:80:16:
|
||||||
|
68:77:33:d1:a2:bb:34:7f:38:ae:c4:cd:85:f1:8d:
|
||||||
|
84:e4:e3:dc:23:93:be:b3:93:bc:de:db:bb:67:6a:
|
||||||
|
ec:55:f6:6a:c0:bd:b5:18:6e:2e:15:06:a1:b9:f2:
|
||||||
|
fc:72:12:4d:fc:c1:5a:38:b2:30:17:c0:de:83:19:
|
||||||
|
4c:fc:9c:c5:0f:c2:b1:86:57:30:88:82:07:f7:ff:
|
||||||
|
96:68:1e:55:7c:18:3f:53:5e:40:20:06:02:a1:6e:
|
||||||
|
f7:03:4b:82:ea:9e:4f:07:97:03:33:d0:bf:1c:de:
|
||||||
|
b8:17:bf:7d:4c:3a:48:2d:41:ed:82:e6:3a:2c:6f:
|
||||||
|
4f:fd:b1:2d:33:ed:d6:36:8c:bc:f2:ff:52:af:aa:
|
||||||
|
32:9b:cf:87:45:f3:b3:61:d1:20:7d:03:a3:2f:1f:
|
||||||
|
6c:1d:f9:b8:41:e9:88:04:c1:ae:b9:23:36:80:59:
|
||||||
|
d1:4f
|
||||||
|
Exponent: 65537 (0x10001)
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Signature Value:
|
||||||
|
a1:d1:8e:b3:3f:47:3a:4a:2c:f0:bf:34:72:69:99:f2:fa:a9:
|
||||||
|
a0:72:3c:7e:7a:69:c1:d6:97:4f:bd:44:ac:92:79:46:e4:8e:
|
||||||
|
62:c0:cd:41:e9:55:a7:29:33:d6:f6:e7:e5:13:e9:5a:a1:83:
|
||||||
|
85:16:cb:e2:38:9a:55:b1:57:51:ea:cc:ca:5c:46:ab:1d:a5:
|
||||||
|
73:d6:d6:df:57:e8:7c:40:16:63:17:75:b2:13:ac:31:eb:96:
|
||||||
|
85:3b:fb:92:d6:69:4d:ab:e2:1d:22:82:0f:71:66:8d:b0:a9:
|
||||||
|
56:a2:77:5e:f8:56:90:22:1f:ee:e7:79:33:37:c7:9f:a1:06:
|
||||||
|
01:35:fe:13:12:75:2e:d9:2a:04:e5:8f:21:4a:20:de:a5:07:
|
||||||
|
89:aa:0c:c2:d2:ec:a1:47:d6:f6:87:f7:ed:29:f9:69:c6:83:
|
||||||
|
f6:18:8d:7e:7e:3a:53:c7:b3:91:bd:9a:b8:e3:ac:66:de:57:
|
||||||
|
b8:2d:c5:d5:54:61:1b:27:96:e8:34:0d:a9:88:4f:03:5a:27:
|
||||||
|
e0:5f:b5:90:97:9f:57:39:f5:a9:9d:c6:b6:77:1a:bb:86:57:
|
||||||
|
57:0c:79:6e:66:5f:93:c1:f7:df:c8:06:3c:df:c5:f8:ef:b3:
|
||||||
|
e3:61:8b:15:8a:45:4f:db:1d:7f:2b:eb:c9:54:ba:6e:c8:b8:
|
||||||
|
40:ca:de:10:93:a9:a4:8c:17:56:50:37:9c:6b:ba:9c:b0:5f:
|
||||||
|
4c:49:a7:9c:ba:3c:81:37:e3:a2:b3:6a:71:b9:f6:a6:bb:81:
|
||||||
|
f3:5c:40:ae:f5:e1:68:32:e3:af:22:5b:88:aa:df:2e:3b:5d:
|
||||||
|
e2:63:ab:c7:01:a3:c8:3a:e1:06:9f:2f:d1:9f:b4:06:c4:11:
|
||||||
|
83:c2:99:4a:de:f0:c2:32:04:b8:65:26:e9:57:3f:7d:52:d7:
|
||||||
|
d8:1c:6e:2c:55:53:d3:81:1d:b9:9e:0a:c1:34:a6:6a:48:af:
|
||||||
|
3b:d9:6e:84:16:30:33:a6:10:17:36:b4:30:68:fd:95:e9:3e:
|
||||||
|
35:c3:95:71:7a:86:26:a7:46:66:09:95:91:c6:c2:ba:a6:61:
|
||||||
|
c2:a5:b6:38:8e:34:a0:14:f1:d7:0c:11:93:0a:a4:d3:f8:b7:
|
||||||
|
32:fd:12:38:64:9f:68:fe:3d:a1:f6:28:c1:c8:9f:1f:ea:a5:
|
||||||
|
e2:77:fd:ad:d9:21:22:40:b2:9e:8e:81:3f:79:0e:13:19:1e:
|
||||||
|
70:0f:4a:4b:81:ea:92:c5:fa:4f:80:e9:8f:5e:ac:dc:09:74:
|
||||||
|
70:e1:7b:23:68:0c:18:c7:7f:07:4a:39:42:29:d6:c3:62:16:
|
||||||
|
ec:15:73:02:93:a6:a3:5f:21:90:59:8e:e6:b1:0a:be:32:cf:
|
||||||
|
6d:4e:7e:56:3d:87:13:0f
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
|
o18hkFmO5rEKvjLPbU5+Vj2HEw8=
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
-----BEGIN DH PARAMETERS-----
|
|
||||||
MIGHAoGBAJWyvKjE+s7OP4Lj1jXKGlJGWT4Vd5YaxPljihTsRe1aXkWAgsuwISXk
|
|
||||||
/TQ8Rx5Zmze7rtwtU0PoYxvuam9FMXYqhw2dVe4qRdeSX78DSiL/YBkQzaxlfWVy
|
|
||||||
RE9+9dzHbCtRVDlN7K1kA+mGWH4/r7NAu4Qm/003V0NTtMwQSqebAgEC
|
|
||||||
-----END DH PARAMETERS-----
|
|
||||||
|
|
||||||
|
@@ -1,28 +1,28 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
dlGTbkmR0Wm43Kh++dWICJ3g
|
qkpHixGjosFWeZn9IGyu0g==
|
||||||
-----END PRIVATE KEY-----
|
-----END PRIVATE KEY-----
|
||||||
|
@@ -1,40 +1,32 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
-----END CERTIFICATE-----
|
XKdj8vKLmXYl/adm467ECLwGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
|
||||||
-----BEGIN CERTIFICATE-----
|
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
|
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
@@ -1,20 +1,87 @@
|
|||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 1 (0x0)
|
||||||
|
Serial Number: 4097 (0x1001)
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Issuer: C=FI, ST=Helsinki, L=Helsinki, O=MariaDB, CN=Galera CA
|
||||||
|
Validity
|
||||||
|
Not Before: May 20 01:32:38 2025 GMT
|
||||||
|
Not After : May 20 01:32:38 2125 GMT
|
||||||
|
Subject:
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: rsaEncryption
|
||||||
|
Public-Key: (2048 bit)
|
||||||
|
Modulus:
|
||||||
|
00:c9:0e:e9:9d:eb:8f:8d:7f:79:aa:55:7f:2d:c0:
|
||||||
|
be:92:10:77:46:78:31:63:38:82:01:91:91:4c:c1:
|
||||||
|
49:85:04:d3:28:0a:49:80:81:1f:3c:3c:00:6f:aa:
|
||||||
|
e1:ad:d1:44:0a:72:2a:82:39:72:12:5e:3d:0e:be:
|
||||||
|
43:f8:11:98:6a:cb:35:a8:f5:05:e1:1b:b1:9f:14:
|
||||||
|
ee:59:9d:4a:34:cc:92:0d:9b:cf:23:db:ba:5e:68:
|
||||||
|
b3:de:2f:37:04:41:c7:84:b0:62:fb:5d:7a:b9:6e:
|
||||||
|
0d:f8:f9:82:23:24:8c:0e:f6:34:b7:93:fe:82:f6:
|
||||||
|
fc:56:45:46:67:63:b1:a7:18:2d:2b:7a:90:92:9c:
|
||||||
|
a0:cc:11:18:68:f1:9d:24:a5:77:40:cc:c3:ae:df:
|
||||||
|
ed:c9:1c:cb:e1:66:0c:04:3e:93:2b:4f:ad:31:c1:
|
||||||
|
33:64:a4:27:7d:27:da:40:bb:bb:d9:a1:f1:b0:bc:
|
||||||
|
43:de:52:22:78:0d:21:ac:20:e0:62:15:4b:60:a4:
|
||||||
|
60:77:34:44:75:76:1f:57:00:23:15:dd:51:29:b2:
|
||||||
|
5e:75:99:b0:72:0b:49:21:31:1f:5f:a4:b9:ef:c4:
|
||||||
|
f1:1e:4c:0d:1f:4b:2d:f1:71:f9:b1:df:3f:9c:01:
|
||||||
|
7e:cd:66:ef:07:e6:e7:9a:95:eb:86:ba:44:05:84:
|
||||||
|
42:2b
|
||||||
|
Exponent: 65537 (0x10001)
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Signature Value:
|
||||||
|
90:67:64:33:70:bd:c8:15:10:8d:8c:f3:09:48:c8:12:8d:58:
|
||||||
|
25:b6:a7:a5:2f:54:4e:a3:8e:4c:8d:e7:bb:60:2e:1c:1d:0f:
|
||||||
|
c1:62:78:d3:47:18:a0:c6:55:4c:69:38:07:e4:86:7a:c6:35:
|
||||||
|
f3:bd:05:1b:a4:67:ea:d9:ed:72:e5:37:df:7f:97:2f:76:4e:
|
||||||
|
d8:7a:df:de:7f:35:15:de:cd:e0:e3:c2:e1:96:15:79:3f:88:
|
||||||
|
5f:d1:f1:b4:f1:41:21:f1:6a:cd:92:3d:4c:14:fc:5b:17:d0:
|
||||||
|
ec:7d:12:88:18:74:ec:5c:2a:d3:e7:7b:c4:69:53:51:37:71:
|
||||||
|
d1:f8:2a:70:80:e3:b7:b5:00:a6:df:d4:9b:d4:65:5e:e2:53:
|
||||||
|
6e:98:6d:76:26:cd:19:cd:08:ec:81:8b:54:50:53:9b:06:f3:
|
||||||
|
65:83:a9:1b:9c:f0:ed:12:88:c5:0c:f2:02:d4:3f:09:fb:43:
|
||||||
|
f9:1e:13:12:05:c4:e7:47:e7:9e:bf:c0:6a:70:17:3e:f4:29:
|
||||||
|
92:77:a8:1b:d9:1c:3c:e3:ae:5d:c8:98:a6:4b:3d:22:a8:cd:
|
||||||
|
46:8e:8b:4e:b2:0c:a3:3e:9e:fe:98:a1:2c:36:10:f9:b6:63:
|
||||||
|
d4:ae:bb:a8:f3:e8:cd:2f:0e:06:a2:e9:e1:41:3f:25:8b:ec:
|
||||||
|
a1:65:56:ec:d6:98:4b:b3:fc:d1:8f:21:1e:55:3d:28:10:c3:
|
||||||
|
55:30:54:0a:92:f5:33:7e:c6:68:fb:7d:b3:5f:5a:a2:65:4f:
|
||||||
|
25:53:93:3a:11:4a:23:5b:26:59:8e:5d:c5:56:c9:35:f5:55:
|
||||||
|
45:f1:0c:f0:b3:98:62:3f:42:f3:44:17:81:fd:41:80:e5:6e:
|
||||||
|
45:76:19:f0:34:f6:9a:13:76:5e:2e:08:66:71:e0:5d:f8:aa:
|
||||||
|
f9:ef:4b:1d:23:bc:c7:a7:e4:09:61:df:e6:b7:9a:7f:d2:8c:
|
||||||
|
25:f3:26:e2:38:36:1a:1e:23:a9:10:60:08:59:22:52:cf:64:
|
||||||
|
47:68:a0:04:31:33:f7:14:ec:33:87:76:f2:84:d1:37:07:fc:
|
||||||
|
1a:fa:23:94:2a:7e:72:f8:bb:45:17:49:d7:57:46:c1:aa:4c:
|
||||||
|
d2:04:dc:82:7b:33:b9:44:ee:d2:bb:4c:60:f0:93:7b:68:19:
|
||||||
|
77:65:7b:ce:65:d2:16:2d:0b:3d:0b:7d:62:96:86:29:c2:01:
|
||||||
|
57:26:02:15:67:cb:97:5b:2e:a6:65:60:b9:4f:53:ce:3a:6a:
|
||||||
|
35:06:50:d9:1b:be:5b:a0:0e:0a:b4:66:40:a5:6a:40:d1:37:
|
||||||
|
fd:f9:0a:63:22:b4:08:7d:5f:1a:ed:cb:6f:74:17:b6:a3:56:
|
||||||
|
54:24:38:8f:c4:6a:cf:46
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
|
CH1fGu3Lb3QXtqNWVCQ4j8Rqz0Y=
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
@@ -1,28 +1,28 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
A7SZFkWYfem8/q/VImjU/CNbOQ==
|
LBW22SFBcrXvQLb6CEC5mQQ=
|
||||||
-----END PRIVATE KEY-----
|
-----END PRIVATE KEY-----
|
||||||
|
@@ -8,6 +8,8 @@ connection node_2;
|
|||||||
connection node_3;
|
connection node_3;
|
||||||
connection node_4;
|
connection node_4;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
|
SET SESSION wsrep_on = ON;
|
||||||
|
SET SESSION wsrep_sync_wait = 15;
|
||||||
CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY);
|
CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY);
|
||||||
CREATE PROCEDURE p1(IN max INT)
|
CREATE PROCEDURE p1(IN max INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
@@ -48,6 +50,8 @@ CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
|
|||||||
SET SESSION wsrep_on = ON;
|
SET SESSION wsrep_on = ON;
|
||||||
INSERT INTO t2 VALUES (DEFAULT);
|
INSERT INTO t2 VALUES (DEFAULT);
|
||||||
CALL p1(130);
|
CALL p1(130);
|
||||||
|
connection node_2;
|
||||||
|
connection node_3;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation";
|
SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation";
|
||||||
Restarting server 4
|
Restarting server 4
|
||||||
@@ -58,8 +62,6 @@ SET SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_conti
|
|||||||
SET GLOBAL debug = "";
|
SET GLOBAL debug = "";
|
||||||
SET DEBUG_SYNC='RESET';
|
SET DEBUG_SYNC='RESET';
|
||||||
Waiting for server 4 to leave the cluster
|
Waiting for server 4 to leave the cluster
|
||||||
SET SESSION wsrep_on = ON;
|
|
||||||
SET SESSION wsrep_sync_wait = 15;
|
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SET SESSION wsrep_on = ON;
|
SET SESSION wsrep_on = ON;
|
||||||
SET SESSION wsrep_sync_wait = 15;
|
SET SESSION wsrep_sync_wait = 15;
|
||||||
@@ -69,10 +71,18 @@ SET SESSION wsrep_sync_wait = 15;
|
|||||||
connection node_4;
|
connection node_4;
|
||||||
Server 4 left the cluster, killing it...
|
Server 4 left the cluster, killing it...
|
||||||
Killed server 4...
|
Killed server 4...
|
||||||
|
connection node_1;
|
||||||
|
connection node_4;
|
||||||
Restarting server 4...
|
Restarting server 4...
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET SESSION wsrep_on = ON;
|
SET SESSION wsrep_on = ON;
|
||||||
SET SESSION wsrep_sync_wait = 15;
|
SET SESSION wsrep_sync_wait = 15;
|
||||||
|
connection node_2;
|
||||||
|
SET SESSION wsrep_on = ON;
|
||||||
|
SET SESSION wsrep_sync_wait = 15;
|
||||||
|
connection node_3;
|
||||||
|
SET SESSION wsrep_on = ON;
|
||||||
|
SET SESSION wsrep_sync_wait = 15;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SELECT count(*) AS expect1_390 FROM t1;
|
SELECT count(*) AS expect1_390 FROM t1;
|
||||||
expect1_390
|
expect1_390
|
||||||
|
@@ -5,7 +5,7 @@ loose-galera-ssl-cipher=1
|
|||||||
wsrep-debug=1
|
wsrep-debug=1
|
||||||
|
|
||||||
[mysqld.1]
|
[mysqld.1]
|
||||||
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
||||||
|
|
||||||
[mysqld.2]
|
[mysqld.2]
|
||||||
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
||||||
|
@@ -5,7 +5,7 @@ loose-galera-ssl-upgrade=1
|
|||||||
wsrep-debug=1
|
wsrep-debug=1
|
||||||
|
|
||||||
[mysqld.1]
|
[mysqld.1]
|
||||||
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
||||||
|
|
||||||
[mysqld.2]
|
[mysqld.2]
|
||||||
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
||||||
|
@@ -20,6 +20,10 @@ source ../wsrep/include/check_galera_version.inc;
|
|||||||
|
|
||||||
# create table t1 and procedure p1 to generate wirtesets
|
# create table t1 and procedure p1 to generate wirtesets
|
||||||
--connection node_1
|
--connection node_1
|
||||||
|
|
||||||
|
--let $members = 4
|
||||||
|
--source include/wsrep_wait_membership.inc
|
||||||
|
|
||||||
CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY);
|
CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY);
|
||||||
|
|
||||||
DELIMITER |;
|
DELIMITER |;
|
||||||
@@ -39,11 +43,17 @@ DELIMITER ;|
|
|||||||
CALL p1(130);
|
CALL p1(130);
|
||||||
|
|
||||||
--connection node_4
|
--connection node_4
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 130 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--echo Shutting down server 4...
|
--echo Shutting down server 4...
|
||||||
--let $node_4_server_id= `SELECT @@server_id`
|
--let $node_4_server_id= `SELECT @@server_id`
|
||||||
--let $node_4_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$node_4_server_id.expect
|
--let $node_4_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$node_4_server_id.expect
|
||||||
--let $node_4_pid_file= `SELECT @@pid_file`
|
--let $node_4_pid_file= `SELECT @@pid_file`
|
||||||
--source include/shutdown_mysqld.inc
|
--source include/shutdown_mysqld.inc
|
||||||
|
--source include/wait_until_disconnected.inc
|
||||||
|
|
||||||
# Wait for node #4 to leave cluster
|
# Wait for node #4 to leave cluster
|
||||||
--let $members = 3
|
--let $members = 3
|
||||||
@@ -65,16 +75,23 @@ CALL p1(130);
|
|||||||
SET SESSION wsrep_on = OFF;
|
SET SESSION wsrep_on = OFF;
|
||||||
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
|
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
|
||||||
SET SESSION wsrep_on = ON;
|
SET SESSION wsrep_on = ON;
|
||||||
|
--source include/wait_until_ready.inc
|
||||||
|
|
||||||
--connection node_2
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 260 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
SET SESSION wsrep_on = OFF;
|
SET SESSION wsrep_on = OFF;
|
||||||
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
|
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
|
||||||
SET SESSION wsrep_on = ON;
|
SET SESSION wsrep_on = ON;
|
||||||
|
--source include/wait_until_ready.inc
|
||||||
|
|
||||||
--connection node_3
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 260 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
SET SESSION wsrep_on = OFF;
|
SET SESSION wsrep_on = OFF;
|
||||||
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
|
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
|
||||||
SET SESSION wsrep_on = ON;
|
SET SESSION wsrep_on = ON;
|
||||||
|
--source include/wait_until_ready.inc
|
||||||
|
|
||||||
# This should cause error during IST
|
# This should cause error during IST
|
||||||
INSERT INTO t2 VALUES (DEFAULT);
|
INSERT INTO t2 VALUES (DEFAULT);
|
||||||
@@ -82,6 +99,13 @@ INSERT INTO t2 VALUES (DEFAULT);
|
|||||||
# make sure nodes 1,2,3 progress far enough for commit cut update
|
# make sure nodes 1,2,3 progress far enough for commit cut update
|
||||||
CALL p1(130);
|
CALL p1(130);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 390 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 390 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
# prepare to stop SST donor thread when it receives a request from starting node #4
|
# prepare to stop SST donor thread when it receives a request from starting node #4
|
||||||
SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation";
|
SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation";
|
||||||
@@ -96,14 +120,12 @@ SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_sst_donor_after_donation_reach
|
|||||||
SET SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_continue";
|
SET SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_continue";
|
||||||
SET GLOBAL debug = "";
|
SET GLOBAL debug = "";
|
||||||
SET DEBUG_SYNC='RESET';
|
SET DEBUG_SYNC='RESET';
|
||||||
|
|
||||||
#
|
#
|
||||||
# After this point node #4 shall proceed to IST and bail out
|
# After this point node #4 shall proceed to IST and bail out
|
||||||
#
|
#
|
||||||
|
|
||||||
--echo Waiting for server 4 to leave the cluster
|
--echo Waiting for server 4 to leave the cluster
|
||||||
--let $members = 3
|
--let $members = 3
|
||||||
--source include/wsrep_wait_membership.inc
|
|
||||||
--connection node_2
|
--connection node_2
|
||||||
--source include/wsrep_wait_membership.inc
|
--source include/wsrep_wait_membership.inc
|
||||||
--connection node_3
|
--connection node_3
|
||||||
@@ -124,14 +146,27 @@ SET DEBUG_SYNC='RESET';
|
|||||||
EOF
|
EOF
|
||||||
--echo Killed server 4...
|
--echo Killed server 4...
|
||||||
--source include/wait_until_disconnected.inc
|
--source include/wait_until_disconnected.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--source include/wait_until_ready.inc
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
|
||||||
|
--let $wait_condition_on_error_output = SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
|
||||||
|
--source include/wait_condition_with_debug.inc
|
||||||
|
|
||||||
|
--connection node_4
|
||||||
--echo Restarting server 4...
|
--echo Restarting server 4...
|
||||||
--source include/start_mysqld.inc
|
--source include/start_mysqld.inc
|
||||||
--source include/galera_wait_ready.inc
|
--source include/galera_wait_ready.inc
|
||||||
|
|
||||||
|
|
||||||
# Confirm node #4 has rejoined
|
# Confirm node #4 has rejoined
|
||||||
--connection node_1
|
--connection node_1
|
||||||
--let $members = 4
|
--let $members = 4
|
||||||
--source include/wsrep_wait_membership.inc
|
--source include/wsrep_wait_membership.inc
|
||||||
|
--connection node_2
|
||||||
|
--source include/wsrep_wait_membership.inc
|
||||||
|
--connection node_3
|
||||||
|
--source include/wsrep_wait_membership.inc
|
||||||
|
|
||||||
# Confirm that all is good and all nodes have identical data
|
# Confirm that all is good and all nodes have identical data
|
||||||
|
|
||||||
@@ -148,6 +183,10 @@ SELECT count(*) AS expect3_390 FROM t1;
|
|||||||
SELECT count(*) AS expect3_1 FROM t2;
|
SELECT count(*) AS expect3_1 FROM t2;
|
||||||
|
|
||||||
--connection node_4
|
--connection node_4
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 390 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM t2;
|
||||||
|
--source include/wait_condition.inc
|
||||||
SELECT count(*) AS expect4_390 FROM t1;
|
SELECT count(*) AS expect4_390 FROM t1;
|
||||||
SELECT count(*) AS expect4_1 FROM t2;
|
SELECT count(*) AS expect4_1 FROM t2;
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ wsrep_sst_method=rsync
|
|||||||
|
|
||||||
[mysqld.1]
|
[mysqld.1]
|
||||||
wsrep_node_name='node.1'
|
wsrep_node_name='node.1'
|
||||||
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
||||||
|
|
||||||
[mysqld.2]
|
[mysqld.2]
|
||||||
wsrep_node_name='node.2'
|
wsrep_node_name='node.2'
|
||||||
@@ -13,4 +13,4 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#gale
|
|||||||
|
|
||||||
[mysqld.3]
|
[mysqld.3]
|
||||||
wsrep_node_name='node.3'
|
wsrep_node_name='node.3'
|
||||||
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
|
||||||
|
@@ -50,7 +50,7 @@ SELECT COUNT(*) = 1 FROM t1;
|
|||||||
# Restart node with SSL enabled
|
# Restart node with SSL enabled
|
||||||
--source include/shutdown_mysqld.inc
|
--source include/shutdown_mysqld.inc
|
||||||
--let $restart_noprint = 1
|
--let $restart_noprint = 1
|
||||||
--let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_cert=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=$MYSQL_TEST_DIR/std_data/galera-key.pem
|
--let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=$MYSQL_TEST_DIR/std_data/galera-key.pem
|
||||||
--source include/start_mysqld.inc
|
--source include/start_mysqld.inc
|
||||||
--source include/galera_wait_ready.inc
|
--source include/galera_wait_ready.inc
|
||||||
|
|
||||||
|
@@ -81,8 +81,7 @@ SET @saved_debug_dbug = @@SESSION.debug_dbug;
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_1";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_1";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -91,8 +90,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_2";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_2";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -101,8 +99,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_3";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_3";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -111,8 +108,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_4";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_4";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -121,8 +117,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_5";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_5";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -131,8 +126,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_6";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_6";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -141,8 +135,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_7";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_7";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -151,8 +144,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_8";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_8";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -161,8 +153,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_10";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_10";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -171,8 +162,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_11";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_11";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -181,8 +171,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
SET SESSION debug_dbug="+d,ib_export_io_write_failure_12";
|
SET SESSION debug_dbug="+d,ib_export_io_write_failure_12";
|
||||||
FLUSH TABLES t1 FOR EXPORT;
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
|
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
|
||||||
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL
|
|||||||
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
|
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||||
|
VARIABLE_NAME ANALYZE_MAX_LENGTH
|
||||||
|
VARIABLE_SCOPE SESSION
|
||||||
|
VARIABLE_TYPE INT UNSIGNED
|
||||||
|
VARIABLE_COMMENT Fields which length in bytes more than this are skipped by ANALYZE TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause
|
||||||
|
NUMERIC_MIN_VALUE 32
|
||||||
|
NUMERIC_MAX_VALUE 4294967295
|
||||||
|
NUMERIC_BLOCK_SIZE 1
|
||||||
|
ENUM_VALUE_LIST NULL
|
||||||
|
READ_ONLY NO
|
||||||
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE
|
VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE DOUBLE
|
VARIABLE_TYPE DOUBLE
|
||||||
|
@@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL
|
|||||||
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
|
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||||
|
VARIABLE_NAME ANALYZE_MAX_LENGTH
|
||||||
|
VARIABLE_SCOPE SESSION
|
||||||
|
VARIABLE_TYPE INT UNSIGNED
|
||||||
|
VARIABLE_COMMENT Fields which length in bytes more than this are skipped by ANALYZE TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause
|
||||||
|
NUMERIC_MIN_VALUE 32
|
||||||
|
NUMERIC_MAX_VALUE 4294967295
|
||||||
|
NUMERIC_BLOCK_SIZE 1
|
||||||
|
ENUM_VALUE_LIST NULL
|
||||||
|
READ_ONLY NO
|
||||||
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE
|
VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE DOUBLE
|
VARIABLE_TYPE DOUBLE
|
||||||
|
@@ -272,7 +272,7 @@ IF(WIN32)
|
|||||||
# The resulting files will have .pl extension (those are perl scripts)
|
# The resulting files will have .pl extension (those are perl scripts)
|
||||||
|
|
||||||
# Input files with pl.in extension
|
# Input files with pl.in extension
|
||||||
SET(PLIN_FILES mysql_config)
|
SET(PLIN_FILES mysql_config print_ddl_recovery_log)
|
||||||
# Input files with .sh extension
|
# Input files with .sh extension
|
||||||
|
|
||||||
SET(SH_FILES mysql_convert_table_format mysqld_multi mysqldumpslow
|
SET(SH_FILES mysql_convert_table_format mysqld_multi mysqldumpslow
|
||||||
@@ -331,6 +331,8 @@ ELSE()
|
|||||||
# Configure this one, for testing, but do not install it.
|
# Configure this one, for testing, but do not install it.
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_config.pl.in
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_config.pl.in
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_config.pl ESCAPE_QUOTES @ONLY)
|
${CMAKE_CURRENT_BINARY_DIR}/mysql_config.pl ESCAPE_QUOTES @ONLY)
|
||||||
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/print_ddl_recovery_log.pl.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/print_ddl_recovery_log.pl ESCAPE_QUOTES @ONLY)
|
||||||
# On Unix, most of the files end up in the bin directory
|
# On Unix, most of the files end up in the bin directory
|
||||||
SET(BIN_SCRIPTS
|
SET(BIN_SCRIPTS
|
||||||
msql2mysql
|
msql2mysql
|
||||||
|
120
scripts/print_ddl_recovery_log.pl.in
Executable file
120
scripts/print_ddl_recovery_log.pl.in
Executable file
@@ -0,0 +1,120 @@
|
|||||||
|
#!@PERL_PATH@
|
||||||
|
use warnings;
|
||||||
|
use Fcntl qw(:seek);
|
||||||
|
use Getopt::Long;
|
||||||
|
|
||||||
|
# Constants based on the source
|
||||||
|
use constant {
|
||||||
|
BLOCK_SIZE => 4096,
|
||||||
|
DDL_LOG_ACTION_TYPE_POS => 1,
|
||||||
|
DDL_LOG_PHASE_POS => 2,
|
||||||
|
DDL_LOG_NEXT_ENTRY_POS => 4,
|
||||||
|
DDL_LOG_FLAG_POS => 8,
|
||||||
|
DDL_LOG_XID_POS => 10,
|
||||||
|
DDL_LOG_UUID_POS => 18,
|
||||||
|
MY_UUID_SIZE => 16,
|
||||||
|
DDL_LOG_ID_POS => 34,
|
||||||
|
DDL_LOG_END_POS => 42,
|
||||||
|
NAME_START_POS => 56,
|
||||||
|
};
|
||||||
|
|
||||||
|
package main;
|
||||||
|
|
||||||
|
my @log_entrys= ("Unknown", "EXECUTE", "ENTRY", "IGNORED" );
|
||||||
|
my @log_actions= ("Unknown", "DELETE_FRM", "RENAME_FRM", "REPLACE", "EXCHANGE",
|
||||||
|
"RENAME_TABLE", "RENAME_VIEW", "DROP_INIT", "DROP_TABLE",
|
||||||
|
"DROP_VIEW", "DROP_TRIGGER", "DROP_DB", "CREATE_TABLE",
|
||||||
|
"CREATE_VIEW", "DELETE_TMP_FILE", "CREATE_TRIGGER",
|
||||||
|
"ALTER_TABLE", "STORE_QUERY");
|
||||||
|
|
||||||
|
$opt_skip_not_used= undef;
|
||||||
|
$opt_skip_ignored= undef;
|
||||||
|
|
||||||
|
sub usage
|
||||||
|
{
|
||||||
|
print <<EOF;
|
||||||
|
Usage $0 [OPTIONS] path-to-MariaDB-ddl_recovery.log
|
||||||
|
|
||||||
|
Print the content of the MariaDB ddl_recovery.log.
|
||||||
|
One can also just provide the directory for the ddl_recover.log.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--skip-not-used\tSkip not used ddl log entries
|
||||||
|
--skip-ignored\tSkip ignored ddl log entries
|
||||||
|
EOF
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetOptions("skip-not-used", "skip-ignored") or usage();
|
||||||
|
|
||||||
|
my $file = shift;
|
||||||
|
my $fh;
|
||||||
|
|
||||||
|
if (!defined($file))
|
||||||
|
{
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-d $file)
|
||||||
|
{
|
||||||
|
$file= $file . "/ddl_recovery.log";
|
||||||
|
}
|
||||||
|
|
||||||
|
open $fh, '<:raw', $file or die "Cannot open $file: $!";
|
||||||
|
|
||||||
|
# Skip header block
|
||||||
|
exit 0 if (!read($fh, my $block, BLOCK_SIZE));
|
||||||
|
|
||||||
|
my $entry_num = 1;
|
||||||
|
|
||||||
|
while (read($fh, my $block, BLOCK_SIZE)) {
|
||||||
|
|
||||||
|
my $entry_type = unpack("C", substr($block, 0, 1));
|
||||||
|
my $action_type = unpack("C", substr($block, DDL_LOG_ACTION_TYPE_POS, 1));
|
||||||
|
my $phase = unpack("C", substr($block, DDL_LOG_PHASE_POS, 1));
|
||||||
|
my $next_entry = unpack("V", substr($block, DDL_LOG_NEXT_ENTRY_POS, 4));
|
||||||
|
my $flags = unpack("v", substr($block, DDL_LOG_FLAG_POS, 2));
|
||||||
|
my $xid = unpack("Q<", substr($block, DDL_LOG_XID_POS, 8));
|
||||||
|
my $uuid_bin = substr($block, DDL_LOG_UUID_POS, MY_UUID_SIZE);
|
||||||
|
my $unique_id = unpack("Q<", substr($block, DDL_LOG_ID_POS, 8));
|
||||||
|
|
||||||
|
my $uuid = unpack("H8H4H4H4H12", $uuid_bin);
|
||||||
|
$uuid = join('-', $uuid =~ /(.{8})(.{4})(.{4})(.{4})(.{12})/);
|
||||||
|
|
||||||
|
my $pos = NAME_START_POS;
|
||||||
|
my @strings;
|
||||||
|
for (1..7) {
|
||||||
|
my ($str, $len);
|
||||||
|
$len = unpack("v", substr($block, $pos, 2));
|
||||||
|
$pos += 2;
|
||||||
|
last if ($pos + $len > BLOCK_SIZE);
|
||||||
|
$str = substr($block, $pos, $len);
|
||||||
|
$pos += $len+1;
|
||||||
|
push @strings, $str;
|
||||||
|
}
|
||||||
|
|
||||||
|
print "\n" if ($entry_num > 1);
|
||||||
|
print "=== DDL Log Entry $entry_num ===\n";
|
||||||
|
$entry_num++;
|
||||||
|
|
||||||
|
print "Entry Type : $log_entrys[$entry_type]\n";
|
||||||
|
next if ($opt_skip_not_used && $entry_type == 0);
|
||||||
|
next if ($opt_skip_ignored && $entry_type >= 3);
|
||||||
|
|
||||||
|
print "Action Type : $log_actions[$action_type]\n";
|
||||||
|
print "Phase : $phase\n";
|
||||||
|
print "Next Entry : $next_entry\n";
|
||||||
|
print "Flags : $flags\n";
|
||||||
|
print "XID : $xid\n";
|
||||||
|
print "UUID : $uuid\n";
|
||||||
|
print "Unique ID : $unique_id\n";
|
||||||
|
print "Handler Name : $strings[0]\n";
|
||||||
|
print "DB : $strings[1]\n";
|
||||||
|
print "Name : $strings[2]\n";
|
||||||
|
print "From Handler : $strings[3]\n";
|
||||||
|
print "From DB : $strings[4]\n";
|
||||||
|
print "From Name : $strings[5]\n";
|
||||||
|
print "Temp/Extra : $strings[6]\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
close $fh;
|
@@ -51,6 +51,7 @@ TYPELIB backup_stage_names=
|
|||||||
static MDL_ticket *backup_flush_ticket;
|
static MDL_ticket *backup_flush_ticket;
|
||||||
static File volatile backup_log= -1;
|
static File volatile backup_log= -1;
|
||||||
static int backup_log_error= 0;
|
static int backup_log_error= 0;
|
||||||
|
static backup_stages backup_stage;
|
||||||
|
|
||||||
static bool backup_start(THD *thd);
|
static bool backup_start(THD *thd);
|
||||||
static bool backup_flush(THD *thd);
|
static bool backup_flush(THD *thd);
|
||||||
@@ -68,6 +69,7 @@ void backup_init()
|
|||||||
backup_flush_ticket= 0;
|
backup_flush_ticket= 0;
|
||||||
backup_log= -1;
|
backup_log= -1;
|
||||||
backup_log_error= 0;
|
backup_log_error= 0;
|
||||||
|
backup_stage= BACKUP_FINISHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool run_backup_stage(THD *thd, backup_stages stage)
|
bool run_backup_stage(THD *thd, backup_stages stage)
|
||||||
@@ -140,6 +142,7 @@ bool run_backup_stage(THD *thd, backup_stages stage)
|
|||||||
my_error(ER_BACKUP_STAGE_FAILED, MYF(0), stage_names[(uint) stage]);
|
my_error(ER_BACKUP_STAGE_FAILED, MYF(0), stage_names[(uint) stage]);
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
backup_stage= next_stage;
|
||||||
next_stage= (backup_stages) ((uint) next_stage + 1);
|
next_stage= (backup_stages) ((uint) next_stage + 1);
|
||||||
} while ((uint) next_stage <= (uint) stage);
|
} while ((uint) next_stage <= (uint) stage);
|
||||||
|
|
||||||
@@ -174,6 +177,7 @@ static bool backup_start(THD *thd)
|
|||||||
|
|
||||||
/* this will be reset if this stage fails */
|
/* this will be reset if this stage fails */
|
||||||
thd->current_backup_stage= BACKUP_START;
|
thd->current_backup_stage= BACKUP_START;
|
||||||
|
backup_stage= BACKUP_START;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Wait for old backup to finish and block ddl's so that we can start the
|
Wait for old backup to finish and block ddl's so that we can start the
|
||||||
@@ -456,6 +460,7 @@ bool backup_end(THD *thd)
|
|||||||
// This is needed as we may call backup_end without backup_block_commit
|
// This is needed as we may call backup_end without backup_block_commit
|
||||||
stop_ddl_logging();
|
stop_ddl_logging();
|
||||||
backup_flush_ticket= 0;
|
backup_flush_ticket= 0;
|
||||||
|
backup_stage= BACKUP_FINISHED;
|
||||||
thd->current_backup_stage= BACKUP_FINISHED;
|
thd->current_backup_stage= BACKUP_FINISHED;
|
||||||
thd->mdl_context.release_lock(old_ticket);
|
thd->mdl_context.release_lock(old_ticket);
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
@@ -513,7 +518,7 @@ bool backup_reset_alter_copy_lock(THD *thd)
|
|||||||
bool res= 0;
|
bool res= 0;
|
||||||
MDL_ticket *ticket= thd->mdl_backup_ticket;
|
MDL_ticket *ticket= thd->mdl_backup_ticket;
|
||||||
|
|
||||||
/* Ticket maybe NULL in case of LOCK TABLES or for temporary tables*/
|
/* Ticket maybe NULL in case of LOCK TABLES or for temporary tables */
|
||||||
if (ticket)
|
if (ticket)
|
||||||
res= thd->mdl_context.upgrade_shared_lock(ticket, MDL_BACKUP_DDL,
|
res= thd->mdl_context.upgrade_shared_lock(ticket, MDL_BACKUP_DDL,
|
||||||
thd->variables.lock_wait_timeout);
|
thd->variables.lock_wait_timeout);
|
||||||
@@ -638,6 +643,13 @@ static char *add_bool_to_buffer(char *ptr, bool value) {
|
|||||||
|
|
||||||
void backup_log_ddl(const backup_log_info *info)
|
void backup_log_ddl(const backup_log_info *info)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
We should not get any backup_log_ddl request after BACKUP_WAIT_FOR_FLUSH
|
||||||
|
has been executed.
|
||||||
|
*/
|
||||||
|
DBUG_ASSERT(backup_stage <= BACKUP_WAIT_FOR_FLUSH ||
|
||||||
|
backup_stage >= BACKUP_END);
|
||||||
|
|
||||||
if (backup_log >= 0 && backup_log_error == 0)
|
if (backup_log >= 0 && backup_log_error == 0)
|
||||||
{
|
{
|
||||||
mysql_mutex_lock(&LOCK_backup_log);
|
mysql_mutex_lock(&LOCK_backup_log);
|
||||||
|
@@ -2030,13 +2030,24 @@ class Grant_tables
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("Grant_tables::open_and_lock");
|
DBUG_ENTER("Grant_tables::open_and_lock");
|
||||||
|
|
||||||
TABLE_LIST tables[USER_TABLE+1], *first= NULL;
|
TABLE_LIST *first= nullptr, *tables=
|
||||||
|
static_cast<TABLE_LIST*>(my_malloc(PSI_NOT_INSTRUMENTED,
|
||||||
|
(USER_TABLE + 1) * sizeof *tables,
|
||||||
|
MYF(MY_WME)));
|
||||||
|
int res= -1;
|
||||||
|
|
||||||
|
if (!tables)
|
||||||
|
DBUG_RETURN(res);
|
||||||
|
|
||||||
if (build_table_list(thd, &first, which_tables, lock_type, tables))
|
if (build_table_list(thd, &first, which_tables, lock_type, tables))
|
||||||
DBUG_RETURN(-1);
|
{
|
||||||
|
func_exit:
|
||||||
|
my_free(tables);
|
||||||
|
DBUG_RETURN(res);
|
||||||
|
}
|
||||||
|
|
||||||
uint counter;
|
uint counter;
|
||||||
int res= really_open(thd, first, &counter);
|
res= really_open(thd, first, &counter);
|
||||||
|
|
||||||
/* if User_table_json wasn't found, let's try User_table_tabular */
|
/* if User_table_json wasn't found, let's try User_table_tabular */
|
||||||
if (!res && (which_tables & Table_user) && !tables[USER_TABLE].table)
|
if (!res && (which_tables & Table_user) && !tables[USER_TABLE].table)
|
||||||
@@ -2062,12 +2073,15 @@ class Grant_tables
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (res)
|
if (res)
|
||||||
DBUG_RETURN(res);
|
goto func_exit;
|
||||||
|
|
||||||
if (lock_tables(thd, first, counter,
|
if (lock_tables(thd, first, counter,
|
||||||
MYSQL_LOCK_IGNORE_TIMEOUT |
|
MYSQL_LOCK_IGNORE_TIMEOUT |
|
||||||
MYSQL_OPEN_IGNORE_LOGGING_FORMAT))
|
MYSQL_OPEN_IGNORE_LOGGING_FORMAT))
|
||||||
DBUG_RETURN(-1);
|
{
|
||||||
|
res= -1;
|
||||||
|
goto func_exit;
|
||||||
|
}
|
||||||
|
|
||||||
p_user_table->set_table(tables[USER_TABLE].table);
|
p_user_table->set_table(tables[USER_TABLE].table);
|
||||||
m_db_table.set_table(tables[DB_TABLE].table);
|
m_db_table.set_table(tables[DB_TABLE].table);
|
||||||
@@ -2077,7 +2091,7 @@ class Grant_tables
|
|||||||
m_procs_priv_table.set_table(tables[PROCS_PRIV_TABLE].table);
|
m_procs_priv_table.set_table(tables[PROCS_PRIV_TABLE].table);
|
||||||
m_proxies_priv_table.set_table(tables[PROXIES_PRIV_TABLE].table);
|
m_proxies_priv_table.set_table(tables[PROXIES_PRIV_TABLE].table);
|
||||||
m_roles_mapping_table.set_table(tables[ROLES_MAPPING_TABLE].table);
|
m_roles_mapping_table.set_table(tables[ROLES_MAPPING_TABLE].table);
|
||||||
DBUG_RETURN(0);
|
goto func_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const User_table& user_table() const
|
inline const User_table& user_table() const
|
||||||
|
@@ -987,8 +987,9 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||||||
types here.
|
types here.
|
||||||
*/
|
*/
|
||||||
enum enum_field_types type= field->type();
|
enum enum_field_types type= field->type();
|
||||||
if (type < MYSQL_TYPE_TINY_BLOB ||
|
if ((type < MYSQL_TYPE_TINY_BLOB ||
|
||||||
type > MYSQL_TYPE_BLOB)
|
type > MYSQL_TYPE_BLOB) &&
|
||||||
|
field->field_length <= thd->variables.analyze_max_length)
|
||||||
{
|
{
|
||||||
field->register_field_in_read_map();
|
field->register_field_in_read_map();
|
||||||
bitmap_set_bit(&tab->has_value_set, field->field_index);
|
bitmap_set_bit(&tab->has_value_set, field->field_index);
|
||||||
|
@@ -4734,6 +4734,7 @@ restart:
|
|||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
error= FALSE;
|
error= FALSE;
|
||||||
|
std::this_thread::yield();
|
||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
goto error;
|
goto error;
|
||||||
@@ -4799,6 +4800,7 @@ restart:
|
|||||||
|
|
||||||
error= FALSE;
|
error= FALSE;
|
||||||
sroutine_to_open= &thd->lex->sroutines_list.first;
|
sroutine_to_open= &thd->lex->sroutines_list.first;
|
||||||
|
std::this_thread::yield();
|
||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
/* Classes in mysql */
|
/* Classes in mysql */
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
#include <thread>
|
||||||
#include "dur_prop.h"
|
#include "dur_prop.h"
|
||||||
#include <waiting_threads.h>
|
#include <waiting_threads.h>
|
||||||
#include "sql_const.h"
|
#include "sql_const.h"
|
||||||
@@ -736,6 +737,7 @@ typedef struct system_variables
|
|||||||
ha_rows select_limit;
|
ha_rows select_limit;
|
||||||
ha_rows max_join_size;
|
ha_rows max_join_size;
|
||||||
ha_rows expensive_subquery_limit;
|
ha_rows expensive_subquery_limit;
|
||||||
|
uint analyze_max_length;
|
||||||
ulong auto_increment_increment, auto_increment_offset;
|
ulong auto_increment_increment, auto_increment_offset;
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
/*
|
/*
|
||||||
|
@@ -6495,6 +6495,7 @@ extern "C" MYSQL *mysql_real_connect_local(MYSQL *mysql)
|
|||||||
new_thd->variables.wsrep_on= 0;
|
new_thd->variables.wsrep_on= 0;
|
||||||
new_thd->client_capabilities= client_flag;
|
new_thd->client_capabilities= client_flag;
|
||||||
new_thd->variables.sql_log_bin= 0;
|
new_thd->variables.sql_log_bin= 0;
|
||||||
|
new_thd->affected_rows= 0;
|
||||||
new_thd->set_binlog_bit();
|
new_thd->set_binlog_bit();
|
||||||
/*
|
/*
|
||||||
TOSO: decide if we should turn the auditing off
|
TOSO: decide if we should turn the auditing off
|
||||||
|
@@ -264,6 +264,7 @@ index_stat_def= {INDEX_STAT_N_FIELDS, index_stat_fields, 4, index_stat_pk_col};
|
|||||||
Open all statistical tables and lock them
|
Open all statistical tables and lock them
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
ATTRIBUTE_NOINLINE
|
||||||
static int open_stat_tables(THD *thd, TABLE_LIST *tables, bool for_write)
|
static int open_stat_tables(THD *thd, TABLE_LIST *tables, bool for_write)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
@@ -2902,9 +2903,6 @@ int collect_statistics_for_table(THD *thd, TABLE *table)
|
|||||||
After having been updated the statistical system tables are closed.
|
After having been updated the statistical system tables are closed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Stack usage 20248 from clang */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
int update_statistics_for_table(THD *thd, TABLE *table)
|
int update_statistics_for_table(THD *thd, TABLE *table)
|
||||||
{
|
{
|
||||||
TABLE_LIST tables[STATISTICS_TABLES];
|
TABLE_LIST tables[STATISTICS_TABLES];
|
||||||
@@ -2933,9 +2931,13 @@ int update_statistics_for_table(THD *thd, TABLE *table)
|
|||||||
|
|
||||||
save_binlog_format= thd->set_current_stmt_binlog_format_stmt();
|
save_binlog_format= thd->set_current_stmt_binlog_format_stmt();
|
||||||
|
|
||||||
|
char statbuf[sizeof(Index_stat)];
|
||||||
|
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
|
||||||
|
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
|
||||||
|
|
||||||
/* Update the statistical table table_stats */
|
/* Update the statistical table table_stats */
|
||||||
stat_table= tables[TABLE_STAT].table;
|
stat_table= tables[TABLE_STAT].table;
|
||||||
Table_stat table_stat(stat_table, table);
|
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, table);
|
||||||
restore_record(stat_table, s->default_values);
|
restore_record(stat_table, s->default_values);
|
||||||
table_stat.set_key_fields();
|
table_stat.set_key_fields();
|
||||||
err= table_stat.update_stat();
|
err= table_stat.update_stat();
|
||||||
@@ -2944,7 +2946,7 @@ int update_statistics_for_table(THD *thd, TABLE *table)
|
|||||||
|
|
||||||
/* Update the statistical table colum_stats */
|
/* Update the statistical table colum_stats */
|
||||||
stat_table= tables[COLUMN_STAT].table;
|
stat_table= tables[COLUMN_STAT].table;
|
||||||
Column_stat column_stat(stat_table, table);
|
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, table);
|
||||||
for (Field **field_ptr= table->field; *field_ptr; field_ptr++)
|
for (Field **field_ptr= table->field; *field_ptr; field_ptr++)
|
||||||
{
|
{
|
||||||
Field *table_field= *field_ptr;
|
Field *table_field= *field_ptr;
|
||||||
@@ -2961,7 +2963,7 @@ int update_statistics_for_table(THD *thd, TABLE *table)
|
|||||||
stat_table= tables[INDEX_STAT].table;
|
stat_table= tables[INDEX_STAT].table;
|
||||||
uint key;
|
uint key;
|
||||||
key_map::Iterator it(table->keys_in_use_for_query);
|
key_map::Iterator it(table->keys_in_use_for_query);
|
||||||
Index_stat index_stat(stat_table, table);
|
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, table);
|
||||||
|
|
||||||
while ((key= it++) != key_map::Iterator::BITMAP_END)
|
while ((key= it++) != key_map::Iterator::BITMAP_END)
|
||||||
{
|
{
|
||||||
@@ -2989,7 +2991,6 @@ int update_statistics_for_table(THD *thd, TABLE *table)
|
|||||||
new_trans.restore_old_transaction();
|
new_trans.restore_old_transaction();
|
||||||
DBUG_RETURN(rc);
|
DBUG_RETURN(rc);
|
||||||
}
|
}
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3073,14 +3074,17 @@ read_statistics_for_table(THD *thd, TABLE *table,
|
|||||||
/* Read statistics from the statistical table table_stats */
|
/* Read statistics from the statistical table table_stats */
|
||||||
Table_statistics *read_stats= new_stats_cb->table_stats;
|
Table_statistics *read_stats= new_stats_cb->table_stats;
|
||||||
stat_table= stat_tables[TABLE_STAT].table;
|
stat_table= stat_tables[TABLE_STAT].table;
|
||||||
Table_stat table_stat(stat_table, table);
|
char statbuf[sizeof(Index_stat)];
|
||||||
|
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
|
||||||
|
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
|
||||||
|
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, table);
|
||||||
table_stat.set_key_fields();
|
table_stat.set_key_fields();
|
||||||
if (table_stat.get_stat_values(new_stats_cb->table_stats))
|
if (table_stat.get_stat_values(new_stats_cb->table_stats))
|
||||||
new_stats_cb->stats_available|= TABLE_STAT_TABLE;
|
new_stats_cb->stats_available|= TABLE_STAT_TABLE;
|
||||||
|
|
||||||
/* Read statistics from the statistical table column_stats */
|
/* Read statistics from the statistical table column_stats */
|
||||||
stat_table= stat_tables[COLUMN_STAT].table;
|
stat_table= stat_tables[COLUMN_STAT].table;
|
||||||
Column_stat column_stat(stat_table, table);
|
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, table);
|
||||||
Column_statistics *column_statistics= new_stats_cb->table_stats->column_stats;
|
Column_statistics *column_statistics= new_stats_cb->table_stats->column_stats;
|
||||||
for (field_ptr= table_share->field;
|
for (field_ptr= table_share->field;
|
||||||
*field_ptr;
|
*field_ptr;
|
||||||
@@ -3102,7 +3106,7 @@ read_statistics_for_table(THD *thd, TABLE *table,
|
|||||||
|
|
||||||
/* Read statistics from the statistical table index_stats */
|
/* Read statistics from the statistical table index_stats */
|
||||||
stat_table= stat_tables[INDEX_STAT].table;
|
stat_table= stat_tables[INDEX_STAT].table;
|
||||||
Index_stat index_stat(stat_table, table);
|
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, table);
|
||||||
Index_statistics *index_statistics= new_stats_cb->table_stats->index_stats;
|
Index_statistics *index_statistics= new_stats_cb->table_stats->index_stats;
|
||||||
for (key_info= table_share->key_info,
|
for (key_info= table_share->key_info,
|
||||||
key_info_end= key_info + table_share->keys;
|
key_info_end= key_info + table_share->keys;
|
||||||
@@ -3397,9 +3401,6 @@ end:
|
|||||||
The function is called when executing the statement DROP TABLE 'tab'.
|
The function is called when executing the statement DROP TABLE 'tab'.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Stack size 20248 with clang */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
|
int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
|
||||||
const LEX_CSTRING *tab)
|
const LEX_CSTRING *tab)
|
||||||
{
|
{
|
||||||
@@ -3423,7 +3424,10 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
|
|||||||
|
|
||||||
/* Delete statistics on table from the statistical table index_stats */
|
/* Delete statistics on table from the statistical table index_stats */
|
||||||
stat_table= tables[INDEX_STAT].table;
|
stat_table= tables[INDEX_STAT].table;
|
||||||
Index_stat index_stat(stat_table, db, tab);
|
char statbuf[sizeof(Index_stat)];
|
||||||
|
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
|
||||||
|
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
|
||||||
|
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, db, tab);
|
||||||
index_stat.set_full_table_name();
|
index_stat.set_full_table_name();
|
||||||
while (index_stat.find_next_stat_for_prefix(2))
|
while (index_stat.find_next_stat_for_prefix(2))
|
||||||
{
|
{
|
||||||
@@ -3434,7 +3438,7 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
|
|||||||
|
|
||||||
/* Delete statistics on table from the statistical table column_stats */
|
/* Delete statistics on table from the statistical table column_stats */
|
||||||
stat_table= tables[COLUMN_STAT].table;
|
stat_table= tables[COLUMN_STAT].table;
|
||||||
Column_stat column_stat(stat_table, db, tab);
|
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, db, tab);
|
||||||
column_stat.set_full_table_name();
|
column_stat.set_full_table_name();
|
||||||
while (column_stat.find_next_stat_for_prefix(2))
|
while (column_stat.find_next_stat_for_prefix(2))
|
||||||
{
|
{
|
||||||
@@ -3445,7 +3449,7 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
|
|||||||
|
|
||||||
/* Delete statistics on table from the statistical table table_stats */
|
/* Delete statistics on table from the statistical table table_stats */
|
||||||
stat_table= tables[TABLE_STAT].table;
|
stat_table= tables[TABLE_STAT].table;
|
||||||
Table_stat table_stat(stat_table, db, tab);
|
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, db, tab);
|
||||||
table_stat.set_key_fields();
|
table_stat.set_key_fields();
|
||||||
if (table_stat.find_stat())
|
if (table_stat.find_stat())
|
||||||
{
|
{
|
||||||
@@ -3468,7 +3472,6 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
|
|||||||
new_trans.restore_old_transaction();
|
new_trans.restore_old_transaction();
|
||||||
DBUG_RETURN(rc);
|
DBUG_RETURN(rc);
|
||||||
}
|
}
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3837,7 +3840,6 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
|
|||||||
int rc= 0;
|
int rc= 0;
|
||||||
uint duplicate_counter= 0;
|
uint duplicate_counter= 0;
|
||||||
List_iterator<Alter_info::RENAME_INDEX_STAT_PARAMS> it(*indexes);
|
List_iterator<Alter_info::RENAME_INDEX_STAT_PARAMS> it(*indexes);
|
||||||
Alter_info::RENAME_INDEX_STAT_PARAMS *index;
|
|
||||||
char tmp_name_buffer[32];
|
char tmp_name_buffer[32];
|
||||||
LEX_CSTRING tmp_name= {tmp_name_buffer, 0};
|
LEX_CSTRING tmp_name= {tmp_name_buffer, 0};
|
||||||
DBUG_ENTER("rename_indexes_in_stat_tables");
|
DBUG_ENTER("rename_indexes_in_stat_tables");
|
||||||
@@ -3858,15 +3860,16 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
|
|||||||
/* Rename index in the statistical table index_stat */
|
/* Rename index in the statistical table index_stat */
|
||||||
|
|
||||||
stat_table= tables.table;
|
stat_table= tables.table;
|
||||||
|
char statbuf[sizeof(Index_stat)];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Loop over all indexes and rename to new name or temp name in case of
|
Loop over all indexes and rename to new name or temp name in case of
|
||||||
conflicts
|
conflicts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
while ((index= it++))
|
while (Alter_info::RENAME_INDEX_STAT_PARAMS *index= it++)
|
||||||
{
|
{
|
||||||
Index_stat index_stat(stat_table, tab);
|
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, tab);
|
||||||
uint found= 0;
|
uint found= 0;
|
||||||
|
|
||||||
/* We have to make a loop as one index may have many entries */
|
/* We have to make a loop as one index may have many entries */
|
||||||
@@ -3934,12 +3937,11 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
|
|||||||
the final name.
|
the final name.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Alter_info::RENAME_INDEX_STAT_PARAMS *index;
|
|
||||||
it.rewind();
|
it.rewind();
|
||||||
Index_stat index_stat(stat_table, tab);
|
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, tab);
|
||||||
stat_table->file->ha_index_init(index_stat.stat_key_idx, 0);
|
stat_table->file->ha_index_init(index_stat.stat_key_idx, 0);
|
||||||
|
|
||||||
while ((index= it++))
|
while (Alter_info::RENAME_INDEX_STAT_PARAMS *index= it++)
|
||||||
{
|
{
|
||||||
int err __attribute__((unused));
|
int err __attribute__((unused));
|
||||||
|
|
||||||
@@ -4013,9 +4015,6 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
|
|||||||
The function is called when executing any statement that renames a table
|
The function is called when executing any statement that renames a table
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Stack size 20968 with clang */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
|
int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
|
||||||
const LEX_CSTRING *tab,
|
const LEX_CSTRING *tab,
|
||||||
const LEX_CSTRING *new_db,
|
const LEX_CSTRING *new_db,
|
||||||
@@ -4040,10 +4039,15 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
|
|||||||
|
|
||||||
/* Rename table in the statistical table index_stats */
|
/* Rename table in the statistical table index_stats */
|
||||||
stat_table= tables[INDEX_STAT].table;
|
stat_table= tables[INDEX_STAT].table;
|
||||||
Index_stat index_stat(stat_table, db, tab);
|
char statbuf[sizeof(Index_stat)];
|
||||||
index_stat.set_full_table_name();
|
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
|
||||||
|
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
|
||||||
|
|
||||||
Stat_table_write_iter index_iter(&index_stat);
|
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, db, tab);
|
||||||
|
index_stat.set_full_table_name();
|
||||||
|
char ibuf[sizeof(Stat_table_write_iter)];
|
||||||
|
|
||||||
|
auto &index_iter= *new(ibuf) Stat_table_write_iter(&index_stat);
|
||||||
if (index_iter.init(2))
|
if (index_iter.init(2))
|
||||||
rc= 1;
|
rc= 1;
|
||||||
while (!index_iter.get_next_row())
|
while (!index_iter.get_next_row())
|
||||||
@@ -4057,9 +4061,9 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
|
|||||||
|
|
||||||
/* Rename table in the statistical table column_stats */
|
/* Rename table in the statistical table column_stats */
|
||||||
stat_table= tables[COLUMN_STAT].table;
|
stat_table= tables[COLUMN_STAT].table;
|
||||||
Column_stat column_stat(stat_table, db, tab);
|
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, db, tab);
|
||||||
column_stat.set_full_table_name();
|
column_stat.set_full_table_name();
|
||||||
Stat_table_write_iter column_iter(&column_stat);
|
auto &column_iter= *new(ibuf) Stat_table_write_iter(&column_stat);
|
||||||
if (column_iter.init(2))
|
if (column_iter.init(2))
|
||||||
rc= 1;
|
rc= 1;
|
||||||
while (!column_iter.get_next_row())
|
while (!column_iter.get_next_row())
|
||||||
@@ -4073,7 +4077,7 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
|
|||||||
|
|
||||||
/* Rename table in the statistical table table_stats */
|
/* Rename table in the statistical table table_stats */
|
||||||
stat_table= tables[TABLE_STAT].table;
|
stat_table= tables[TABLE_STAT].table;
|
||||||
Table_stat table_stat(stat_table, db, tab);
|
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, db, tab);
|
||||||
table_stat.set_key_fields();
|
table_stat.set_key_fields();
|
||||||
if (table_stat.find_stat())
|
if (table_stat.find_stat())
|
||||||
{
|
{
|
||||||
@@ -4093,7 +4097,6 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
|
|||||||
new_trans.restore_old_transaction();
|
new_trans.restore_old_transaction();
|
||||||
DBUG_RETURN(rc);
|
DBUG_RETURN(rc);
|
||||||
}
|
}
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -8011,7 +8011,7 @@ static bool mysql_inplace_alter_table(THD *thd,
|
|||||||
|
|
||||||
if (table->file->ha_prepare_inplace_alter_table(altered_table,
|
if (table->file->ha_prepare_inplace_alter_table(altered_table,
|
||||||
ha_alter_info))
|
ha_alter_info))
|
||||||
goto rollback;
|
goto rollback_no_restore_lock;
|
||||||
|
|
||||||
debug_crash_here("ddl_log_alter_after_prepare_inplace");
|
debug_crash_here("ddl_log_alter_after_prepare_inplace");
|
||||||
|
|
||||||
@@ -8067,21 +8067,17 @@ static bool mysql_inplace_alter_table(THD *thd,
|
|||||||
res= table->file->ha_inplace_alter_table(altered_table, ha_alter_info);
|
res= table->file->ha_inplace_alter_table(altered_table, ha_alter_info);
|
||||||
thd->abort_on_warning= false;
|
thd->abort_on_warning= false;
|
||||||
|
|
||||||
if (start_alter_id && wait_for_master(thd))
|
if (res || (start_alter_id && wait_for_master(thd)))
|
||||||
goto rollback;
|
goto rollback_no_restore_lock;
|
||||||
|
|
||||||
if (res)
|
|
||||||
goto rollback;
|
|
||||||
|
|
||||||
|
|
||||||
DEBUG_SYNC(thd, "alter_table_inplace_before_lock_upgrade");
|
DEBUG_SYNC(thd, "alter_table_inplace_before_lock_upgrade");
|
||||||
// Upgrade to EXCLUSIVE before commit.
|
// Upgrade to EXCLUSIVE before commit.
|
||||||
if (wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME))
|
if (wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME))
|
||||||
goto rollback;
|
goto rollback_no_restore_lock;
|
||||||
|
|
||||||
/* Set MDL_BACKUP_DDL */
|
/* Set MDL_BACKUP_DDL */
|
||||||
if (backup_reset_alter_copy_lock(thd))
|
if (backup_reset_alter_copy_lock(thd))
|
||||||
goto rollback;
|
goto rollback_no_restore_lock;
|
||||||
|
|
||||||
/* Crashing here should cause the original table to be used */
|
/* Crashing here should cause the original table to be used */
|
||||||
debug_crash_here("ddl_log_alter_after_copy");
|
debug_crash_here("ddl_log_alter_after_copy");
|
||||||
@@ -8110,7 +8106,7 @@ static bool mysql_inplace_alter_table(THD *thd,
|
|||||||
if (!(table->file->partition_ht()->flags &
|
if (!(table->file->partition_ht()->flags &
|
||||||
HTON_REQUIRES_NOTIFY_TABLEDEF_CHANGED_AFTER_COMMIT) &&
|
HTON_REQUIRES_NOTIFY_TABLEDEF_CHANGED_AFTER_COMMIT) &&
|
||||||
notify_tabledef_changed(table_list))
|
notify_tabledef_changed(table_list))
|
||||||
goto rollback;
|
goto rollback_restore_lock;
|
||||||
|
|
||||||
{
|
{
|
||||||
TR_table trt(thd, true);
|
TR_table trt(thd, true);
|
||||||
@@ -8123,17 +8119,17 @@ static bool mysql_inplace_alter_table(THD *thd,
|
|||||||
if (!TR_table::use_transaction_registry)
|
if (!TR_table::use_transaction_registry)
|
||||||
{
|
{
|
||||||
my_error(ER_VERS_TRT_IS_DISABLED, MYF(0));
|
my_error(ER_VERS_TRT_IS_DISABLED, MYF(0));
|
||||||
goto rollback;
|
goto rollback_restore_lock;
|
||||||
}
|
}
|
||||||
if (trt.update(trx_start_id, trx_end_id))
|
if (trt.update(trx_start_id, trx_end_id))
|
||||||
goto rollback;
|
goto rollback_restore_lock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table->file->ha_commit_inplace_alter_table(altered_table,
|
if (table->file->ha_commit_inplace_alter_table(altered_table,
|
||||||
ha_alter_info,
|
ha_alter_info,
|
||||||
true))
|
true))
|
||||||
goto rollback;
|
goto rollback_restore_lock;
|
||||||
DEBUG_SYNC(thd, "alter_table_inplace_after_commit");
|
DEBUG_SYNC(thd, "alter_table_inplace_after_commit");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8230,7 +8226,11 @@ static bool mysql_inplace_alter_table(THD *thd,
|
|||||||
|
|
||||||
DBUG_RETURN(commit_succeded_with_error);
|
DBUG_RETURN(commit_succeded_with_error);
|
||||||
|
|
||||||
rollback:
|
rollback_restore_lock:
|
||||||
|
/* Wait for backup if it is running */
|
||||||
|
backup_reset_alter_copy_lock(thd);
|
||||||
|
|
||||||
|
rollback_no_restore_lock:
|
||||||
table->file->ha_commit_inplace_alter_table(altered_table,
|
table->file->ha_commit_inplace_alter_table(altered_table,
|
||||||
ha_alter_info,
|
ha_alter_info,
|
||||||
false);
|
false);
|
||||||
@@ -12414,7 +12414,7 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
|
|||||||
if (unlikely(mysql_trans_commit_alter_copy_data(thd)))
|
if (unlikely(mysql_trans_commit_alter_copy_data(thd)))
|
||||||
error= 1;
|
error= 1;
|
||||||
|
|
||||||
err:
|
end:
|
||||||
if (bulk_insert_started)
|
if (bulk_insert_started)
|
||||||
(void) to->file->ha_end_bulk_insert();
|
(void) to->file->ha_end_bulk_insert();
|
||||||
|
|
||||||
@@ -12445,6 +12445,10 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
|
|||||||
error= 1;
|
error= 1;
|
||||||
thd_progress_end(thd);
|
thd_progress_end(thd);
|
||||||
DBUG_RETURN(error > 0 ? -1 : 0);
|
DBUG_RETURN(error > 0 ? -1 : 0);
|
||||||
|
|
||||||
|
err:
|
||||||
|
backup_reset_alter_copy_lock(thd);
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -445,6 +445,19 @@ static Sys_var_double Sys_analyze_sample_percentage(
|
|||||||
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100),
|
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100),
|
||||||
DEFAULT(100));
|
DEFAULT(100));
|
||||||
|
|
||||||
|
/*
|
||||||
|
The max length have to be UINT_MAX32 to not remove GEOMETRY fields
|
||||||
|
from analyze.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static Sys_var_uint Sys_analyze_max_length(
|
||||||
|
"analyze_max_length",
|
||||||
|
"Fields which length in bytes more than this are skipped by ANALYZE "
|
||||||
|
"TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause",
|
||||||
|
SESSION_VAR(analyze_max_length),
|
||||||
|
CMD_LINE(REQUIRED_ARG), VALID_RANGE(32, UINT_MAX32),
|
||||||
|
DEFAULT(UINT_MAX32), BLOCK_SIZE(1));
|
||||||
|
|
||||||
static Sys_var_ulong Sys_auto_increment_increment(
|
static Sys_var_ulong Sys_auto_increment_increment(
|
||||||
"auto_increment_increment",
|
"auto_increment_increment",
|
||||||
"Auto-increment columns are incremented by this",
|
"Auto-increment columns are incremented by this",
|
||||||
|
@@ -901,6 +901,7 @@ retry:
|
|||||||
{
|
{
|
||||||
mysql_mutex_unlock(&element->LOCK_table_share);
|
mysql_mutex_unlock(&element->LOCK_table_share);
|
||||||
lf_hash_search_unpin(thd->tdc_hash_pins);
|
lf_hash_search_unpin(thd->tdc_hash_pins);
|
||||||
|
std::this_thread::yield();
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
lf_hash_search_unpin(thd->tdc_hash_pins);
|
lf_hash_search_unpin(thd->tdc_hash_pins);
|
||||||
|
@@ -715,6 +715,10 @@ static void stop_timer(pool_timer_t *timer)
|
|||||||
|
|
||||||
@return a ready connection, or NULL on shutdown
|
@return a ready connection, or NULL on shutdown
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* ev[MAX_EVENTS] may bloat the stack frame beyond 16 KiB */
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
static TP_connection_generic * listener(worker_thread_t *current_thread,
|
static TP_connection_generic * listener(worker_thread_t *current_thread,
|
||||||
thread_group_t *thread_group)
|
thread_group_t *thread_group)
|
||||||
{
|
{
|
||||||
@@ -830,6 +834,7 @@ static TP_connection_generic * listener(worker_thread_t *current_thread,
|
|||||||
|
|
||||||
DBUG_RETURN(retval);
|
DBUG_RETURN(retval);
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Adjust thread counters in group or global
|
Adjust thread counters in group or global
|
||||||
@@ -1157,6 +1162,9 @@ static bool too_many_threads(thread_group_t *thread_group)
|
|||||||
NULL is returned if timeout has expired,or on shutdown.
|
NULL is returned if timeout has expired,or on shutdown.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* ev[MAX_EVENTS] may bloat the stack frame beyond 16 KiB */
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
TP_connection_generic *get_event(worker_thread_t *current_thread,
|
TP_connection_generic *get_event(worker_thread_t *current_thread,
|
||||||
thread_group_t *thread_group, struct timespec *abstime)
|
thread_group_t *thread_group, struct timespec *abstime)
|
||||||
{
|
{
|
||||||
@@ -1262,6 +1270,7 @@ TP_connection_generic *get_event(worker_thread_t *current_thread,
|
|||||||
|
|
||||||
DBUG_RETURN(connection);
|
DBUG_RETURN(connection);
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2291,6 +2291,8 @@ str_to_offset(const char *str, uint length, long *offset)
|
|||||||
specification or other error.
|
specification or other error.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
Time_zone *
|
Time_zone *
|
||||||
my_tz_find(THD *thd, const String *name)
|
my_tz_find(THD *thd, const String *name)
|
||||||
{
|
{
|
||||||
@@ -2359,6 +2361,7 @@ my_tz_find(THD *thd, const String *name)
|
|||||||
|
|
||||||
DBUG_RETURN(result_tz);
|
DBUG_RETURN(result_tz);
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1819,9 +1819,9 @@ static void *allowlist_check_thread(void *param)
|
|||||||
Allowlist_check_arg *arg= (Allowlist_check_arg *) param;
|
Allowlist_check_arg *arg= (Allowlist_check_arg *) param;
|
||||||
|
|
||||||
my_thread_init();
|
my_thread_init();
|
||||||
THD thd(0);
|
THD *thd= new THD(0);
|
||||||
thd.thread_stack= (char *) &thd;
|
thd->thread_stack= (char *) thd;
|
||||||
wsrep_init_thd_for_schema(&thd);
|
wsrep_init_thd_for_schema(thd);
|
||||||
|
|
||||||
int error;
|
int error;
|
||||||
TABLE *allowlist_table= 0;
|
TABLE *allowlist_table= 0;
|
||||||
@@ -1835,8 +1835,8 @@ static void *allowlist_check_thread(void *param)
|
|||||||
/*
|
/*
|
||||||
* Read allowlist table
|
* Read allowlist table
|
||||||
*/
|
*/
|
||||||
Wsrep_schema_impl::init_stmt(&thd);
|
Wsrep_schema_impl::init_stmt(thd);
|
||||||
if (Wsrep_schema_impl::open_for_read(&thd, allowlist_table_str.c_str(),
|
if (Wsrep_schema_impl::open_for_read(thd, allowlist_table_str.c_str(),
|
||||||
&allowlist_table_l) ||
|
&allowlist_table_l) ||
|
||||||
(allowlist_table= allowlist_table_l.table,
|
(allowlist_table= allowlist_table_l.table,
|
||||||
Wsrep_schema_impl::init_for_scan(allowlist_table)))
|
Wsrep_schema_impl::init_for_scan(allowlist_table)))
|
||||||
@@ -1877,9 +1877,10 @@ static void *allowlist_check_thread(void *param)
|
|||||||
{
|
{
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
Wsrep_schema_impl::finish_stmt(&thd);
|
Wsrep_schema_impl::finish_stmt(thd);
|
||||||
(void) trans_commit(&thd);
|
(void) trans_commit(thd);
|
||||||
out:
|
out:
|
||||||
|
delete thd;
|
||||||
my_thread_end();
|
my_thread_end();
|
||||||
arg->response = match_found_or_empty;
|
arg->response = match_found_or_empty;
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -7019,9 +7019,6 @@ PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|||||||
- user has file privilege
|
- user has file privilege
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Stack size 16664 in clang */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
bool ha_connect::FileExists(const char *fn, bool bf)
|
bool ha_connect::FileExists(const char *fn, bool bf)
|
||||||
{
|
{
|
||||||
if (!fn || !*fn)
|
if (!fn || !*fn)
|
||||||
@@ -7057,10 +7054,9 @@ bool ha_connect::FileExists(const char *fn, bool bf)
|
|||||||
|
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
if (errno != ENOENT) {
|
if (errno != ENOENT) {
|
||||||
char buf[_MAX_PATH + 20];
|
push_warning_printf(table->in_use, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
ER_UNKNOWN_ERROR,
|
||||||
snprintf(buf, sizeof(buf), "Error %d for file %s", errno, filename);
|
"Error %d for file %s", errno, filename);
|
||||||
push_warning(table->in_use, Sql_condition::WARN_LEVEL_WARN, ER_UNKNOWN_ERROR, buf);
|
|
||||||
return true;
|
return true;
|
||||||
} else
|
} else
|
||||||
return false;
|
return false;
|
||||||
@@ -7072,7 +7068,6 @@ bool ha_connect::FileExists(const char *fn, bool bf)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
} // end of FileExists
|
} // end of FileExists
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
// Called by SameString and NoFieldOptionChange
|
// Called by SameString and NoFieldOptionChange
|
||||||
bool ha_connect::CheckString(PCSZ str1, PCSZ str2)
|
bool ha_connect::CheckString(PCSZ str1, PCSZ str2)
|
||||||
|
@@ -164,16 +164,16 @@ Warnings:
|
|||||||
Note 1105 xt1: 1 affected rows
|
Note 1105 xt1: 1 affected rows
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
id msg
|
id msg
|
||||||
4 four
|
|
||||||
7 sept
|
|
||||||
1 one
|
1 one
|
||||||
8 eight
|
|
||||||
40 forty
|
|
||||||
10 ten
|
10 ten
|
||||||
11 eleven
|
11 eleven
|
||||||
35 thirty five
|
35 thirty five
|
||||||
72 big
|
4 four
|
||||||
|
40 forty
|
||||||
60 big
|
60 big
|
||||||
|
7 sept
|
||||||
|
72 big
|
||||||
|
8 eight
|
||||||
81 big
|
81 big
|
||||||
DELETE FROM t1 WHERE id in (60,72);
|
DELETE FROM t1 WHERE id in (60,72);
|
||||||
Warnings:
|
Warnings:
|
||||||
@@ -181,14 +181,14 @@ Note 1105 xt3: 2 affected rows
|
|||||||
Note 1105 xt3: 0 affected rows
|
Note 1105 xt3: 0 affected rows
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
id msg
|
id msg
|
||||||
4 four
|
|
||||||
7 sept
|
|
||||||
1 one
|
1 one
|
||||||
8 eight
|
|
||||||
40 forty
|
|
||||||
10 ten
|
10 ten
|
||||||
11 eleven
|
11 eleven
|
||||||
35 thirty five
|
35 thirty five
|
||||||
|
4 four
|
||||||
|
40 forty
|
||||||
|
7 sept
|
||||||
|
8 eight
|
||||||
81 big
|
81 big
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
|
@@ -75,11 +75,14 @@ SELECT * FROM t1 WHERE id = 7;
|
|||||||
SELECT * FROM t1 WHERE id = 35;
|
SELECT * FROM t1 WHERE id = 35;
|
||||||
UPDATE t1 SET msg = 'number' WHERE id in (60,72);
|
UPDATE t1 SET msg = 'number' WHERE id in (60,72);
|
||||||
UPDATE t1 SET msg = 'soixante' WHERE id = 60;
|
UPDATE t1 SET msg = 'soixante' WHERE id = 60;
|
||||||
|
--sorted_result
|
||||||
SELECT * FROM t1 WHERE id > 50;
|
SELECT * FROM t1 WHERE id > 50;
|
||||||
UPDATE t1 SET msg = 'big' WHERE id > 50;
|
UPDATE t1 SET msg = 'big' WHERE id > 50;
|
||||||
UPDATE t1 SET msg = 'sept' WHERE id = 7;
|
UPDATE t1 SET msg = 'sept' WHERE id = 7;
|
||||||
|
--sorted_result
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DELETE FROM t1 WHERE id in (60,72);
|
DELETE FROM t1 WHERE id in (60,72);
|
||||||
|
--sorted_result
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@@ -425,9 +425,6 @@ row_quiesce_write_header(
|
|||||||
Write the table meta data after quiesce.
|
Write the table meta data after quiesce.
|
||||||
@return DB_SUCCESS or error code */
|
@return DB_SUCCESS or error code */
|
||||||
|
|
||||||
/* Stack size 20904 with clang */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
||||||
dberr_t
|
dberr_t
|
||||||
row_quiesce_write_cfg(
|
row_quiesce_write_cfg(
|
||||||
@@ -445,9 +442,10 @@ row_quiesce_write_cfg(
|
|||||||
|
|
||||||
FILE* file = fopen(name, "w+b");
|
FILE* file = fopen(name, "w+b");
|
||||||
|
|
||||||
if (file == NULL) {
|
if (!file) {
|
||||||
ib_errf(thd, IB_LOG_LEVEL_WARN, ER_CANT_CREATE_FILE,
|
fail:
|
||||||
name, errno, strerror(errno));
|
ib_senderrf(thd, IB_LOG_LEVEL_WARN, ER_CANT_CREATE_FILE,
|
||||||
|
name, errno, strerror(errno));
|
||||||
|
|
||||||
err = DB_IO_ERROR;
|
err = DB_IO_ERROR;
|
||||||
} else {
|
} else {
|
||||||
@@ -461,31 +459,18 @@ row_quiesce_write_cfg(
|
|||||||
err = row_quiesce_write_indexes(table, file, thd);
|
err = row_quiesce_write_indexes(table, file, thd);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fflush(file) != 0) {
|
if (fflush(file)) {
|
||||||
|
std::ignore = fclose(file);
|
||||||
char msg[BUFSIZ];
|
goto fail;
|
||||||
|
|
||||||
snprintf(msg, sizeof(msg), "%s flush() failed", name);
|
|
||||||
|
|
||||||
ib_senderrf(
|
|
||||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
|
||||||
(ulong) errno, strerror(errno), msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fclose(file) != 0) {
|
if (fclose(file)) {
|
||||||
char msg[BUFSIZ];
|
goto fail;
|
||||||
|
|
||||||
snprintf(msg, sizeof(msg), "%s flose() failed", name);
|
|
||||||
|
|
||||||
ib_senderrf(
|
|
||||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
|
||||||
(ulong) errno, strerror(errno), msg);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return(err);
|
return(err);
|
||||||
}
|
}
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
/*********************************************************************//**
|
/*********************************************************************//**
|
||||||
Check whether a table has an FTS index defined on it.
|
Check whether a table has an FTS index defined on it.
|
||||||
|
@@ -1077,6 +1077,7 @@ static void trx_purge_close_tables(purge_node_t *node, THD *thd) noexcept
|
|||||||
|
|
||||||
void purge_sys_t::wait_FTS(bool also_sys)
|
void purge_sys_t::wait_FTS(bool also_sys)
|
||||||
{
|
{
|
||||||
|
std::this_thread::yield();
|
||||||
for (const uint32_t mask= also_sys ? ~0U : ~PAUSED_SYS; m_FTS_paused & mask;)
|
for (const uint32_t mask= also_sys ? ~0U : ~PAUSED_SYS; m_FTS_paused & mask;)
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||||
}
|
}
|
||||||
|
@@ -3601,9 +3601,6 @@ static my_bool translog_is_LSN_chunk(uchar type)
|
|||||||
@retval 1 Error
|
@retval 1 Error
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Stack size 26120 from clang */
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
my_bool translog_init_with_table(const char *directory,
|
my_bool translog_init_with_table(const char *directory,
|
||||||
uint32 log_file_max_size,
|
uint32 log_file_max_size,
|
||||||
uint32 server_version,
|
uint32 server_version,
|
||||||
@@ -3857,6 +3854,7 @@ my_bool translog_init_with_table(const char *directory,
|
|||||||
|
|
||||||
if (logs_found)
|
if (logs_found)
|
||||||
{
|
{
|
||||||
|
TRANSLOG_PAGE_SIZE_BUFF psize_buff;
|
||||||
TRANSLOG_ADDRESS current_page= sure_page;
|
TRANSLOG_ADDRESS current_page= sure_page;
|
||||||
my_bool pageok;
|
my_bool pageok;
|
||||||
|
|
||||||
@@ -3897,7 +3895,6 @@ my_bool translog_init_with_table(const char *directory,
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
TRANSLOG_VALIDATOR_DATA data;
|
TRANSLOG_VALIDATOR_DATA data;
|
||||||
TRANSLOG_PAGE_SIZE_BUFF psize_buff;
|
|
||||||
uchar *page;
|
uchar *page;
|
||||||
data.addr= ¤t_page;
|
data.addr= ¤t_page;
|
||||||
if ((page= translog_get_page(&data, psize_buff.buffer, NULL)) == NULL)
|
if ((page= translog_get_page(&data, psize_buff.buffer, NULL)) == NULL)
|
||||||
@@ -3946,7 +3943,6 @@ my_bool translog_init_with_table(const char *directory,
|
|||||||
if (logs_found && !old_log_was_recovered && old_flags == flags)
|
if (logs_found && !old_log_was_recovered && old_flags == flags)
|
||||||
{
|
{
|
||||||
TRANSLOG_VALIDATOR_DATA data;
|
TRANSLOG_VALIDATOR_DATA data;
|
||||||
TRANSLOG_PAGE_SIZE_BUFF psize_buff;
|
|
||||||
uchar *page;
|
uchar *page;
|
||||||
uint16 chunk_offset;
|
uint16 chunk_offset;
|
||||||
data.addr= &last_valid_page;
|
data.addr= &last_valid_page;
|
||||||
@@ -4237,7 +4233,6 @@ err:
|
|||||||
ma_message_no_user(0, "log initialization failed");
|
ma_message_no_user(0, "log initialization failed");
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1558,7 +1558,7 @@ uint _ma_state_info_write(MARIA_SHARE *share, uint pWrite)
|
|||||||
@retval 1 Error
|
@retval 1 Error
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Stack size 26376 from clang */
|
/* MARIA_STATE_INFO_SIZE + MARIA_STATE_EXTRA_SIZE == 25559 */
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
uint _ma_state_info_write_sub(File file, MARIA_STATE_INFO *state, uint pWrite)
|
uint _ma_state_info_write_sub(File file, MARIA_STATE_INFO *state, uint pWrite)
|
||||||
|
@@ -4913,6 +4913,7 @@ static int flush_cached_blocks(PAGECACHE *pagecache,
|
|||||||
@retval PCFLUSH_PINNED Pinned blocks was met and skipped.
|
@retval PCFLUSH_PINNED Pinned blocks was met and skipped.
|
||||||
@retval PCFLUSH_PINNED_AND_ERROR PCFLUSH_ERROR and PCFLUSH_PINNED.
|
@retval PCFLUSH_PINNED_AND_ERROR PCFLUSH_ERROR and PCFLUSH_PINNED.
|
||||||
*/
|
*/
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
static int flush_pagecache_blocks_int(PAGECACHE *pagecache,
|
static int flush_pagecache_blocks_int(PAGECACHE *pagecache,
|
||||||
PAGECACHE_FILE *file,
|
PAGECACHE_FILE *file,
|
||||||
@@ -5242,6 +5243,7 @@ int flush_pagecache_blocks_with_filter(PAGECACHE *pagecache,
|
|||||||
pagecache_pthread_mutex_unlock(&pagecache->cache_lock);
|
pagecache_pthread_mutex_unlock(&pagecache->cache_lock);
|
||||||
DBUG_RETURN(res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -277,6 +277,7 @@ int maria_recovery_from_log(void)
|
|||||||
@retval 0 OK
|
@retval 0 OK
|
||||||
@retval !=0 Error
|
@retval !=0 Error
|
||||||
*/
|
*/
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
int maria_apply_log(LSN from_lsn, LSN end_redo_lsn, LSN end_undo_lsn,
|
int maria_apply_log(LSN from_lsn, LSN end_redo_lsn, LSN end_undo_lsn,
|
||||||
enum maria_apply_log_way apply,
|
enum maria_apply_log_way apply,
|
||||||
@@ -562,6 +563,7 @@ end:
|
|||||||
*/
|
*/
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
|
||||||
|
|
||||||
/* very basic info about the record's header */
|
/* very basic info about the record's header */
|
||||||
|
@@ -49,6 +49,14 @@ if(MSVC)
|
|||||||
message(FATAL_ERROR ${MRN_OLD_MSVC_MESSAGE})
|
message(FATAL_ERROR ${MRN_OLD_MSVC_MESSAGE})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
else()
|
||||||
|
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
|
||||||
|
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
|
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
|
||||||
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||||
|
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
|
||||||
|
CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||||
|
MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=49152)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MRN_BUNDLED)
|
if(MRN_BUNDLED)
|
||||||
|
7
storage/mroonga/vendor/groonga/lib/expr.c
vendored
7
storage/mroonga/vendor/groonga/lib/expr.c
vendored
@@ -2459,6 +2459,10 @@ grn_proc_call(grn_ctx *ctx, grn_obj *proc, int nargs, grn_obj *caller)
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# pragma GCC diagnostic push
|
||||||
|
# pragma GCC diagnostic ignored "-Wframe-larger-than="
|
||||||
|
#endif
|
||||||
inline static void
|
inline static void
|
||||||
grn_expr_exec_get_member_vector(grn_ctx *ctx,
|
grn_expr_exec_get_member_vector(grn_ctx *ctx,
|
||||||
grn_obj *expr,
|
grn_obj *expr,
|
||||||
@@ -3834,6 +3838,9 @@ exit :
|
|||||||
}
|
}
|
||||||
GRN_API_RETURN(val);
|
GRN_API_RETURN(val);
|
||||||
}
|
}
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
grn_obj *
|
grn_obj *
|
||||||
grn_expr_get_value(grn_ctx *ctx, grn_obj *expr, int offset)
|
grn_expr_get_value(grn_ctx *ctx, grn_obj *expr, int offset)
|
||||||
|
@@ -86,8 +86,6 @@ void test_no_instruments()
|
|||||||
cleanup_instruments();
|
cleanup_instruments();
|
||||||
}
|
}
|
||||||
|
|
||||||
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
void test_no_instances()
|
void test_no_instances()
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
@@ -218,7 +216,7 @@ void test_no_instances()
|
|||||||
ok(file == NULL, "no file");
|
ok(file == NULL, "no file");
|
||||||
ok(global_file_container.m_lost == 4, "lost 4");
|
ok(global_file_container.m_lost == 4, "lost 4");
|
||||||
|
|
||||||
char long_file_name[10000];
|
char long_file_name[5000];
|
||||||
int size= sizeof(long_file_name);
|
int size= sizeof(long_file_name);
|
||||||
memset(long_file_name, 'X', size);
|
memset(long_file_name, 'X', size);
|
||||||
|
|
||||||
@@ -247,7 +245,6 @@ void test_no_instances()
|
|||||||
cleanup_file_hash();
|
cleanup_file_hash();
|
||||||
cleanup_instruments();
|
cleanup_instruments();
|
||||||
}
|
}
|
||||||
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
|
||||||
|
|
||||||
void test_with_instances()
|
void test_with_instances()
|
||||||
{
|
{
|
||||||
|
@@ -9,6 +9,13 @@ SET(CPACK_RPM_rocksdb-engine_PACKAGE_SUMMARY "RocksDB storage engine for MariaDB
|
|||||||
SET(CPACK_RPM_rocksdb-engine_PACKAGE_DESCRIPTION "The RocksDB storage engine is a high performance storage engine, aimed
|
SET(CPACK_RPM_rocksdb-engine_PACKAGE_DESCRIPTION "The RocksDB storage engine is a high performance storage engine, aimed
|
||||||
at maximising storage efficiency while maintaining InnoDB-like performance." PARENT_SCOPE)
|
at maximising storage efficiency while maintaining InnoDB-like performance." PARENT_SCOPE)
|
||||||
|
|
||||||
|
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
|
||||||
|
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
|
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
|
||||||
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||||
|
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
|
||||||
|
CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||||
|
MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=32768)
|
||||||
MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-range-loop-construct)
|
MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-range-loop-construct)
|
||||||
MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-effc++ DEBUG RELWITHDEBINFO)
|
MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-effc++ DEBUG RELWITHDEBINFO)
|
||||||
|
|
||||||
|
@@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s')
|
|||||||
4 i 2003-10-30 05:01:03
|
4 i 2003-10-30 05:01:03
|
||||||
5 h 2001-10-31 23:59:59
|
5 h 2001-10-31 23:59:59
|
||||||
|
|
||||||
select sql_calc_found_rows
|
|
||||||
connection master_1;
|
|
||||||
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
|
||||||
ORDER BY a LIMIT 4;
|
|
||||||
a b date_format(c, '%Y-%m-%d %H:%i:%s')
|
|
||||||
1 f 2008-07-01 10:21:39
|
|
||||||
2 g 2000-02-01 00:00:00
|
|
||||||
3 j 2007-05-04 20:03:11
|
|
||||||
4 i 2003-10-30 05:01:03
|
|
||||||
connection master_1;
|
|
||||||
SELECT found_rows();
|
|
||||||
found_rows()
|
|
||||||
5
|
|
||||||
|
|
||||||
select high_priority
|
select high_priority
|
||||||
connection master_1;
|
connection master_1;
|
||||||
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
||||||
|
@@ -847,52 +847,6 @@ if ($USE_CHILD_GROUP2)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo select sql_calc_found_rows
|
|
||||||
if ($USE_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--disable_query_log
|
|
||||||
--disable_result_log
|
|
||||||
}
|
|
||||||
--connection child2_1
|
|
||||||
if ($USE_GENERAL_LOG)
|
|
||||||
{
|
|
||||||
TRUNCATE TABLE mysql.general_log;
|
|
||||||
}
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--enable_query_log
|
|
||||||
--enable_result_log
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--connection master_1
|
|
||||||
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
|
||||||
ORDER BY a LIMIT 4;
|
|
||||||
if ($USE_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--disable_query_log
|
|
||||||
--disable_result_log
|
|
||||||
}
|
|
||||||
--connection child2_1
|
|
||||||
if ($USE_GENERAL_LOG)
|
|
||||||
{
|
|
||||||
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
|
|
||||||
}
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--enable_query_log
|
|
||||||
--enable_result_log
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--connection master_1
|
|
||||||
--disable_ps2_protocol
|
|
||||||
SELECT found_rows();
|
|
||||||
--enable_ps2_protocol
|
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo select high_priority
|
--echo select high_priority
|
||||||
if ($USE_CHILD_GROUP2)
|
if ($USE_CHILD_GROUP2)
|
||||||
|
@@ -43,8 +43,6 @@ let $CHILD2_1_CREATE_TABLES=
|
|||||||
PRIMARY KEY(a,b)
|
PRIMARY KEY(a,b)
|
||||||
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
|
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
|
||||||
--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES
|
--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES
|
||||||
let $CHILD2_1_SELECT_TABLES=
|
|
||||||
SELECT pkey, txt FROM tbl_a ORDER BY pkey;
|
|
||||||
let $CHILD2_1_SELECT_TABLES=
|
let $CHILD2_1_SELECT_TABLES=
|
||||||
SELECT a, b, c FROM ta_r2 ORDER BY a $STR_SEMICOLON
|
SELECT a, b, c FROM ta_r2 ORDER BY a $STR_SEMICOLON
|
||||||
SELECT a, b, c FROM ta_r3 ORDER BY a;
|
SELECT a, b, c FROM ta_r3 ORDER BY a;
|
||||||
|
@@ -58,25 +58,33 @@ TRUNCATE TABLE mysql.general_log;
|
|||||||
|
|
||||||
--connection master_1
|
--connection master_1
|
||||||
--disable_ps2_protocol
|
--disable_ps2_protocol
|
||||||
|
--disable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt2) WHERE b = 'c';
|
SELECT a, b, c FROM tbl_a PARTITION (pt2) WHERE b = 'c';
|
||||||
|
--enable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2);
|
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2);
|
||||||
|
--disable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt3) WHERE b = 'c';
|
SELECT a, b, c FROM tbl_a PARTITION (pt3) WHERE b = 'c';
|
||||||
|
--enable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2);
|
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2);
|
||||||
|
--disable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c';
|
SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c';
|
||||||
|
--enable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt3);
|
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt3);
|
||||||
|
--disable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c';
|
SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c';
|
||||||
|
--enable_view_protocol
|
||||||
SELECT a, b, c FROM tbl_a PARTITION (pt2,pt3);
|
SELECT a, b, c FROM tbl_a PARTITION (pt2,pt3);
|
||||||
--enable_ps2_protocol
|
--enable_ps2_protocol
|
||||||
|
|
||||||
--connection child2_1
|
--connection child2_1
|
||||||
--disable_ps2_protocol
|
|
||||||
--disable_view_protocol
|
--disable_view_protocol
|
||||||
|
--disable_ps2_protocol
|
||||||
eval $CHILD2_1_SELECT_ARGUMENT1;
|
eval $CHILD2_1_SELECT_ARGUMENT1;
|
||||||
--enable_view_protocol
|
|
||||||
--enable_ps2_protocol
|
--enable_ps2_protocol
|
||||||
--disable_ps_protocol
|
--disable_ps_protocol
|
||||||
eval $CHILD2_1_SELECT_TABLES;
|
eval $CHILD2_1_SELECT_TABLES;
|
||||||
--enable_ps_protocol
|
--enable_ps_protocol
|
||||||
|
--enable_view_protocol
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo deinit
|
--echo deinit
|
||||||
|
@@ -85,10 +85,10 @@ SET NAMES utf8;
|
|||||||
--disable_ps2_protocol
|
--disable_ps2_protocol
|
||||||
eval $CHILD2_1_SELECT_ARGUMENT1;
|
eval $CHILD2_1_SELECT_ARGUMENT1;
|
||||||
--enable_ps2_protocol
|
--enable_ps2_protocol
|
||||||
--enable_view_protocol
|
|
||||||
--disable_ps_protocol
|
--disable_ps_protocol
|
||||||
eval $CHILD2_1_SELECT_TABLES;
|
eval $CHILD2_1_SELECT_TABLES;
|
||||||
--enable_ps_protocol
|
--enable_ps_protocol
|
||||||
|
--enable_view_protocol
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo deinit
|
--echo deinit
|
||||||
|
@@ -4,7 +4,9 @@ FLUSH TABLES WITH READ LOCK;
|
|||||||
|
|
||||||
--error ER_CANT_UPDATE_WITH_READLOCK
|
--error ER_CANT_UPDATE_WITH_READLOCK
|
||||||
CREATE FUNCTION spider_bg_direct_sql RETURNS INT SONAME 'ha_spider.so';
|
CREATE FUNCTION spider_bg_direct_sql RETURNS INT SONAME 'ha_spider.so';
|
||||||
|
--disable_view_protocol
|
||||||
SELECT * FROM t;
|
SELECT * FROM t;
|
||||||
|
--enable_view_protocol
|
||||||
|
|
||||||
--source include/restart_mysqld.inc
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
@@ -4,8 +4,10 @@
|
|||||||
|
|
||||||
INSTALL SONAME 'ha_spider';
|
INSTALL SONAME 'ha_spider';
|
||||||
SET character_set_connection=ucs2;
|
SET character_set_connection=ucs2;
|
||||||
|
--disable_view_protocol
|
||||||
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
||||||
SELECT SPIDER_DIRECT_SQL('SELECT SLEEP(1)', '', 'srv "dummy", port "3307"');
|
SELECT SPIDER_DIRECT_SQL('SELECT SLEEP(1)', '', 'srv "dummy", port "3307"');
|
||||||
|
--enable_view_protocol
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
--source ../../include/clean_up_spider.inc
|
--source ../../include/clean_up_spider.inc
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
@@ -9,6 +9,7 @@ OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE '',user 'Spider', password 'foo');
|
|||||||
CREATE TABLE tSpider (a INT) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"';
|
CREATE TABLE tSpider (a INT) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"';
|
||||||
CREATE TABLE t2 (c INT,c2 CHAR(1)) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"';
|
CREATE TABLE t2 (c INT,c2 CHAR(1)) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"';
|
||||||
XA START 'a';
|
XA START 'a';
|
||||||
|
--disable_view_protocol
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
--error 0,ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
--error 0,ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
||||||
SELECT * FROM information_schema.table_constraints;
|
SELECT * FROM information_schema.table_constraints;
|
||||||
@@ -22,6 +23,7 @@ SELECT * FROM t2;
|
|||||||
SELECT SLEEP (1);
|
SELECT SLEEP (1);
|
||||||
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
||||||
SELECT * FROM t2;
|
SELECT * FROM t2;
|
||||||
|
--enable_view_protocol
|
||||||
xa end 'a';
|
xa end 'a';
|
||||||
xa rollback 'a';
|
xa rollback 'a';
|
||||||
drop table tSpider, t2;
|
drop table tSpider, t2;
|
||||||
|
@@ -7,8 +7,10 @@ enable_query_log;
|
|||||||
--echo # MDEV-33031 Assertion failure upon reading from performance schema with binlog enabled
|
--echo # MDEV-33031 Assertion failure upon reading from performance schema with binlog enabled
|
||||||
--echo #
|
--echo #
|
||||||
connect foo,localhost,root;
|
connect foo,localhost,root;
|
||||||
|
--disable_view_protocol
|
||||||
select variable_name, variable_value from performance_schema.status_by_thread
|
select variable_name, variable_value from performance_schema.status_by_thread
|
||||||
where variable_name like '%spider_direct_aggregate%';
|
where variable_name like '%spider_direct_aggregate%';
|
||||||
|
--enable_view_protocol
|
||||||
disconnect foo;
|
disconnect foo;
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
|
@@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s')
|
|||||||
4 i 2003-10-30 05:01:03
|
4 i 2003-10-30 05:01:03
|
||||||
5 h 2001-10-31 23:59:59
|
5 h 2001-10-31 23:59:59
|
||||||
|
|
||||||
select sql_calc_found_rows
|
|
||||||
connection master_1;
|
|
||||||
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
|
||||||
ORDER BY a LIMIT 4;
|
|
||||||
a b date_format(c, '%Y-%m-%d %H:%i:%s')
|
|
||||||
1 f 2008-07-01 10:21:39
|
|
||||||
2 g 2000-02-01 00:00:00
|
|
||||||
3 j 2007-05-04 20:03:11
|
|
||||||
4 i 2003-10-30 05:01:03
|
|
||||||
connection master_1;
|
|
||||||
SELECT found_rows();
|
|
||||||
found_rows()
|
|
||||||
5
|
|
||||||
|
|
||||||
select high_priority
|
select high_priority
|
||||||
connection master_1;
|
connection master_1;
|
||||||
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
||||||
|
@@ -60,6 +60,7 @@ INSERT INTO tbl_b (bkey,akey) VALUES (0,0),(1,1),(2,2),(3,3),(4,4),(5,4),(6,3),(
|
|||||||
--connection child2_1
|
--connection child2_1
|
||||||
TRUNCATE TABLE mysql.general_log;
|
TRUNCATE TABLE mysql.general_log;
|
||||||
|
|
||||||
|
--disable_view_protocol
|
||||||
--connection master_1
|
--connection master_1
|
||||||
--disable_ps2_protocol
|
--disable_ps2_protocol
|
||||||
SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5;
|
SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5;
|
||||||
@@ -67,11 +68,10 @@ SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5;
|
|||||||
|
|
||||||
--connection child2_1
|
--connection child2_1
|
||||||
--disable_ps_protocol
|
--disable_ps_protocol
|
||||||
--disable_view_protocol
|
|
||||||
eval $CHILD2_1_SELECT_ARGUMENT1;
|
eval $CHILD2_1_SELECT_ARGUMENT1;
|
||||||
--enable_view_protocol
|
|
||||||
eval $CHILD2_1_SELECT_TABLES;
|
eval $CHILD2_1_SELECT_TABLES;
|
||||||
--enable_ps_protocol
|
--enable_ps_protocol
|
||||||
|
--enable_view_protocol
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo deinit
|
--echo deinit
|
||||||
|
@@ -69,8 +69,8 @@ SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5;
|
|||||||
--disable_ps_protocol
|
--disable_ps_protocol
|
||||||
--disable_view_protocol
|
--disable_view_protocol
|
||||||
eval $CHILD2_1_SELECT_ARGUMENT1;
|
eval $CHILD2_1_SELECT_ARGUMENT1;
|
||||||
--enable_view_protocol
|
|
||||||
eval $CHILD2_1_SELECT_TABLES;
|
eval $CHILD2_1_SELECT_TABLES;
|
||||||
|
--enable_view_protocol
|
||||||
--enable_ps_protocol
|
--enable_ps_protocol
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
|
@@ -847,52 +847,6 @@ if ($USE_CHILD_GROUP2)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo select sql_calc_found_rows
|
|
||||||
if ($USE_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--disable_query_log
|
|
||||||
--disable_result_log
|
|
||||||
}
|
|
||||||
--connection child2_1
|
|
||||||
if ($USE_GENERAL_LOG)
|
|
||||||
{
|
|
||||||
TRUNCATE TABLE mysql.general_log;
|
|
||||||
}
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--enable_query_log
|
|
||||||
--enable_result_log
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--connection master_1
|
|
||||||
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
|
|
||||||
ORDER BY a LIMIT 4;
|
|
||||||
if ($USE_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--disable_query_log
|
|
||||||
--disable_result_log
|
|
||||||
}
|
|
||||||
--connection child2_1
|
|
||||||
if ($USE_GENERAL_LOG)
|
|
||||||
{
|
|
||||||
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
|
|
||||||
}
|
|
||||||
if (!$OUTPUT_CHILD_GROUP2)
|
|
||||||
{
|
|
||||||
--enable_query_log
|
|
||||||
--enable_result_log
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--connection master_1
|
|
||||||
--disable_ps2_protocol
|
|
||||||
SELECT found_rows();
|
|
||||||
--enable_ps2_protocol
|
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo select high_priority
|
--echo select high_priority
|
||||||
if ($USE_CHILD_GROUP2)
|
if ($USE_CHILD_GROUP2)
|
||||||
|
@@ -9329,6 +9329,7 @@ error:
|
|||||||
DBUG_RETURN(error_num);
|
DBUG_RETURN(error_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
bool spider_db_conn_is_network_error(
|
bool spider_db_conn_is_network_error(
|
||||||
int error_num
|
int error_num
|
||||||
) {
|
) {
|
||||||
@@ -9345,3 +9346,4 @@ bool spider_db_conn_is_network_error(
|
|||||||
}
|
}
|
||||||
DBUG_RETURN(FALSE);
|
DBUG_RETURN(FALSE);
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
@@ -8897,12 +8897,13 @@ int spider_mbase_handler::append_key_select_part(
|
|||||||
default:
|
default:
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
error_num = append_key_select(str, idx);
|
error_num = append_key_select(str, sql_type, idx);
|
||||||
DBUG_RETURN(error_num);
|
DBUG_RETURN(error_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spider_mbase_handler::append_key_select(
|
int spider_mbase_handler::append_key_select(
|
||||||
spider_string *str,
|
spider_string *str,
|
||||||
|
ulong sql_type,
|
||||||
uint idx
|
uint idx
|
||||||
) {
|
) {
|
||||||
st_select_lex *select_lex = NULL;
|
st_select_lex *select_lex = NULL;
|
||||||
@@ -8951,6 +8952,7 @@ int spider_mbase_handler::append_key_select(
|
|||||||
str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN);
|
str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN);
|
||||||
}
|
}
|
||||||
str->length(str->length() - SPIDER_SQL_COMMA_LEN);
|
str->length(str->length() - SPIDER_SQL_COMMA_LEN);
|
||||||
|
DBUG_RETURN(append_from(str, sql_type, first_link_idx));
|
||||||
} else {
|
} else {
|
||||||
table_name_pos = str->length() + mysql_share->key_select_pos[idx];
|
table_name_pos = str->length() + mysql_share->key_select_pos[idx];
|
||||||
if (str->append(mysql_share->key_select[idx]))
|
if (str->append(mysql_share->key_select[idx]))
|
||||||
|
@@ -877,6 +877,7 @@ public:
|
|||||||
) override;
|
) override;
|
||||||
int append_key_select(
|
int append_key_select(
|
||||||
spider_string *str,
|
spider_string *str,
|
||||||
|
ulong sql_type,
|
||||||
uint idx
|
uint idx
|
||||||
);
|
);
|
||||||
int append_minimum_select_part(
|
int append_minimum_select_part(
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
#include "m_ctype.h"
|
#include "m_ctype.h"
|
||||||
#include "ctype-uca.h"
|
#include "ctype-uca.h"
|
||||||
|
|
||||||
|
PRAGMA_DISABLE_CHECK_STACK_FRAME
|
||||||
#define MAX_ALLOWED_CODE 0x10FFFF
|
#define MAX_ALLOWED_CODE 0x10FFFF
|
||||||
|
|
||||||
|
|
||||||
@@ -398,7 +398,7 @@ static const char *pname_prefix[]= {"_p", "_p", "_p"};
|
|||||||
static const char *pname_suffix[]= {"", "_secondary", "_tertiary"};
|
static const char *pname_suffix[]= {"", "_secondary", "_tertiary"};
|
||||||
|
|
||||||
|
|
||||||
void usage(const char *prog)
|
static void usage(const char *prog)
|
||||||
{
|
{
|
||||||
printf("Usage:\n");
|
printf("Usage:\n");
|
||||||
printf("%s [options] filename\n", prog);
|
printf("%s [options] filename\n", prog);
|
||||||
@@ -411,7 +411,7 @@ static inline int lstrncmp(const char *str, const LEX_CSTRING lstr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int process_option(OPT *options, const char *opt)
|
static int process_option(OPT *options, const char *opt)
|
||||||
{
|
{
|
||||||
static const LEX_CSTRING opt_name_prefix= {STRING_WITH_LEN("--name-prefix=")};
|
static const LEX_CSTRING opt_name_prefix= {STRING_WITH_LEN("--name-prefix=")};
|
||||||
static const LEX_CSTRING opt_levels= {STRING_WITH_LEN("--levels=")};
|
static const LEX_CSTRING opt_levels= {STRING_WITH_LEN("--levels=")};
|
||||||
@@ -458,7 +458,7 @@ int process_option(OPT *options, const char *opt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int process_options(OPT *options, int ac, char **av)
|
static int process_options(OPT *options, int ac, char **av)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i= 1; i < ac; i++)
|
for (i= 1; i < ac; i++)
|
||||||
@@ -484,7 +484,7 @@ int process_options(OPT *options, int ac, char **av)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FILE *open_file(const char *name)
|
static FILE *open_file(const char *name)
|
||||||
{
|
{
|
||||||
if (!strcmp(name, "-"))
|
if (!strcmp(name, "-"))
|
||||||
return stdin;
|
return stdin;
|
||||||
@@ -492,14 +492,14 @@ FILE *open_file(const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void close_file(FILE *file)
|
static void close_file(FILE *file)
|
||||||
{
|
{
|
||||||
if (file != stdin)
|
if (file != stdin)
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char *strrtrim(char *str)
|
static char *strrtrim(char *str)
|
||||||
{
|
{
|
||||||
char *end= str + strlen(str);
|
char *end= str + strlen(str);
|
||||||
for ( ; str < end; end--)
|
for ( ; str < end; end--)
|
||||||
@@ -524,7 +524,7 @@ char *strrtrim(char *str)
|
|||||||
of them at the moment, it was easier to write these routines in ctype-uca.h
|
of them at the moment, it was easier to write these routines in ctype-uca.h
|
||||||
manually. So @implicitweights lines are ignored here.
|
manually. So @implicitweights lines are ignored here.
|
||||||
*/
|
*/
|
||||||
my_bool parse_at_line(MY_DUCET *ducet, const char *str)
|
static my_bool parse_at_line(MY_DUCET *ducet, const char *str)
|
||||||
{
|
{
|
||||||
static const LEX_CSTRING version= {STRING_WITH_LEN("@version ")};
|
static const LEX_CSTRING version= {STRING_WITH_LEN("@version ")};
|
||||||
if (!lstrncmp(str, version))
|
if (!lstrncmp(str, version))
|
||||||
@@ -994,3 +994,4 @@ int main(int ac, char **av)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
PRAGMA_REENABLE_CHECK_STACK_FRAME
|
||||||
|
Reference in New Issue
Block a user