Merge 10.1 into 10.2
This commit is contained in:
commit
89f948c766
@ -20,7 +20,7 @@
|
|||||||
Tool used for executing a .test file
|
Tool used for executing a .test file
|
||||||
|
|
||||||
See the "MySQL Test framework manual" for more information
|
See the "MySQL Test framework manual" for more information
|
||||||
http://dev.mysql.com/doc/mysqltest/en/index.html
|
https://mariadb.com/kb/en/library/mysqltest/
|
||||||
|
|
||||||
Please keep the test framework tools identical in all versions!
|
Please keep the test framework tools identical in all versions!
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
# Tool used for executing a suite of .test file
|
# Tool used for executing a suite of .test file
|
||||||
#
|
#
|
||||||
# See the "MySQL Test framework manual" for more information
|
# See the "MySQL Test framework manual" for more information
|
||||||
# http://dev.mysql.com/doc/mysqltest/en/index.html
|
# https://mariadb.com/kb/en/library/mysqltest/
|
||||||
#
|
#
|
||||||
# Please keep the test framework tools identical in all versions!
|
# Please keep the test framework tools identical in all versions!
|
||||||
#
|
#
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
# Tool used for executing a suite of .test files
|
# Tool used for executing a suite of .test files
|
||||||
#
|
#
|
||||||
# See the "MySQL Test framework manual" for more information
|
# See the "MySQL Test framework manual" for more information
|
||||||
# http://dev.mysql.com/doc/mysqltest/en/index.html
|
# https://mariadb.com/kb/en/library/mysqltest/
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
@ -264,3 +264,17 @@ delete from t1 where a=32767;
|
|||||||
insert into t1 values(NULL);
|
insert into t1 values(NULL);
|
||||||
ERROR 22003: Out of range value for column 'a' at row 1
|
ERROR 22003: Out of range value for column 'a' at row 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (pk int auto_increment primary key, f varchar(20));
|
||||||
|
insert t1 (f) values ('a'), ('b'), ('c'), ('d');
|
||||||
|
select null, f into outfile 'load.data' from t1 limit 1;
|
||||||
|
load data infile 'load.data' into table t1;
|
||||||
|
insert t1 (f) values ('<===');
|
||||||
|
select * from t1;
|
||||||
|
pk f
|
||||||
|
1 a
|
||||||
|
2 b
|
||||||
|
3 c
|
||||||
|
4 d
|
||||||
|
5 a
|
||||||
|
6 <===
|
||||||
|
drop table t1;
|
||||||
|
@ -48,3 +48,40 @@ Warning 140 InnoDB: ENCRYPTION_KEY_ID 99 not available
|
|||||||
Error 1478 Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
Error 1478 Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
||||||
set innodb_default_encryption_key_id = 1;
|
set innodb_default_encryption_key_id = 1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
SET GLOBAL innodb_encrypt_tables=OFF;
|
||||||
|
CREATE TABLE t1 (a int not null primary key) engine=innodb;
|
||||||
|
ALTER TABLE t1 ENCRYPTION_KEY_ID=4;
|
||||||
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 140 InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1
|
||||||
|
Error 1478 Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t2 (a int not null primary key) engine=innodb;
|
||||||
|
ALTER TABLE t2 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY;
|
||||||
|
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 140 InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1
|
||||||
|
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
||||||
|
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`a` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t3 (a int not null primary key) engine=innodb ENCRYPTION_KEY_ID=4;
|
||||||
|
ERROR HY000: Can't create table `test`.`t3` (errno: 140 "Wrong create options")
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 140 InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1
|
||||||
|
Error 1005 Can't create table `test`.`t3` (errno: 140 "Wrong create options")
|
||||||
|
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
|
||||||
|
@ -81,6 +81,30 @@ connection default;
|
|||||||
|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-17230: encryption_key_id from alter is ignored by encryption threads
|
||||||
|
#
|
||||||
|
SET GLOBAL innodb_encrypt_tables=OFF;
|
||||||
|
CREATE TABLE t1 (a int not null primary key) engine=innodb;
|
||||||
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
|
ALTER TABLE t1 ENCRYPTION_KEY_ID=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t2 (a int not null primary key) engine=innodb;
|
||||||
|
--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t2 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY;
|
||||||
|
--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t3 (a int not null primary key) engine=innodb ENCRYPTION_KEY_ID=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
|
||||||
# reset system
|
# reset system
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
EVAL SET GLOBAL innodb_encrypt_tables = $encrypt_tables;
|
EVAL SET GLOBAL innodb_encrypt_tables = $encrypt_tables;
|
||||||
|
@ -5,3 +5,16 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
set default_storage_engine=innodb;
|
set default_storage_engine=innodb;
|
||||||
--source auto_increment_ranges.inc
|
--source auto_increment_ranges.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-17377 invalid gap in auto-increment values after LOAD DATA
|
||||||
|
#
|
||||||
|
create table t1 (pk int auto_increment primary key, f varchar(20));
|
||||||
|
insert t1 (f) values ('a'), ('b'), ('c'), ('d');
|
||||||
|
select null, f into outfile 'load.data' from t1 limit 1;
|
||||||
|
load data infile 'load.data' into table t1;
|
||||||
|
insert t1 (f) values ('<===');
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
--let $datadir=`select @@datadir`
|
||||||
|
--remove_file $datadir/test/load.data
|
||||||
|
@ -296,6 +296,10 @@ int init_io_cache(IO_CACHE *info, File file, size_t cachesize,
|
|||||||
}
|
}
|
||||||
info->inited=info->aio_result.pending=0;
|
info->inited=info->aio_result.pending=0;
|
||||||
#endif
|
#endif
|
||||||
|
if (type == READ_CACHE || type == WRITE_CACHE || type == SEQ_READ_APPEND)
|
||||||
|
info->myflags|= MY_FULL_IO;
|
||||||
|
else
|
||||||
|
info->myflags&= ~MY_FULL_IO;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
} /* init_io_cache */
|
} /* init_io_cache */
|
||||||
|
|
||||||
|
@ -47,8 +47,7 @@
|
|||||||
size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset,
|
size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset,
|
||||||
myf MyFlags)
|
myf MyFlags)
|
||||||
{
|
{
|
||||||
size_t readbytes;
|
size_t readbytes, save_count= 0;
|
||||||
int error= 0;
|
|
||||||
|
|
||||||
DBUG_ENTER("my_pread");
|
DBUG_ENTER("my_pread");
|
||||||
|
|
||||||
@ -66,11 +65,10 @@ size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset,
|
|||||||
#else
|
#else
|
||||||
readbytes= pread(Filedes, Buffer, Count, offset);
|
readbytes= pread(Filedes, Buffer, Count, offset);
|
||||||
#endif
|
#endif
|
||||||
error = (readbytes != Count);
|
|
||||||
|
|
||||||
if (error)
|
if (readbytes != Count)
|
||||||
{
|
{
|
||||||
my_errno= errno ? errno : -1;
|
my_errno= errno;
|
||||||
if (errno == 0 || (readbytes != (size_t) -1 &&
|
if (errno == 0 || (readbytes != (size_t) -1 &&
|
||||||
(MyFlags & (MY_NABP | MY_FNABP))))
|
(MyFlags & (MY_NABP | MY_FNABP))))
|
||||||
my_errno= HA_ERR_FILE_TOO_SHORT;
|
my_errno= HA_ERR_FILE_TOO_SHORT;
|
||||||
@ -82,6 +80,18 @@ size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset,
|
|||||||
(int) readbytes));
|
(int) readbytes));
|
||||||
continue; /* Interrupted */
|
continue; /* Interrupted */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Do a read retry if we didn't get enough data on first read */
|
||||||
|
if (readbytes != (size_t) -1 && readbytes != 0 &&
|
||||||
|
(MyFlags & MY_FULL_IO))
|
||||||
|
{
|
||||||
|
Buffer+= readbytes;
|
||||||
|
Count-= readbytes;
|
||||||
|
save_count+= readbytes;
|
||||||
|
offset+= readbytes;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (MyFlags & (MY_WME | MY_FAE | MY_FNABP))
|
if (MyFlags & (MY_WME | MY_FAE | MY_FNABP))
|
||||||
{
|
{
|
||||||
if (readbytes == (size_t) -1)
|
if (readbytes == (size_t) -1)
|
||||||
@ -97,8 +107,10 @@ size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset,
|
|||||||
DBUG_RETURN(MY_FILE_ERROR); /* Return with error */
|
DBUG_RETURN(MY_FILE_ERROR); /* Return with error */
|
||||||
}
|
}
|
||||||
if (MyFlags & (MY_NABP | MY_FNABP))
|
if (MyFlags & (MY_NABP | MY_FNABP))
|
||||||
DBUG_RETURN(0); /* Read went ok; Return 0 */
|
readbytes= 0; /* Read went ok; Return 0 */
|
||||||
DBUG_RETURN(readbytes); /* purecov: inspected */
|
else
|
||||||
|
readbytes+= save_count;
|
||||||
|
DBUG_RETURN(readbytes);
|
||||||
}
|
}
|
||||||
} /* my_pread */
|
} /* my_pread */
|
||||||
|
|
||||||
|
@ -35,17 +35,16 @@
|
|||||||
|
|
||||||
size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags)
|
size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags)
|
||||||
{
|
{
|
||||||
size_t readbytes, save_count;
|
size_t readbytes, save_count= 0;
|
||||||
DBUG_ENTER("my_read");
|
DBUG_ENTER("my_read");
|
||||||
DBUG_PRINT("my",("fd: %d Buffer: %p Count: %lu MyFlags: %lu",
|
DBUG_PRINT("my",("fd: %d Buffer: %p Count: %lu MyFlags: %lu",
|
||||||
Filedes, Buffer, (ulong) Count, MyFlags));
|
Filedes, Buffer, (ulong) Count, MyFlags));
|
||||||
save_count= Count;
|
|
||||||
if (!(MyFlags & (MY_WME | MY_FAE | MY_FNABP)))
|
if (!(MyFlags & (MY_WME | MY_FAE | MY_FNABP)))
|
||||||
MyFlags|= my_global_flags;
|
MyFlags|= my_global_flags;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
errno= 0; /* Linux, Windows don't reset this on EOF/success */
|
errno= 0; /* Linux, Windows don't reset this on EOF/success */
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
readbytes= my_win_read(Filedes, Buffer, Count);
|
readbytes= my_win_read(Filedes, Buffer, Count);
|
||||||
#else
|
#else
|
||||||
@ -61,47 +60,52 @@ size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags)
|
|||||||
|
|
||||||
if (readbytes != Count)
|
if (readbytes != Count)
|
||||||
{
|
{
|
||||||
my_errno= errno;
|
int got_errno= my_errno= errno;
|
||||||
if (errno == 0 || (readbytes != (size_t) -1 &&
|
|
||||||
(MyFlags & (MY_NABP | MY_FNABP))))
|
|
||||||
my_errno= HA_ERR_FILE_TOO_SHORT;
|
|
||||||
DBUG_PRINT("warning",("Read only %d bytes off %lu from %d, errno: %d",
|
DBUG_PRINT("warning",("Read only %d bytes off %lu from %d, errno: %d",
|
||||||
(int) readbytes, (ulong) Count, Filedes,
|
(int) readbytes, (ulong) Count, Filedes,
|
||||||
my_errno));
|
got_errno));
|
||||||
|
|
||||||
if ((readbytes == 0 || (int) readbytes == -1) && errno == EINTR)
|
if (got_errno == 0 || (readbytes != (size_t) -1 &&
|
||||||
{
|
(MyFlags & (MY_NABP | MY_FNABP))))
|
||||||
|
my_errno= HA_ERR_FILE_TOO_SHORT;
|
||||||
|
|
||||||
|
if ((readbytes == 0 || (int) readbytes == -1) && got_errno == EINTR)
|
||||||
|
{
|
||||||
DBUG_PRINT("debug", ("my_read() was interrupted and returned %ld",
|
DBUG_PRINT("debug", ("my_read() was interrupted and returned %ld",
|
||||||
(long) readbytes));
|
(long) readbytes));
|
||||||
continue; /* Interrupted */
|
continue; /* Interrupted */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Do a read retry if we didn't get enough data on first read */
|
||||||
|
if (readbytes != (size_t) -1 && readbytes != 0 &&
|
||||||
|
(MyFlags & MY_FULL_IO))
|
||||||
|
{
|
||||||
|
Buffer+= readbytes;
|
||||||
|
Count-= readbytes;
|
||||||
|
save_count+= readbytes;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (MyFlags & (MY_WME | MY_FAE | MY_FNABP))
|
if (MyFlags & (MY_WME | MY_FAE | MY_FNABP))
|
||||||
{
|
{
|
||||||
if (readbytes == (size_t) -1)
|
if (readbytes == (size_t) -1)
|
||||||
my_error(EE_READ,
|
my_error(EE_READ,
|
||||||
MYF(ME_BELL | ME_WAITTANG | (MyFlags & (ME_JUST_INFO | ME_NOREFRESH))),
|
MYF(ME_BELL | ME_WAITTANG | (MyFlags & (ME_JUST_INFO | ME_NOREFRESH))),
|
||||||
my_filename(Filedes),my_errno);
|
my_filename(Filedes), got_errno);
|
||||||
else if (MyFlags & (MY_NABP | MY_FNABP))
|
else if (MyFlags & (MY_NABP | MY_FNABP))
|
||||||
my_error(EE_EOFERR,
|
my_error(EE_EOFERR,
|
||||||
MYF(ME_BELL | ME_WAITTANG | (MyFlags & (ME_JUST_INFO | ME_NOREFRESH))),
|
MYF(ME_BELL | ME_WAITTANG | (MyFlags & (ME_JUST_INFO | ME_NOREFRESH))),
|
||||||
my_filename(Filedes),my_errno);
|
my_filename(Filedes), got_errno);
|
||||||
}
|
}
|
||||||
if (readbytes == (size_t) -1 ||
|
if (readbytes == (size_t) -1 ||
|
||||||
((MyFlags & (MY_FNABP | MY_NABP)) && !(MyFlags & MY_FULL_IO)))
|
((MyFlags & (MY_FNABP | MY_NABP)) && !(MyFlags & MY_FULL_IO)))
|
||||||
DBUG_RETURN(MY_FILE_ERROR); /* Return with error */
|
DBUG_RETURN(MY_FILE_ERROR); /* Return with error */
|
||||||
if (readbytes != (size_t) -1 && (MyFlags & MY_FULL_IO))
|
|
||||||
{
|
|
||||||
Buffer+= readbytes;
|
|
||||||
Count-= readbytes;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MyFlags & (MY_NABP | MY_FNABP))
|
if (MyFlags & (MY_NABP | MY_FNABP))
|
||||||
readbytes= 0; /* Ok on read */
|
readbytes= 0; /* Ok on read */
|
||||||
else if (MyFlags & MY_FULL_IO)
|
else
|
||||||
readbytes= save_count;
|
readbytes+= save_count;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
DBUG_RETURN(readbytes);
|
DBUG_RETURN(readbytes);
|
||||||
|
@ -13586,6 +13586,7 @@ load:
|
|||||||
lex->field_list.empty();
|
lex->field_list.empty();
|
||||||
lex->update_list.empty();
|
lex->update_list.empty();
|
||||||
lex->value_list.empty();
|
lex->value_list.empty();
|
||||||
|
lex->many_values.empty();
|
||||||
}
|
}
|
||||||
opt_load_data_charset
|
opt_load_data_charset
|
||||||
{ Lex->exchange->cs= $15; }
|
{ Lex->exchange->cs= $15; }
|
||||||
|
@ -10076,25 +10076,6 @@ ha_innobase::ft_init_ext(
|
|||||||
return(reinterpret_cast<FT_INFO*>(fts_hdl));
|
return(reinterpret_cast<FT_INFO*>(fts_hdl));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************//**
|
|
||||||
Initialize FT index scan
|
|
||||||
@return FT_INFO structure if successful or NULL */
|
|
||||||
|
|
||||||
FT_INFO*
|
|
||||||
ha_innobase::ft_init_ext_with_hints(
|
|
||||||
/*================================*/
|
|
||||||
uint keynr, /* in: key num */
|
|
||||||
String* key, /* in: key */
|
|
||||||
void* hints) /* in: hints */
|
|
||||||
{
|
|
||||||
/* TODO Implement function properly working with FT hint. */
|
|
||||||
#ifdef MYSQL_FT_INIT_EXT
|
|
||||||
return(ft_init_ext(hints->get_flags(), keynr, key));
|
|
||||||
#else
|
|
||||||
return NULL;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************//**
|
/*****************************************************************//**
|
||||||
Set up search tuple for a query through FTS_DOC_ID_INDEX on
|
Set up search tuple for a query through FTS_DOC_ID_INDEX on
|
||||||
supplied Doc ID. This is used by MySQL to retrieve the documents
|
supplied Doc ID. This is used by MySQL to retrieve the documents
|
||||||
@ -10288,16 +10269,6 @@ next_record:
|
|||||||
return(HA_ERR_END_OF_FILE);
|
return(HA_ERR_END_OF_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
ha_innobase::ft_end()
|
|
||||||
{
|
|
||||||
ib::info() << "ft_end()";
|
|
||||||
|
|
||||||
rnd_end();
|
|
||||||
}
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
extern dict_index_t*
|
extern dict_index_t*
|
||||||
wsrep_dict_foreign_find_index(
|
wsrep_dict_foreign_find_index(
|
||||||
@ -11847,21 +11818,18 @@ create_table_info_t::check_table_options()
|
|||||||
options->encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
options->encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If default encryption is used make sure that used kay is found
|
/* If default encryption is used and encryption is disabled, you may
|
||||||
from key file. */
|
not use nondefault encryption_key_id as it is not stored anywhere. */
|
||||||
if (encrypt == FIL_ENCRYPTION_DEFAULT &&
|
if (encrypt == FIL_ENCRYPTION_DEFAULT
|
||||||
!srv_encrypt_tables &&
|
&& !srv_encrypt_tables
|
||||||
options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
|
&& options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
|
||||||
if (!encryption_key_id_exists((unsigned int)options->encryption_key_id)) {
|
compile_time_assert(FIL_DEFAULT_ENCRYPTION_KEY == 1);
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
m_thd, Sql_condition::WARN_LEVEL_WARN,
|
m_thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
HA_WRONG_CREATE_OPTION,
|
HA_WRONG_CREATE_OPTION,
|
||||||
"InnoDB: ENCRYPTION_KEY_ID %u not available",
|
"InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1"
|
||||||
(uint)options->encryption_key_id
|
|
||||||
);
|
);
|
||||||
return "ENCRYPTION_KEY_ID";
|
return "ENCRYPTION_KEY_ID";
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -157,17 +157,8 @@ public:
|
|||||||
int rnd_pos(uchar * buf, uchar *pos);
|
int rnd_pos(uchar * buf, uchar *pos);
|
||||||
|
|
||||||
int ft_init();
|
int ft_init();
|
||||||
|
void ft_end() { rnd_end(); }
|
||||||
void ft_end();
|
FT_INFO *ft_init_ext(uint flags, uint inx, String* key);
|
||||||
|
|
||||||
FT_INFO* ft_init_ext(uint flags, uint inx, String* key);
|
|
||||||
|
|
||||||
FT_INFO* ft_init_ext_with_hints(
|
|
||||||
uint inx,
|
|
||||||
String* key,
|
|
||||||
void* hints);
|
|
||||||
//Ft_hints* hints);
|
|
||||||
|
|
||||||
int ft_read(uchar* buf);
|
int ft_read(uchar* buf);
|
||||||
|
|
||||||
void position(const uchar *record);
|
void position(const uchar *record);
|
||||||
|
@ -10803,16 +10803,6 @@ next_record:
|
|||||||
return(HA_ERR_END_OF_FILE);
|
return(HA_ERR_END_OF_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
ha_innobase::ft_end()
|
|
||||||
{
|
|
||||||
fprintf(stderr, "ft_end()\n");
|
|
||||||
|
|
||||||
rnd_end();
|
|
||||||
}
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
extern dict_index_t*
|
extern dict_index_t*
|
||||||
wsrep_dict_foreign_find_index(
|
wsrep_dict_foreign_find_index(
|
||||||
@ -12488,21 +12478,18 @@ ha_innobase::check_table_options(
|
|||||||
options->encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
options->encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If default encryption is used make sure that used kay is found
|
/* If default encryption is used and encryption is disabled, you may
|
||||||
from key file. */
|
not use nondefault encryption_key_id as it is not stored anywhere. */
|
||||||
if (encrypt == FIL_ENCRYPTION_DEFAULT &&
|
if (encrypt == FIL_ENCRYPTION_DEFAULT
|
||||||
!srv_encrypt_tables &&
|
&& !srv_encrypt_tables
|
||||||
options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
|
&& options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
|
||||||
if (!encryption_key_id_exists((unsigned int)options->encryption_key_id)) {
|
compile_time_assert(FIL_DEFAULT_ENCRYPTION_KEY == 1);
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
thd, Sql_condition::WARN_LEVEL_WARN,
|
thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
HA_WRONG_CREATE_OPTION,
|
HA_WRONG_CREATE_OPTION,
|
||||||
"InnoDB: ENCRYPTION_KEY_ID %u not available",
|
"InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1"
|
||||||
(uint)options->encryption_key_id
|
|
||||||
);
|
);
|
||||||
return "ENCRYPTION_KEY_ID";
|
return "ENCRYPTION_KEY_ID";
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check atomic writes requirements */
|
/* Check atomic writes requirements */
|
||||||
|
@ -177,7 +177,7 @@ class ha_innobase: public handler
|
|||||||
int rnd_pos(uchar * buf, uchar *pos);
|
int rnd_pos(uchar * buf, uchar *pos);
|
||||||
|
|
||||||
int ft_init();
|
int ft_init();
|
||||||
void ft_end();
|
void ft_end() { rnd_end(); }
|
||||||
FT_INFO *ft_init_ext(uint flags, uint inx, String* key);
|
FT_INFO *ft_init_ext(uint flags, uint inx, String* key);
|
||||||
int ft_read(uchar* buf);
|
int ft_read(uchar* buf);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user