mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge 10.6 into 10.7
This commit is contained in:
@@ -604,7 +604,7 @@ void CorruptedPages::zero_out_free_pages()
|
|||||||
die("Can't zero out corrupted page " UINT32PF " of tablespace %s",
|
die("Can't zero out corrupted page " UINT32PF " of tablespace %s",
|
||||||
*page_it, space_name.c_str());
|
*page_it, space_name.c_str());
|
||||||
msg("Corrupted page " UINT32PF
|
msg("Corrupted page " UINT32PF
|
||||||
" of tablespace %s was successfuly fixed.",
|
" of tablespace %s was successfully fixed.",
|
||||||
*page_it, space_name.c_str());
|
*page_it, space_name.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1508,7 +1508,7 @@ select column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int);
|
|||||||
column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int)
|
column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int)
|
||||||
NULL
|
NULL
|
||||||
set names latin1;
|
set names latin1;
|
||||||
# column existance test (names)
|
# column existence test (names)
|
||||||
set names utf8;
|
set names utf8;
|
||||||
select column_exists(column_create("адын", 1212), "адын");
|
select column_exists(column_create("адын", 1212), "адын");
|
||||||
column_exists(column_create("адын", 1212), "адын")
|
column_exists(column_create("адын", 1212), "адын")
|
||||||
|
@@ -689,7 +689,7 @@ select column_get(column_create("1212", 2, "адын", 1, 3, 3), 4 as int);
|
|||||||
select column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int);
|
select column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int);
|
||||||
set names latin1;
|
set names latin1;
|
||||||
|
|
||||||
--echo # column existance test (names)
|
--echo # column existence test (names)
|
||||||
set names utf8;
|
set names utf8;
|
||||||
select column_exists(column_create("адын", 1212), "адын");
|
select column_exists(column_create("адын", 1212), "адын");
|
||||||
select column_exists(column_create("адын", 1212), "aады");
|
select column_exists(column_create("адын", 1212), "aады");
|
||||||
|
@@ -4057,9 +4057,10 @@ KEY `index_t1_on_owner_id_and_foo` (`owner_id`,`foo`)
|
|||||||
INSERT INTO t1 (owner_id, foo, whatever)
|
INSERT INTO t1 (owner_id, foo, whatever)
|
||||||
VALUES (1, TRUE, "yello"), (1, FALSE, "yello"), (2, TRUE, "yello"),
|
VALUES (1, TRUE, "yello"), (1, FALSE, "yello"), (2, TRUE, "yello"),
|
||||||
(2, TRUE, "yello"), (2, FALSE, "yello");
|
(2, TRUE, "yello"), (2, FALSE, "yello");
|
||||||
EXPLAIN SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
EXPLAIN
|
||||||
|
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index NULL index_t1_on_owner_id_and_foo 7 NULL 5 Using where; Using index
|
1 SIMPLE t1 index NULL index_t1_on_owner_id_and_foo 7 NULL # Using where; Using index
|
||||||
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
||||||
owner_id
|
owner_id
|
||||||
1
|
1
|
||||||
|
@@ -1718,7 +1718,9 @@ CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (owner_id, foo, whatever)
|
INSERT INTO t1 (owner_id, foo, whatever)
|
||||||
VALUES (1, TRUE, "yello"), (1, FALSE, "yello"), (2, TRUE, "yello"),
|
VALUES (1, TRUE, "yello"), (1, FALSE, "yello"), (2, TRUE, "yello"),
|
||||||
(2, TRUE, "yello"), (2, FALSE, "yello");
|
(2, TRUE, "yello"), (2, FALSE, "yello");
|
||||||
EXPLAIN SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
--replace_column 9 #
|
||||||
|
EXPLAIN
|
||||||
|
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
||||||
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@@ -84,7 +84,7 @@ drop table t1;
|
|||||||
db.opt
|
db.opt
|
||||||
t0.ARZ
|
t0.ARZ
|
||||||
#
|
#
|
||||||
# discover of table non-existance on drop
|
# discover of table non-existence on drop
|
||||||
#
|
#
|
||||||
select * from t0;
|
select * from t0;
|
||||||
a
|
a
|
||||||
|
@@ -67,7 +67,7 @@ drop table t1;
|
|||||||
--list_files $mysqld_datadir/test
|
--list_files $mysqld_datadir/test
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # discover of table non-existance on drop
|
--echo # discover of table non-existence on drop
|
||||||
--echo #
|
--echo #
|
||||||
select * from t0;
|
select * from t0;
|
||||||
remove_file $mysqld_datadir/test/t0.ARZ;
|
remove_file $mysqld_datadir/test/t0.ARZ;
|
||||||
@@ -119,7 +119,7 @@ select * from t1;
|
|||||||
--list_files $mysqld_datadir/test
|
--list_files $mysqld_datadir/test
|
||||||
|
|
||||||
#
|
#
|
||||||
# MDEV-4955 discover of table non-existance on CREATE
|
# MDEV-4955 discover of table non-existence on CREATE
|
||||||
#
|
#
|
||||||
create table t1 (a int) engine=archive;
|
create table t1 (a int) engine=archive;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
@@ -58,10 +58,13 @@ CREATE TABLE t(c INT) ENGINE=InnoDB page_compressed=1;
|
|||||||
DROP TABLE IF EXISTS t;
|
DROP TABLE IF EXISTS t;
|
||||||
SET GLOBAL innodb_compression_level=1;
|
SET GLOBAL innodb_compression_level=1;
|
||||||
CREATE TABLE t(a INT)ENGINE=InnoDB ROW_FORMAT=DYNAMIC page_compressed=1;
|
CREATE TABLE t(a INT)ENGINE=InnoDB ROW_FORMAT=DYNAMIC page_compressed=1;
|
||||||
|
CREATE TEMPORARY TABLE tt(a INT PRIMARY KEY)
|
||||||
|
ROW_FORMAT=DYNAMIC page_compressed=1 ENGINE=InnoDB;
|
||||||
SET GLOBAL innodb_compression_level=0;
|
SET GLOBAL innodb_compression_level=0;
|
||||||
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=INPLACE;
|
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=INPLACE;
|
||||||
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'PAGE_COMPRESSED'
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'PAGE_COMPRESSED'
|
||||||
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=COPY;
|
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=COPY;
|
||||||
ERROR HY000: Can't create table `test`.`t` (errno: 140 "Wrong create options")
|
ERROR HY000: Can't create table `test`.`t` (errno: 140 "Wrong create options")
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
TRUNCATE tt;
|
||||||
SET GLOBAL innodb_compression_level=@save_level;
|
SET GLOBAL innodb_compression_level=@save_level;
|
||||||
|
@@ -69,10 +69,13 @@ DROP TABLE IF EXISTS t;
|
|||||||
|
|
||||||
SET GLOBAL innodb_compression_level=1;
|
SET GLOBAL innodb_compression_level=1;
|
||||||
CREATE TABLE t(a INT)ENGINE=InnoDB ROW_FORMAT=DYNAMIC page_compressed=1;
|
CREATE TABLE t(a INT)ENGINE=InnoDB ROW_FORMAT=DYNAMIC page_compressed=1;
|
||||||
|
CREATE TEMPORARY TABLE tt(a INT PRIMARY KEY)
|
||||||
|
ROW_FORMAT=DYNAMIC page_compressed=1 ENGINE=InnoDB;
|
||||||
SET GLOBAL innodb_compression_level=0;
|
SET GLOBAL innodb_compression_level=0;
|
||||||
--error ER_ILLEGAL_HA_CREATE_OPTION
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=INPLACE;
|
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=INPLACE;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=COPY;
|
ALTER TABLE t FORCE, ROW_FORMAT=DEFAULT, ALGORITHM=COPY;
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
TRUNCATE tt;
|
||||||
SET GLOBAL innodb_compression_level=@save_level;
|
SET GLOBAL innodb_compression_level=@save_level;
|
||||||
|
@@ -98,12 +98,12 @@ test/t3_inc
|
|||||||
------
|
------
|
||||||
# Full backup prepare
|
# Full backup prepare
|
||||||
# "innodb_corrupted_pages" file must not exist after successful prepare
|
# "innodb_corrupted_pages" file must not exist after successful prepare
|
||||||
FOUND 1 /was successfuly fixed.*/ in backup.log
|
FOUND 1 /was successfully fixed.*/ in backup.log
|
||||||
# Check that fixed pages are zero-filled
|
# Check that fixed pages are zero-filled
|
||||||
# Incremental backup prepare
|
# Incremental backup prepare
|
||||||
# "innodb_corrupted_pages" file must not exist after successful prepare
|
# "innodb_corrupted_pages" file must not exist after successful prepare
|
||||||
# do not remove "innodb_corrupted_pages" in incremental dir
|
# do not remove "innodb_corrupted_pages" in incremental dir
|
||||||
FOUND 1 /was successfuly fixed.*/ in backup.log
|
FOUND 1 /was successfully fixed.*/ in backup.log
|
||||||
# Check that fixed pages are zero-filled
|
# Check that fixed pages are zero-filled
|
||||||
# shutdown server
|
# shutdown server
|
||||||
# remove datadir
|
# remove datadir
|
||||||
|
@@ -323,7 +323,7 @@ exec $XTRABACKUP --prepare --target-dir=$targetdir > $backuplog;
|
|||||||
--echo # "innodb_corrupted_pages" file must not exist after successful prepare
|
--echo # "innodb_corrupted_pages" file must not exist after successful prepare
|
||||||
--error 1
|
--error 1
|
||||||
--file_exists $targetdir/innodb_corrupted_pages
|
--file_exists $targetdir/innodb_corrupted_pages
|
||||||
--let SEARCH_PATTERN=was successfuly fixed.*
|
--let SEARCH_PATTERN=was successfully fixed.*
|
||||||
--let SEARCH_FILE=$backuplog
|
--let SEARCH_FILE=$backuplog
|
||||||
--source include/search_pattern_in_file.inc
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
@@ -347,7 +347,7 @@ exec $XTRABACKUP --prepare --target-dir=$targetdir --incremental-dir=$incdir > $
|
|||||||
--file_exists $targetdir/innodb_corrupted_pages
|
--file_exists $targetdir/innodb_corrupted_pages
|
||||||
--echo # do not remove "innodb_corrupted_pages" in incremental dir
|
--echo # do not remove "innodb_corrupted_pages" in incremental dir
|
||||||
--file_exists $incdir/innodb_corrupted_pages
|
--file_exists $incdir/innodb_corrupted_pages
|
||||||
--let SEARCH_PATTERN=was successfuly fixed.*
|
--let SEARCH_PATTERN=was successfully fixed.*
|
||||||
--let SEARCH_FILE=$backuplog
|
--let SEARCH_FILE=$backuplog
|
||||||
--source include/search_pattern_in_file.inc
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
|
@@ -5367,9 +5367,9 @@ name, then 'TEMPORARY' will be returned.
|
|||||||
|
|
||||||
##### Parameters
|
##### Parameters
|
||||||
|
|
||||||
* in_db (VARCHAR(64)): The database name to check for the existance of the table in.
|
* in_db (VARCHAR(64)): The database name to check for the existence of the table in.
|
||||||
|
|
||||||
* in_table (VARCHAR(64)): The name of the table to check the existance of.
|
* in_table (VARCHAR(64)): The name of the table to check the existence of.
|
||||||
|
|
||||||
* out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY'): The return value: whether the table exists. The value is one of:
|
* out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY'): The return value: whether the table exists. The value is one of:
|
||||||
- '' - the table does not exist neither as a base table, view, nor temporary table.
|
- '' - the table does not exist neither as a base table, view, nor temporary table.
|
||||||
|
@@ -34,10 +34,10 @@ CREATE DEFINER='mariadb.sys'@'localhost' PROCEDURE table_exists (
|
|||||||
-----------
|
-----------
|
||||||
|
|
||||||
in_db (VARCHAR(64)):
|
in_db (VARCHAR(64)):
|
||||||
The database name to check for the existance of the table in.
|
The database name to check for the existence of the table in.
|
||||||
|
|
||||||
in_table (VARCHAR(64)):
|
in_table (VARCHAR(64)):
|
||||||
The name of the table to check the existance of.
|
The name of the table to check the existence of.
|
||||||
|
|
||||||
out_exists ENUM('''', ''BASE TABLE'', ''VIEW'', ''TEMPORARY''):
|
out_exists ENUM('''', ''BASE TABLE'', ''VIEW'', ''TEMPORARY''):
|
||||||
The return value: whether the table exists. The value is one of:
|
The return value: whether the table exists. The value is one of:
|
||||||
|
@@ -183,7 +183,7 @@ public:
|
|||||||
|
|
||||||
bool listen_on_sockets()
|
bool listen_on_sockets()
|
||||||
{
|
{
|
||||||
/* Reinitialze the fds with active fds before calling select */
|
/* Reinitialize the fds with active fds before calling select */
|
||||||
m_fds= m_init_fds;
|
m_fds= m_init_fds;
|
||||||
struct timeval tv= {1,0};
|
struct timeval tv= {1,0};
|
||||||
/* select requires max fd + 1 for the first argument */
|
/* select requires max fd + 1 for the first argument */
|
||||||
|
@@ -4457,7 +4457,7 @@ int create_table_impl(THD *thd,
|
|||||||
else if (options.if_not_exists())
|
else if (options.if_not_exists())
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
We never come here as part of normal create table as table existance
|
We never come here as part of normal create table as table existence
|
||||||
is checked in open_and_lock_tables(). We may come here as part of
|
is checked in open_and_lock_tables(). We may come here as part of
|
||||||
ALTER TABLE when converting a table for a distributed engine to a
|
ALTER TABLE when converting a table for a distributed engine to a
|
||||||
a local one.
|
a local one.
|
||||||
|
@@ -11760,13 +11760,16 @@ index_bad:
|
|||||||
zip_ssize = 0;
|
zip_ssize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ulint level = 0;
|
||||||
|
|
||||||
if (is_temp) {
|
if (is_temp) {
|
||||||
m_flags2 |= DICT_TF2_TEMPORARY;
|
m_flags2 |= DICT_TF2_TEMPORARY;
|
||||||
} else if (m_use_file_per_table) {
|
} else {
|
||||||
|
if (m_use_file_per_table) {
|
||||||
m_flags2 |= DICT_TF2_USE_FILE_PER_TABLE;
|
m_flags2 |= DICT_TF2_USE_FILE_PER_TABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ulint level = ulint(options->page_compression_level);
|
level = ulint(options->page_compression_level);
|
||||||
if (!level) {
|
if (!level) {
|
||||||
level = page_zip_level;
|
level = page_zip_level;
|
||||||
if (!level && options->page_compressed) {
|
if (!level && options->page_compressed) {
|
||||||
@@ -11779,10 +11782,11 @@ index_bad:
|
|||||||
DBUG_RETURN(false);
|
DBUG_RETURN(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the table flags */
|
/* Set the table flags */
|
||||||
dict_tf_set(&m_flags, innodb_row_format, zip_ssize,
|
dict_tf_set(&m_flags, innodb_row_format, zip_ssize,
|
||||||
m_use_data_dir, options->page_compressed, level);
|
m_use_data_dir, level && options->page_compressed, level);
|
||||||
|
|
||||||
if (m_form->s->table_type == TABLE_TYPE_SEQUENCE) {
|
if (m_form->s->table_type == TABLE_TYPE_SEQUENCE) {
|
||||||
m_flags |= DICT_TF_MASK_NO_ROLLBACK;
|
m_flags |= DICT_TF_MASK_NO_ROLLBACK;
|
||||||
@@ -13840,6 +13844,7 @@ int ha_innobase::truncate()
|
|||||||
|
|
||||||
int err = create(ib_table->name.m_name, table, &info, true,
|
int err = create(ib_table->name.m_name, table, &info, true,
|
||||||
trx);
|
trx);
|
||||||
|
ut_ad(!err);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
err = open(ib_table->name.m_name, 0, 0);
|
err = open(ib_table->name.m_name, 0, 0);
|
||||||
m_prebuilt->stored_select_lock_type = stored_lock;
|
m_prebuilt->stored_select_lock_type = stored_lock;
|
||||||
|
@@ -789,13 +789,13 @@ static int s3_discover_table(handlerton *hton, THD* thd, TABLE_SHARE *share)
|
|||||||
@return 1 frm exists
|
@return 1 frm exists
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int s3_discover_table_existance(handlerton *hton, const char *db,
|
static int s3_discover_table_existence(handlerton *hton, const char *db,
|
||||||
const char *table_name)
|
const char *table_name)
|
||||||
{
|
{
|
||||||
S3_INFO s3_info;
|
S3_INFO s3_info;
|
||||||
ms3_st *s3_client;
|
ms3_st *s3_client;
|
||||||
int res;
|
int res;
|
||||||
DBUG_ENTER("s3_discover_table_existance");
|
DBUG_ENTER("s3_discover_table_existence");
|
||||||
|
|
||||||
/* Ignore names in "mysql" database to speed up boot */
|
/* Ignore names in "mysql" database to speed up boot */
|
||||||
if (!strcmp(db, MYSQL_SCHEMA_NAME.str))
|
if (!strcmp(db, MYSQL_SCHEMA_NAME.str))
|
||||||
@@ -1019,7 +1019,7 @@ static int ha_s3_init(void *p)
|
|||||||
s3_hton->table_options= s3_table_option_list;
|
s3_hton->table_options= s3_table_option_list;
|
||||||
s3_hton->discover_table= s3_discover_table;
|
s3_hton->discover_table= s3_discover_table;
|
||||||
s3_hton->discover_table_names= s3_discover_table_names;
|
s3_hton->discover_table_names= s3_discover_table_names;
|
||||||
s3_hton->discover_table_existence= s3_discover_table_existance;
|
s3_hton->discover_table_existence= s3_discover_table_existence;
|
||||||
s3_hton->notify_tabledef_changed= s3_notify_tabledef_changed;
|
s3_hton->notify_tabledef_changed= s3_notify_tabledef_changed;
|
||||||
s3_hton->create_partitioning_metadata= s3_create_partitioning_metadata;
|
s3_hton->create_partitioning_metadata= s3_create_partitioning_metadata;
|
||||||
s3_hton->tablefile_extensions= no_exts;
|
s3_hton->tablefile_extensions= no_exts;
|
||||||
|
Reference in New Issue
Block a user