revision-id: 68929287c4a3fe063fe25cb69bed5b97db904f04 (mariadb-10.2.18-67-g68929287c4a)
parent(s): ba3e46ebe7ea2221026bf5ad52e2260d21d5e811
author: Oleksandr Byelkin
committer: Oleksandr Byelkin
timestamp: 2018-11-07 14:28:08 +0100
message:
more tests
---
mysql-test/r/func_default.result | 8 ++++++++
mysql-test/t/func_default.test | 5 +++++
2 files changed, 13 insertions(+)
diff --git a/mysql-test/r/func_default.result b/mysql-test/r/func_default.result
index 3927c387680..9699f0795e3 100644
--- a/mysql-test/r/func_default.result
+++ b/mysql-test/r/func_default.result
@@ -15,6 +15,14 @@ str strnull intg rel
explain select * from t1 where str <> default(str);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1
+create view v1 as select default(str), default(strnull), default(intg), default(rel) from t1;
+select * from v1;
+default(str) default(strnull) default(intg) default(rel)
+def NULL 10 3.14
+show create view v1;
+View Create View character_set_client collation_connection
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select default(`t1`.`str`) AS `default(str)`,default(`t1`.`strnull`) AS `default(strnull)`,default(`t1`.`intg`) AS `default(intg)`,default(`t1`.`rel`) AS `default(rel)` from `t1` latin1 latin1_swedish_ci
+drop view v1;
drop table t1;
CREATE TABLE t1 (id int(11), s varchar(20));
INSERT INTO t1 VALUES (1, 'one'), (2, 'two'), (3, 'three');
diff --git a/mysql-test/t/func_default.test b/mysql-test/t/func_default.test
index fbd73990297..332bfca021f 100644
--- a/mysql-test/t/func_default.test
+++ b/mysql-test/t/func_default.test
@@ -11,6 +11,11 @@ explain extended select default(str), default(strnull), default(intg), default(r
select * from t1 where str <> default(str);
explain select * from t1 where str <> default(str);
+create view v1 as select default(str), default(strnull), default(intg), default(rel) from t1;
+select * from v1;
+show create view v1;
+drop view v1;
+
#TODO: uncomment when bug will be fixed
#create table t2 select default(str), default(strnull), default(intg), default(rel) from t1;
#show create table from t1;
1
0
[Commits] 1a4031d9c8f: MDEV-17297: stats.records=0 for a table of Archive engine when it has rows, when we run ANALYZE command
by Sergei Petrunia 07 Nov '18
by Sergei Petrunia 07 Nov '18
07 Nov '18
revision-id: 1a4031d9c8f314896daf8f7c19d6172b9bba313b (mariadb-10.3.10-49-g1a4031d9c8f)
parent(s): e058a251c10350f3727ca1df022dc5786933535b
author: Sergei Petrunia
committer: Sergei Petrunia
timestamp: 2018-11-07 11:58:30 +0300
message:
MDEV-17297: stats.records=0 for a table of Archive engine when it has rows, when we run ANALYZE command
Archive storage engine assumed that any query that attempts to read from
the table will call ha_archive::info() beforehand. ha_archive would flush
un-written data in that call (this would make it visible for the reads).
Break this assumption. Flush the data when the table is opened for reading.
This way, one can do multiple write statements without causing a flush, but
as soon as we might need the data, we flush it.
---
mysql-test/suite/archive/archive_eits.result | 24 +++++++++++++
mysql-test/suite/archive/archive_eits.test | 32 ++++++++++++++++++
storage/archive/ha_archive.cc | 50 ++++++++++++++++++----------
storage/archive/ha_archive.h | 3 ++
4 files changed, 92 insertions(+), 17 deletions(-)
diff --git a/mysql-test/suite/archive/archive_eits.result b/mysql-test/suite/archive/archive_eits.result
new file mode 100644
index 00000000000..e077c2e4954
--- /dev/null
+++ b/mysql-test/suite/archive/archive_eits.result
@@ -0,0 +1,24 @@
+drop table if exists t1;
+#
+# MDEV-17297: stats.records=0 for a table of Archive engine when it has rows, when we run ANALYZE command
+#
+CREATE TABLE t1 (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT)engine=archive;
+INSERT INTO t1 VALUES
+(101, PointFromText('POINT(10 10)')),
+(102, PointFromText('POINT(20 10)')),
+(103, PointFromText('POINT(20 20)')),
+(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
+set @tmp1= @@optimizer_use_condition_selectivity;
+set @tmp2= @@use_stat_tables;
+set optimizer_use_condition_selectivity=4;
+set use_stat_tables=PREFERABLY;
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status Engine-independent statistics collected
+test.t1 analyze note The storage engine for the table doesn't support analyze
+select * from mysql.table_stats where table_name='t1' and db_name=database();
+db_name table_name cardinality
+test t1 4
+drop table t1;
+set optimizer_use_condition_selectivity=@tmp1;
+set use_stat_tables=@tmp2;
diff --git a/mysql-test/suite/archive/archive_eits.test b/mysql-test/suite/archive/archive_eits.test
new file mode 100644
index 00000000000..04c4ccdb709
--- /dev/null
+++ b/mysql-test/suite/archive/archive_eits.test
@@ -0,0 +1,32 @@
+-- source include/have_archive.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+--echo #
+--echo # MDEV-17297: stats.records=0 for a table of Archive engine when it has rows, when we run ANALYZE command
+--echo #
+
+CREATE TABLE t1 (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT)engine=archive;
+INSERT INTO t1 VALUES
+(101, PointFromText('POINT(10 10)')),
+(102, PointFromText('POINT(20 10)')),
+(103, PointFromText('POINT(20 20)')),
+(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
+
+set @tmp1= @@optimizer_use_condition_selectivity;
+set @tmp2= @@use_stat_tables;
+
+set optimizer_use_condition_selectivity=4;
+set use_stat_tables=PREFERABLY;
+ANALYZE TABLE t1;
+
+select * from mysql.table_stats where table_name='t1' and db_name=database();
+
+drop table t1;
+
+set optimizer_use_condition_selectivity=@tmp1;
+set use_stat_tables=@tmp2;
+
+
diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc
index 487c0038239..9d7f7e66b28 100644
--- a/storage/archive/ha_archive.cc
+++ b/storage/archive/ha_archive.cc
@@ -1671,7 +1671,6 @@ void ha_archive::update_create_info(HA_CREATE_INFO *create_info)
DBUG_VOID_RETURN;
}
-
/*
Hints for optimizer, see ha_tina for more information
*/
@@ -1679,22 +1678,7 @@ int ha_archive::info(uint flag)
{
DBUG_ENTER("ha_archive::info");
- mysql_mutex_lock(&share->mutex);
- if (share->dirty)
- {
- DBUG_PRINT("ha_archive", ("archive flushing out rows for scan"));
- DBUG_ASSERT(share->archive_write_open);
- azflush(&(share->archive_write), Z_SYNC_FLUSH);
- share->dirty= FALSE;
- }
-
- /*
- This should be an accurate number now, though bulk and delayed inserts can
- cause the number to be inaccurate.
- */
- stats.records= share->rows_recorded;
- mysql_mutex_unlock(&share->mutex);
-
+ flush_and_clear_pending_writes();
stats.deleted= 0;
DBUG_PRINT("ha_archive", ("Stats rows is %d\n", (int)stats.records));
@@ -1737,6 +1721,38 @@ int ha_archive::info(uint flag)
}
+int ha_archive::external_lock(THD *thd, int lock_type)
+{
+ if (lock_type == F_RDLCK)
+ {
+ // We are going to read from the table. Flush any pending writes that we
+ // may have
+ flush_and_clear_pending_writes();
+ }
+ return 0;
+}
+
+
+void ha_archive::flush_and_clear_pending_writes()
+{
+ mysql_mutex_lock(&share->mutex);
+ if (share->dirty)
+ {
+ DBUG_PRINT("ha_archive", ("archive flushing out rows for scan"));
+ DBUG_ASSERT(share->archive_write_open);
+ azflush(&(share->archive_write), Z_SYNC_FLUSH);
+ share->dirty= FALSE;
+ }
+
+ /*
+ This should be an accurate number now, though bulk and delayed inserts can
+ cause the number to be inaccurate.
+ */
+ stats.records= share->rows_recorded;
+ mysql_mutex_unlock(&share->mutex);
+}
+
+
/*
This method tells us that a bulk insert operation is about to occur. We set
a flag which will keep write_row from saying that its data is dirty. This in
diff --git a/storage/archive/ha_archive.h b/storage/archive/ha_archive.h
index 56ff566db8c..a74374a340f 100644
--- a/storage/archive/ha_archive.h
+++ b/storage/archive/ha_archive.h
@@ -169,5 +169,8 @@ class ha_archive: public handler
int unpack_row(azio_stream *file_to_read, uchar *record);
unsigned int pack_row(uchar *record, azio_stream *writer);
bool check_if_incompatible_data(HA_CREATE_INFO *info, uint table_changes);
+ int external_lock(THD *thd, int lock_type);
+private:
+ void flush_and_clear_pending_writes();
};
1
0
[Commits] 6cecb10a2f8: MDEV-11167: InnoDB: Warning: using a partial-field key prefix in search, results in assertion failure or "Can't find record" error
by Oleksandr Byelkin 07 Nov '18
by Oleksandr Byelkin 07 Nov '18
07 Nov '18
revision-id: 6cecb10a2f8b6536bed78ab6d3791d8befc9d732 (mariadb-10.0.37-12-g6cecb10a2f8)
parent(s): 5f29fdecc0e22048e860ac256cc071ce206d453e
author: Oleksandr Byelkin
committer: Oleksandr Byelkin
timestamp: 2018-11-07 09:25:12 +0100
message:
MDEV-11167: InnoDB: Warning: using a partial-field key prefix in search, results in assertion failure or "Can't find record" error
Fix ha_rnd_init() argument (we do not doing scan but use rnd_pos)
---
mysql-test/r/partition_innodb.result | 26 ++++++++++++++++++++++++++
mysql-test/t/partition_innodb.test | 30 ++++++++++++++++++++++++++++++
sql/sql_update.cc | 2 +-
3 files changed, 57 insertions(+), 1 deletion(-)
diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result
index f863ec5522a..ee3525cb085 100644
--- a/mysql-test/r/partition_innodb.result
+++ b/mysql-test/r/partition_innodb.result
@@ -890,3 +890,29 @@ ERROR HY000: Table definition has changed, please retry transaction
SELECT b FROM t1 WHERE b = 0;
ERROR HY000: Table definition has changed, please retry transaction
DROP TABLE t1;
+#
+# MDEV-11167: InnoDB: Warning: using a partial-field key prefix
+# in search, results in assertion failure or "Can't find record" error
+#
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
+CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
+INSERT INTO t1 VALUES (1),(2);
+INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
+Warnings:
+Warning 1366 Incorrect integer value: 'three' for column 'b' at row 2
+UPDATE v SET a = NULL ORDER BY a, b;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'foo'
+DROP view v;
+DROP TABLE t1, t2;
+SET @save_isp=@@innodb_stats_persistent;
+SET GLOBAL innodb_stats_persistent= ON;
+CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
+INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
+CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
+UPDATE v SET f2 = NULL;
+ERROR HY000: CHECK OPTION failed 'test.v'
+SET GLOBAL innodb_stats_persistent= @save_isp;
+DROP view v;
+DROP TABLE t;
diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test
index f6faa4cb0e6..5dbe9f467fa 100644
--- a/mysql-test/t/partition_innodb.test
+++ b/mysql-test/t/partition_innodb.test
@@ -996,3 +996,33 @@ SELECT b FROM t1 WHERE b = 0;
SELECT b FROM t1 WHERE b = 0;
--disconnect con1
DROP TABLE t1;
+
+--echo #
+--echo # MDEV-11167: InnoDB: Warning: using a partial-field key prefix
+--echo # in search, results in assertion failure or "Can't find record" error
+--echo #
+
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
+CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
+
+INSERT INTO t1 VALUES (1),(2);
+INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
+UPDATE v SET a = NULL ORDER BY a, b;
+
+DROP view v;
+DROP TABLE t1, t2;
+
+SET @save_isp=@@innodb_stats_persistent;
+SET GLOBAL innodb_stats_persistent= ON;
+
+CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
+INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
+CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
+--error ER_VIEW_CHECK_FAILED
+UPDATE v SET f2 = NULL;
+
+SET GLOBAL innodb_stats_persistent= @save_isp;
+DROP view v;
+DROP TABLE t;
+
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index 592e8158c0d..1972cc82454 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -2309,7 +2309,7 @@ int multi_update::do_updates()
check_opt_it.rewind();
while(TABLE *tbl= check_opt_it++)
{
- if ((local_error= tbl->file->ha_rnd_init(1)))
+ if ((local_error= tbl->file->ha_rnd_init(0)))
{
err_table= tbl;
goto err;
1
0
[Commits] 494dfb14f29: MDEV-17229: Encryption threads ignore innodb_default_encryption_key_id
by jan 07 Nov '18
by jan 07 Nov '18
07 Nov '18
revision-id: 494dfb14f29faa066926f87545a173ad676e669b (mariadb-10.1.37-7-g494dfb14f29)
parent(s): ef40018535b71f0a4387fa6c1cc22e9991dfc0db
author: Jan Lindström
committer: Jan Lindström
timestamp: 2018-11-07 09:41:08 +0200
message:
MDEV-17229: Encryption threads ignore innodb_default_encryption_key_id
Background: Original idea of this variable was to be used when
table is created. However, this is not clearly documented.
Cases:
(1) create table t1(a) engine=innodb encrypted=yes. This case
worked correctly as encryption metadata is created when table
is created.
(2) create table t1(a) engine=innodb; This case used global
default key_id i.e. 1 not user defined innodb_default_encryption_key_id
(3) create table t1(a) engine=innodb encrypted=no. No key_id is
used so warning should be issued when nondefault key_id is used.
Solution: Use default_encryption_key_id if defined when creating
encryption metadata for unencrypted to encrypted key rotation.
fil0crypt.cc::fil_crypt_start_encrypting_space()
Use global default encryption key_id if defined when
creating crypt_data for unencrypted => encrypted key
rotation.
ha_innodb.cc::innodb_default_encryption_key_id_update
ha_innodb.cc::innodb_default_encryption_key_id_validate
Add update and validate callbacks for variable
innodb_default_encryption_key_id and make sure
user can't define it to value that does not exists
on encryption plugin.
ha_innodb.cc::check_table_options()
We should not allow nondefault encryption key_id
when encryption is disabled as it will be newer
used.
srv0srv.h
srv0srv.cc
Add global srv_default_encryption_key_id where current
key_id is stored. This is needed as encryption threads
do not have THD.
---
.../encryption/r/innodb-checksum-algorithm.result | 2 +-
.../encryption/r/innodb-compressed-blob.result | 2 +
.../encryption/r/innodb-encryption-alter.result | 17 ------
.../r/innodb_encryption_default_key.result | 29 +++++++++
.../encryption/t/innodb-checksum-algorithm.test | 2 +-
.../encryption/t/innodb-encryption-alter.test | 7 ---
.../encryption/t/innodb_encryption_default_key.opt | 1 +
.../t/innodb_encryption_default_key.test | 45 ++++++++++++++
storage/innobase/fil/fil0crypt.cc | 4 +-
storage/innobase/handler/ha_innodb.cc | 68 +++++++++++++++++++++-
storage/innobase/include/srv0srv.h | 5 +-
storage/innobase/srv/srv0srv.cc | 5 +-
storage/xtradb/fil/fil0crypt.cc | 4 +-
storage/xtradb/handler/ha_innodb.cc | 68 +++++++++++++++++++++-
storage/xtradb/include/srv0srv.h | 5 +-
storage/xtradb/srv/srv0srv.cc | 5 +-
16 files changed, 231 insertions(+), 38 deletions(-)
diff --git a/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result b/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result
index a853f3869a9..b3deac98e3c 100644
--- a/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result
+++ b/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result
@@ -10,7 +10,7 @@ SET GLOBAL innodb_encrypt_tables = ON;
SET GLOBAL innodb_encryption_threads = 4;
call mtr.add_suppression("InnoDB: innodb_checksum_algorithm is set to \"strict_(crc32|none|innodb)\" but the page \\[page id: space=[0-9]+, page number=[0-9]+\\] contains a valid checksum \"(innodb|none|crc32)\"");
SET GLOBAL innodb_checksum_algorithm = innodb;
-SET GLOBAL innodb_default_encryption_key_id=4;
+SET GLOBAL innodb_default_encryption_key_id=1;
SET GLOBAL innodb_checksum_algorithm=crc32;
create table tce_crc32(a serial, b blob, index(b(10))) engine=innodb
ROW_FORMAT=COMPRESSED encrypted=yes;
diff --git a/mysql-test/suite/encryption/r/innodb-compressed-blob.result b/mysql-test/suite/encryption/r/innodb-compressed-blob.result
index ce73b80820f..a6f4856fdbb 100644
--- a/mysql-test/suite/encryption/r/innodb-compressed-blob.result
+++ b/mysql-test/suite/encryption/r/innodb-compressed-blob.result
@@ -7,6 +7,8 @@ set GLOBAL innodb_default_encryption_key_id=4;
create table t1(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed;
create table t2(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes;
create table t3(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed encrypted=no;
+Warnings:
+Warning 140 InnoDB: Ignored ENCRYPTION_KEY_ID 4 when encryption is disabled
insert into t1 values (1, repeat('secret',6000));
insert into t2 values (1, repeat('secret',6000));
insert into t3 values (1, repeat('secret',6000));
diff --git a/mysql-test/suite/encryption/r/innodb-encryption-alter.result b/mysql-test/suite/encryption/r/innodb-encryption-alter.result
index 5245d1da7d0..9d4fd0583c3 100644
--- a/mysql-test/suite/encryption/r/innodb-encryption-alter.result
+++ b/mysql-test/suite/encryption/r/innodb-encryption-alter.result
@@ -6,21 +6,6 @@ CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNOD
Warnings:
Warning 140 InnoDB: Ignored ENCRYPTION_KEY_ID 4 when encryption is disabled
DROP TABLE t1;
-set innodb_default_encryption_key_id = 99;
-CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB;
-ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
-SHOW WARNINGS;
-Level Code Message
-Warning 140 InnoDB: ENCRYPTION_KEY_ID 99 not available
-Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=YES;
-ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
-SHOW WARNINGS;
-Level Code Message
-Warning 140 InnoDB: ENCRYPTION_KEY_ID 99 not available
-Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
set innodb_default_encryption_key_id = 4;
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=YES;
SHOW CREATE TABLE t1;
@@ -40,8 +25,6 @@ t1 CREATE TABLE `t1` (
PRIMARY KEY (`pk`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTION_KEY_ID`=4
CREATE TABLE t2 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=NO ENCRYPTION_KEY_ID=1;
-Warnings:
-Warning 140 InnoDB: Ignored ENCRYPTION_KEY_ID 1 when encryption is disabled
ALTER TABLE t1 ENCRYPTION_KEY_ID=99;
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
SHOW WARNINGS;
diff --git a/mysql-test/suite/encryption/r/innodb_encryption_default_key.result b/mysql-test/suite/encryption/r/innodb_encryption_default_key.result
new file mode 100644
index 00000000000..f97af5e45a9
--- /dev/null
+++ b/mysql-test/suite/encryption/r/innodb_encryption_default_key.result
@@ -0,0 +1,29 @@
+SET GLOBAL innodb_file_format = `Barracuda`;
+SET GLOBAL innodb_file_per_table = ON;
+SET GLOBAL innodb_encrypt_tables = OFF;
+SET GLOBAL innodb_default_encryption_key_id = 1;
+create table t1 (a int not null primary key) engine=InnoDB;
+SET GLOBAL innodb_default_encryption_key_id = 999;
+ERROR 42000: Variable 'innodb_default_encryption_key_id' can't be set to the value of '999'
+SHOW WARNINGS;
+Level Code Message
+Warning 1210 InnoDB: innodb_default_encryption_key_id=999 not available in encryption plugin
+Error 1231 Variable 'innodb_default_encryption_key_id' can't be set to the value of '999'
+SET GLOBAL innodb_default_encryption_key_id = 4;
+SET GLOBAL innodb_encryption_threads = 4;
+SET GLOBAL innodb_encrypt_tables = ON;
+SELECT NAME,CURRENT_KEY_ID,MIN_KEY_VERSION FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 ORDER BY NAME;
+NAME CURRENT_KEY_ID MIN_KEY_VERSION
+SELECT NAME,CURRENT_KEY_ID,MIN_KEY_VERSION FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 ORDER BY NAME;
+NAME CURRENT_KEY_ID MIN_KEY_VERSION
+./ibdata1 4 1
+mysql/innodb_index_stats 4 1
+mysql/innodb_table_stats 4 1
+test/t1 4 1
+# Success!
+DROP TABLE t1;
+SET GLOBAL innodb_encryption_threads = DEFAULT;
+SET GLOBAL innodb_encrypt_tables = DEFAULT;
+SET GLOBAL innodb_file_format = DEFAULT;
+SET GLOBAL innodb_file_per_table = DEFAULT;
+SET GLOBAL innodb_default_encryption_key_id = DEFAULT;
diff --git a/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test b/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test
index d0caed05006..f4093bae81e 100644
--- a/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test
+++ b/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test
@@ -16,7 +16,7 @@ SET GLOBAL innodb_encryption_threads = 4;
call mtr.add_suppression("InnoDB: innodb_checksum_algorithm is set to \"strict_(crc32|none|innodb)\" but the page \\[page id: space=[0-9]+, page number=[0-9]+\\] contains a valid checksum \"(innodb|none|crc32)\"");
SET GLOBAL innodb_checksum_algorithm = innodb;
-SET GLOBAL innodb_default_encryption_key_id=4;
+SET GLOBAL innodb_default_encryption_key_id=1;
let MYSQLD_DATADIR =`SELECT @@datadir`;
diff --git a/mysql-test/suite/encryption/t/innodb-encryption-alter.test b/mysql-test/suite/encryption/t/innodb-encryption-alter.test
index 9465226dd96..b4a432406d9 100644
--- a/mysql-test/suite/encryption/t/innodb-encryption-alter.test
+++ b/mysql-test/suite/encryption/t/innodb-encryption-alter.test
@@ -19,13 +19,6 @@ SET GLOBAL innodb_encryption_threads = 4;
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=NO ENCRYPTION_KEY_ID=4;
DROP TABLE t1;
-set innodb_default_encryption_key_id = 99;
---error 1005
-CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB;
-SHOW WARNINGS;
---error 1005
-CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=YES;
-SHOW WARNINGS;
set innodb_default_encryption_key_id = 4;
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=YES;
SHOW CREATE TABLE t1;
diff --git a/mysql-test/suite/encryption/t/innodb_encryption_default_key.opt b/mysql-test/suite/encryption/t/innodb_encryption_default_key.opt
new file mode 100644
index 00000000000..7d3f2da7971
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb_encryption_default_key.opt
@@ -0,0 +1 @@
+--innodb-tablespaces-encryption
diff --git a/mysql-test/suite/encryption/t/innodb_encryption_default_key.test b/mysql-test/suite/encryption/t/innodb_encryption_default_key.test
new file mode 100644
index 00000000000..ece0823d0c2
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb_encryption_default_key.test
@@ -0,0 +1,45 @@
+-- source include/have_innodb.inc
+-- source include/have_file_key_management_plugin.inc
+
+--disable_query_log
+let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
+let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
+--enable_query_log
+
+--disable_warnings
+SET GLOBAL innodb_file_format = `Barracuda`;
+SET GLOBAL innodb_file_per_table = ON;
+--enable_warnings
+
+SET GLOBAL innodb_encrypt_tables = OFF;
+SET GLOBAL innodb_default_encryption_key_id = 1;
+
+create table t1 (a int not null primary key) engine=InnoDB;
+
+# Do not allow setting default key to key_id that is not found
+--error ER_WRONG_VALUE_FOR_VAR
+SET GLOBAL innodb_default_encryption_key_id = 999;
+SHOW WARNINGS;
+
+SET GLOBAL innodb_default_encryption_key_id = 4;
+SET GLOBAL innodb_encryption_threads = 4;
+SET GLOBAL innodb_encrypt_tables = ON;
+
+--let $tables_count= `select count(*) from information_schema.tables where engine = 'InnoDB'`
+--let $wait_condition=SELECT COUNT(*) = $tables_count + 1 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND ROTATING_OR_FLUSHING = 0;
+--source include/wait_condition.inc
+
+SELECT NAME,CURRENT_KEY_ID,MIN_KEY_VERSION FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 ORDER BY NAME;
+SELECT NAME,CURRENT_KEY_ID,MIN_KEY_VERSION FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 ORDER BY NAME;
+
+--echo # Success!
+
+DROP TABLE t1;
+
+--disable_warnings
+SET GLOBAL innodb_encryption_threads = DEFAULT;
+SET GLOBAL innodb_encrypt_tables = DEFAULT;
+SET GLOBAL innodb_file_format = DEFAULT;
+SET GLOBAL innodb_file_per_table = DEFAULT;
+SET GLOBAL innodb_default_encryption_key_id = DEFAULT;
+--enable_warnings
diff --git a/storage/innobase/fil/fil0crypt.cc b/storage/innobase/fil/fil0crypt.cc
index 7859fe67d40..e81e25378a5 100644
--- a/storage/innobase/fil/fil0crypt.cc
+++ b/storage/innobase/fil/fil0crypt.cc
@@ -1064,7 +1064,9 @@ fil_crypt_start_encrypting_space(
* crypt data in page 0 */
/* 1 - create crypt data */
- crypt_data = fil_space_create_crypt_data(FIL_ENCRYPTION_DEFAULT, FIL_DEFAULT_ENCRYPTION_KEY);
+ crypt_data = fil_space_create_crypt_data(FIL_ENCRYPTION_DEFAULT,
+ srv_default_encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY
+ ? srv_default_encryption_key_id : FIL_DEFAULT_ENCRYPTION_KEY);
if (crypt_data == NULL) {
mutex_exit(&fil_crypt_threads_mutex);
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index b3a830e47c3..7ef73decace 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -685,9 +685,71 @@ static int mysql_tmpfile_path(const char *path, const char *prefix)
static void innodb_remember_check_sysvar_funcs();
mysql_var_check_func check_sysvar_enum;
+/** Update the system variable srv_default_encryption_key_id using
+the "saved" value. This function is registered as a callback with MySQL.
+@param[in,out] thd thread handle
+@param[in] var pointer to system variable
+@param[out] save immediate result for update
+@param[in] value incoming string
+*/
+static
+void
+innodb_default_encryption_key_id_update(
+ THD* thd,
+ struct st_mysql_sys_var* var,
+ void* var_ptr,
+ const void* save)
+{
+ *reinterpret_cast<uint*>(var_ptr)
+ = srv_default_encryption_key_id
+ = (*static_cast<const uint*>(save));
+}
+
+/** Validate passed-in "value" is a valid encryption key_id
+found from encryption plugin.
+This function is registered as a callback with MySQL.
+@param[in,out] thd thread handle
+@param[in] var pointer to system variable
+@param[out] save immediate result for validate
+@param[in] value incoming string
+@return 0 for valid key_id */
+static
+int
+innodb_default_encryption_key_id_validate(
+ THD* thd,
+ struct st_mysql_sys_var* var,
+ void* save,
+ struct st_mysql_value* value)
+{
+ long long key_id_buf;
+ uint key_id;
+
+ if (value->val_int(value, &key_id_buf)) {
+ /* The value is NULL. That is invalid. */
+ return(1);
+ }
+
+ *reinterpret_cast<uint*>(save) = key_id = static_cast<uint>(key_id_buf);
+
+ /* Default encryption key_id must be found from encryption
+ plugin keys. */
+ if (key_id != FIL_DEFAULT_ENCRYPTION_KEY
+ && !encryption_key_id_exists(key_id)) {
+ push_warning_printf(
+ thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WRONG_ARGUMENTS,
+ "InnoDB: innodb_default_encryption_key_id=%u not available in encryption plugin",
+ key_id);
+ return (1);
+ }
+
+ return(0);
+}
+
static MYSQL_THDVAR_UINT(default_encryption_key_id, PLUGIN_VAR_RQCMDARG,
"Default encryption key id used for table encryption.",
- NULL, NULL,
+ innodb_default_encryption_key_id_validate,
+ innodb_default_encryption_key_id_update,
FIL_DEFAULT_ENCRYPTION_KEY, 1, UINT_MAX32, 0);
/**
@@ -11947,8 +12009,8 @@ ha_innobase::check_table_options(
}
/* Ignore nondefault key_id if encryption is set off */
- if (encrypt == FIL_ENCRYPTION_OFF &&
- options->encryption_key_id != THDVAR(thd, default_encryption_key_id)) {
+ if (encrypt == FIL_ENCRYPTION_OFF
+ && options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
push_warning_printf(
thd, Sql_condition::WARN_LEVEL_WARN,
HA_WRONG_CREATE_OPTION,
diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
index 09af0b2cdd2..804b1a8f66c 100644
--- a/storage/innobase/include/srv0srv.h
+++ b/storage/innobase/include/srv0srv.h
@@ -3,7 +3,7 @@
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2008, 2009, Google Inc.
Copyright (c) 2009, Percona Inc.
-Copyright (c) 2013, 2017, MariaDB Corporation.
+Copyright (c) 2013, 2018, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -367,6 +367,9 @@ extern ulong srv_flush_log_at_trx_commit;
extern uint srv_flush_log_at_timeout;
extern char srv_adaptive_flushing;
+/* Default encryption key_id */
+extern uint srv_default_encryption_key_id;
+
#ifdef WITH_INNODB_DISALLOW_WRITES
/* When this event is reset we do not allow any file writes to take place. */
extern os_event_t srv_allow_writes_event;
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index 87f9064c14e..f9fbc874f30 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -3,7 +3,7 @@
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, 2009 Google Inc.
Copyright (c) 2009, Percona Inc.
-Copyright (c) 2013, 2017, MariaDB Corporation.
+Copyright (c) 2013, 2018, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -225,6 +225,9 @@ UNIV_INTERN uint srv_flush_log_at_timeout = 1;
UNIV_INTERN ulong srv_page_size = UNIV_PAGE_SIZE_DEF;
UNIV_INTERN ulong srv_page_size_shift = UNIV_PAGE_SIZE_SHIFT_DEF;
+/* Default encryption key_id */
+UNIV_INTERN uint srv_default_encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY;
+
/* Try to flush dirty pages so as to avoid IO bursts at
the checkpoints. */
UNIV_INTERN char srv_adaptive_flushing = TRUE;
diff --git a/storage/xtradb/fil/fil0crypt.cc b/storage/xtradb/fil/fil0crypt.cc
index 7859fe67d40..e81e25378a5 100644
--- a/storage/xtradb/fil/fil0crypt.cc
+++ b/storage/xtradb/fil/fil0crypt.cc
@@ -1064,7 +1064,9 @@ fil_crypt_start_encrypting_space(
* crypt data in page 0 */
/* 1 - create crypt data */
- crypt_data = fil_space_create_crypt_data(FIL_ENCRYPTION_DEFAULT, FIL_DEFAULT_ENCRYPTION_KEY);
+ crypt_data = fil_space_create_crypt_data(FIL_ENCRYPTION_DEFAULT,
+ srv_default_encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY
+ ? srv_default_encryption_key_id : FIL_DEFAULT_ENCRYPTION_KEY);
if (crypt_data == NULL) {
mutex_exit(&fil_crypt_threads_mutex);
diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc
index 05066512db9..26d9db5dd08 100644
--- a/storage/xtradb/handler/ha_innodb.cc
+++ b/storage/xtradb/handler/ha_innodb.cc
@@ -686,9 +686,71 @@ ib_cb_t innodb_api_cb[] = {
static void innodb_remember_check_sysvar_funcs();
mysql_var_check_func check_sysvar_enum;
+/** Update the system variable srv_default_encryption_key_id using
+the "saved" value. This function is registered as a callback with MySQL.
+@param[in,out] thd thread handle
+@param[in] var pointer to system variable
+@param[out] save immediate result for update
+@param[in] value incoming string
+*/
+static
+void
+innodb_default_encryption_key_id_update(
+ THD* thd,
+ struct st_mysql_sys_var* var,
+ void* var_ptr,
+ const void* save)
+{
+ *reinterpret_cast<uint*>(var_ptr)
+ = srv_default_encryption_key_id
+ = (*static_cast<const uint*>(save));
+}
+
+/** Validate passed-in "value" is a valid encryption key_id
+found from encryption plugin.
+This function is registered as a callback with MySQL.
+@param[in,out] thd thread handle
+@param[in] var pointer to system variable
+@param[out] save immediate result for validate
+@param[in] value incoming string
+@return 0 for valid key_id */
+static
+int
+innodb_default_encryption_key_id_validate(
+ THD* thd,
+ struct st_mysql_sys_var* var,
+ void* save,
+ struct st_mysql_value* value)
+{
+ long long key_id_buf;
+ uint key_id;
+
+ if (value->val_int(value, &key_id_buf)) {
+ /* The value is NULL. That is invalid. */
+ return(1);
+ }
+
+ *reinterpret_cast<uint*>(save) = key_id = static_cast<uint>(key_id_buf);
+
+ /* Default encryption key_id must be found from encryption
+ plugin keys. */
+ if (key_id != FIL_DEFAULT_ENCRYPTION_KEY
+ && !encryption_key_id_exists(key_id)) {
+ push_warning_printf(
+ thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WRONG_ARGUMENTS,
+ "InnoDB: innodb_default_encryption_key_id=%u not available in encryption plugin",
+ key_id);
+ return (1);
+ }
+
+ return(0);
+}
+
static MYSQL_THDVAR_UINT(default_encryption_key_id, PLUGIN_VAR_RQCMDARG,
"Default encryption key id used for table encryption.",
- NULL, NULL,
+ innodb_default_encryption_key_id_validate,
+ innodb_default_encryption_key_id_update,
FIL_DEFAULT_ENCRYPTION_KEY, 1, UINT_MAX32, 0);
/**
@@ -12514,8 +12576,8 @@ ha_innobase::check_table_options(
}
/* Ignore nondefault key_id if encryption is set off */
- if (encrypt == FIL_ENCRYPTION_OFF &&
- options->encryption_key_id != THDVAR(thd, default_encryption_key_id)) {
+ if (encrypt == FIL_ENCRYPTION_OFF
+ && options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
push_warning_printf(
thd, Sql_condition::WARN_LEVEL_WARN,
HA_WRONG_CREATE_OPTION,
diff --git a/storage/xtradb/include/srv0srv.h b/storage/xtradb/include/srv0srv.h
index 6df60e0e52d..54aa4319f5b 100644
--- a/storage/xtradb/include/srv0srv.h
+++ b/storage/xtradb/include/srv0srv.h
@@ -3,7 +3,7 @@
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2008, 2009, Google Inc.
Copyright (c) 2009, Percona Inc.
-Copyright (c) 2013, 2017, MariaDB Corporation.
+Copyright (c) 2013, 2018, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -400,6 +400,9 @@ extern uint srv_flush_log_at_timeout;
extern char srv_use_global_flush_log_at_trx_commit;
extern char srv_adaptive_flushing;
+/* Default encryption key_id */
+extern uint srv_default_encryption_key_id;
+
#ifdef WITH_INNODB_DISALLOW_WRITES
/* When this event is reset we do not allow any file writes to take place. */
extern os_event_t srv_allow_writes_event;
diff --git a/storage/xtradb/srv/srv0srv.cc b/storage/xtradb/srv/srv0srv.cc
index 0133b17fada..b6e0ea1e937 100644
--- a/storage/xtradb/srv/srv0srv.cc
+++ b/storage/xtradb/srv/srv0srv.cc
@@ -3,7 +3,7 @@
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, 2009 Google Inc.
Copyright (c) 2009, Percona Inc.
-Copyright (c) 2013, 2017, MariaDB Corporation.
+Copyright (c) 2013, 2018, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -254,6 +254,9 @@ UNIV_INTERN ulong srv_page_size = UNIV_PAGE_SIZE_DEF;
UNIV_INTERN ulong srv_page_size_shift = UNIV_PAGE_SIZE_SHIFT_DEF;
UNIV_INTERN char srv_use_global_flush_log_at_trx_commit = TRUE;
+/* Default encryption key_id */
+UNIV_INTERN uint srv_default_encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY;
+
/* Try to flush dirty pages so as to avoid IO bursts at
the checkpoints. */
UNIV_INTERN char srv_adaptive_flushing = TRUE;
1
0
[Commits] 2ecffc79fa0: MDEV-11167: InnoDB: Warning: using a partial-field key prefix in search, results in assertion failure or "Can't find record" error
by Oleksandr Byelkin 07 Nov '18
by Oleksandr Byelkin 07 Nov '18
07 Nov '18
revision-id: 2ecffc79fa0569f93003b2e34d8df7e7643c203d (mariadb-10.0.37-11-g2ecffc79fa0)
parent(s): 9c026273a923f3433ad622124d7a008ce6b5c487
author: Oleksandr Byelkin
committer: Oleksandr Byelkin
timestamp: 2018-11-07 09:09:52 +0100
message:
MDEV-11167: InnoDB: Warning: using a partial-field key prefix in search, results in assertion failure or "Can't find record" error
Fix ha_rnd_init() argument (we do not doing scan but use rnd_pos)
---
mysql-test/r/partition_innodb.result | 26 ++++++++++++++++++++++++++
mysql-test/t/partition_innodb.test | 30 ++++++++++++++++++++++++++++++
sql/sql_update.cc | 2 +-
3 files changed, 57 insertions(+), 1 deletion(-)
diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result
index f863ec5522a..ee3525cb085 100644
--- a/mysql-test/r/partition_innodb.result
+++ b/mysql-test/r/partition_innodb.result
@@ -890,3 +890,29 @@ ERROR HY000: Table definition has changed, please retry transaction
SELECT b FROM t1 WHERE b = 0;
ERROR HY000: Table definition has changed, please retry transaction
DROP TABLE t1;
+#
+# MDEV-11167: InnoDB: Warning: using a partial-field key prefix
+# in search, results in assertion failure or "Can't find record" error
+#
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
+CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
+INSERT INTO t1 VALUES (1),(2);
+INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
+Warnings:
+Warning 1366 Incorrect integer value: 'three' for column 'b' at row 2
+UPDATE v SET a = NULL ORDER BY a, b;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'foo'
+DROP view v;
+DROP TABLE t1, t2;
+SET @save_isp=@@innodb_stats_persistent;
+SET GLOBAL innodb_stats_persistent= ON;
+CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
+INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
+CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
+UPDATE v SET f2 = NULL;
+ERROR HY000: CHECK OPTION failed 'test.v'
+SET GLOBAL innodb_stats_persistent= @save_isp;
+DROP view v;
+DROP TABLE t;
diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test
index f6faa4cb0e6..5dbe9f467fa 100644
--- a/mysql-test/t/partition_innodb.test
+++ b/mysql-test/t/partition_innodb.test
@@ -996,3 +996,33 @@ SELECT b FROM t1 WHERE b = 0;
SELECT b FROM t1 WHERE b = 0;
--disconnect con1
DROP TABLE t1;
+
+--echo #
+--echo # MDEV-11167: InnoDB: Warning: using a partial-field key prefix
+--echo # in search, results in assertion failure or "Can't find record" error
+--echo #
+
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
+CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
+
+INSERT INTO t1 VALUES (1),(2);
+INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
+UPDATE v SET a = NULL ORDER BY a, b;
+
+DROP view v;
+DROP TABLE t1, t2;
+
+SET @save_isp=@@innodb_stats_persistent;
+SET GLOBAL innodb_stats_persistent= ON;
+
+CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
+INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
+CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
+--error ER_VIEW_CHECK_FAILED
+UPDATE v SET f2 = NULL;
+
+SET GLOBAL innodb_stats_persistent= @save_isp;
+DROP view v;
+DROP TABLE t;
+
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index 592e8158c0d..1972cc82454 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -2309,7 +2309,7 @@ int multi_update::do_updates()
check_opt_it.rewind();
while(TABLE *tbl= check_opt_it++)
{
- if ((local_error= tbl->file->ha_rnd_init(1)))
+ if ((local_error= tbl->file->ha_rnd_init(0)))
{
err_table= tbl;
goto err;
1
0
[Commits] 22517dd: MDEV-16357 LIMIT and ORDER BY clause is ignored on a query with UNION
by IgorBabaev 06 Nov '18
by IgorBabaev 06 Nov '18
06 Nov '18
revision-id: 22517dd937d31d3beb03d01f736a43f86b709d48 (mariadb-10.3.6-197-g22517dd)
parent(s): 563efeceece09154f71da6303244b1df36875428
author: Igor Babaev
committer: Igor Babaev
timestamp: 2018-11-06 09:40:07 -0800
message:
MDEV-16357 LIMIT and ORDER BY clause is ignored on a query with UNION
when using brackets
Do not create master unit for select if it has already one.
---
mysql-test/main/brackets.result | 24 ++++++++++++++++++++++++
mysql-test/main/brackets.test | 18 ++++++++++++++++++
sql/sql_lex.cc | 3 +++
3 files changed, 45 insertions(+)
diff --git a/mysql-test/main/brackets.result b/mysql-test/main/brackets.result
index 479b74b..e789cde 100644
--- a/mysql-test/main/brackets.result
+++ b/mysql-test/main/brackets.result
@@ -219,4 +219,28 @@ select 1 union select 1 union select 1;
((select 1) union (select 1) union (select 1));
1
1
+#
+# MDEV-16357: union in brackets with tail
+# union with tail in brackets
+#
+CREATE TABLE t1 (a int);
+INSERT INTO t1 VALUES(1),(2),(3),(4);
+CREATE TABLE t2 (a int);
+INSERT INTO t2 VALUES (4),(5),(6),(7);
+(SELECT a FROM t1 UNION SELECT a FROM t2) LIMIT 1;
+a
+1
+(SELECT a FROM t1 UNION SELECT a FROM t2) ORDER BY a DESC;
+a
+7
+6
+5
+4
+3
+2
+1
+(SELECT a FROM t1 UNION SELECT a FROM t2 LIMIT 1);
+a
+1
+DROP TABLE t1,t2;
# End of 10.4 tests
diff --git a/mysql-test/main/brackets.test b/mysql-test/main/brackets.test
index 699c70a..0eaa3bf 100644
--- a/mysql-test/main/brackets.test
+++ b/mysql-test/main/brackets.test
@@ -88,5 +88,23 @@ select 1 union select 1 union select 1;
(select 1 union select 1 union select 1);
((select 1) union (select 1) union (select 1));
+--echo #
+--echo # MDEV-16357: union in brackets with tail
+--echo # union with tail in brackets
+--echo #
+
+CREATE TABLE t1 (a int);
+INSERT INTO t1 VALUES(1),(2),(3),(4);
+
+CREATE TABLE t2 (a int);
+INSERT INTO t2 VALUES (4),(5),(6),(7);
+
+(SELECT a FROM t1 UNION SELECT a FROM t2) LIMIT 1;
+(SELECT a FROM t1 UNION SELECT a FROM t2) ORDER BY a DESC;
+
+(SELECT a FROM t1 UNION SELECT a FROM t2 LIMIT 1);
+
+DROP TABLE t1,t2;
+
--echo # End of 10.4 tests
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 4a5aedc..9fdebd6 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -5250,6 +5250,9 @@ LEX::create_unit(SELECT_LEX *first_sel)
SELECT_LEX_UNIT *unit;
DBUG_ENTER("LEX::create_unit");
+ if (first_sel->master_unit())
+ DBUG_RETURN(first_sel->master_unit());
+
if (!(unit= alloc_unit()))
DBUG_RETURN(NULL);
2
1
revision-id: 5b59c7a861ab0f2962057c5d9da418e1a2f9002f (mariadb-10.1.37-7-g5b59c7a861a)
parent(s): 0981a7661b7e34437aff8750ab19b926e573b877
author: Jan Lindström
committer: Jan Lindström
timestamp: 2018-11-06 10:19:16 +0200
message:
After review changes.
---
mysql-test/suite/encryption/r/innodb-encryption-alter.result | 6 +++---
storage/innobase/handler/ha_innodb.cc | 10 +++++-----
storage/xtradb/handler/ha_innodb.cc | 10 +++++-----
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/mysql-test/suite/encryption/r/innodb-encryption-alter.result b/mysql-test/suite/encryption/r/innodb-encryption-alter.result
index 75417074fb0..5245d1da7d0 100644
--- a/mysql-test/suite/encryption/r/innodb-encryption-alter.result
+++ b/mysql-test/suite/encryption/r/innodb-encryption-alter.result
@@ -56,7 +56,7 @@ 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: Incorrect ENCRYPTION_KEY_ID 4 when encryption is disabled
+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
@@ -70,7 +70,7 @@ 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: Incorrect ENCRYPTION_KEY_ID 4 when encryption is disabled
+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;
@@ -84,6 +84,6 @@ 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: Incorrect ENCRYPTION_KEY_ID 4 when encryption is disabled
+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
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index d0d7f2374ba..b3a830e47c3 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -11960,14 +11960,14 @@ ha_innobase::check_table_options(
/* If default encryption is used and encryption is disabled, you may
not use nondefault encryption_key_id as it is not stored anywhere. */
- if (encrypt == FIL_ENCRYPTION_DEFAULT &&
- !srv_encrypt_tables &&
- options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
+ if (encrypt == FIL_ENCRYPTION_DEFAULT
+ && !srv_encrypt_tables
+ && options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
+ compile_time_assert(FIL_DEFAULT_ENCRYPTION_KEY == 1);
push_warning_printf(
thd, Sql_condition::WARN_LEVEL_WARN,
HA_WRONG_CREATE_OPTION,
- "InnoDB: Incorrect ENCRYPTION_KEY_ID %u when encryption is disabled",
- (uint)options->encryption_key_id
+ "InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1"
);
return "ENCRYPTION_KEY_ID";
}
diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc
index c7eb4d28844..05066512db9 100644
--- a/storage/xtradb/handler/ha_innodb.cc
+++ b/storage/xtradb/handler/ha_innodb.cc
@@ -12527,14 +12527,14 @@ ha_innobase::check_table_options(
/* If default encryption is used and encryption is disabled, you may
not use nondefault encryption_key_id as it is not stored anywhere. */
- if (encrypt == FIL_ENCRYPTION_DEFAULT &&
- !srv_encrypt_tables &&
- options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
+ if (encrypt == FIL_ENCRYPTION_DEFAULT
+ && !srv_encrypt_tables
+ && options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) {
+ compile_time_assert(FIL_DEFAULT_ENCRYPTION_KEY == 1);
push_warning_printf(
thd, Sql_condition::WARN_LEVEL_WARN,
HA_WRONG_CREATE_OPTION,
- "InnoDB: Incorrect ENCRYPTION_KEY_ID %u when encryption is disabled",
- (uint)options->encryption_key_id
+ "InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1"
);
return "ENCRYPTION_KEY_ID";
}
1
0
[Commits] b0d21b7: MDEV-14567 Include full name of object in message about incorrect value for column.
by holyfootï¼ askmonty.org 04 Nov '18
by holyfootï¼ askmonty.org 04 Nov '18
04 Nov '18
revision-id: b0d21b7832cea92522d0f8d280ceb8b13b335cbf (mariadb-10.2.18-56-gb0d21b7)
parent(s): 1c6b982e02eeaa75bb6c2f2a3c2b64491dd6d3c8
committer: Alexey Botchkov
timestamp: 2018-11-04 09:14:40 +0400
message:
MDEV-14567 Include full name of object in message about incorrect value for column.
Put the full field name in the ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
error message.
---
mysql-test/r/create.result | 6 +-
mysql-test/r/ctype_big5.result | 128 ++++----
mysql-test/r/ctype_cp932_binlog_stm.result | 128 ++++----
mysql-test/r/ctype_eucjpms.result | 128 ++++----
mysql-test/r/ctype_euckr.result | 140 ++++-----
mysql-test/r/ctype_gb2312.result | 128 ++++----
mysql-test/r/ctype_gbk.result | 454 ++++++++++++++---------------
mysql-test/r/ctype_latin1.result | 8 +-
mysql-test/r/ctype_many.result | 4 +-
mysql-test/r/ctype_recoding.result | 4 +-
sql/field.cc | 32 +-
11 files changed, 593 insertions(+), 567 deletions(-)
diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result
index 2159127..aa75d94 100644
--- a/mysql-test/r/create.result
+++ b/mysql-test/r/create.result
@@ -1225,7 +1225,7 @@ INSERT INTO t3 VALUES (0);
SET sql_mode = TRADITIONAL;
ALTER TABLE t3 ADD INDEX(c1);
-ERROR 22007: Incorrect datetime value: '0000-00-00 00:00:00' for column 'c1' at row 1
+ERROR 22007: Incorrect datetime value: '0000-00-00 00:00:00' for column 'test.#sql-691c_15d.c1' at row 1
# -- Cleanup.
SET sql_mode = '';
@@ -1783,12 +1783,12 @@ NULL 0000-00-00 0000-00-00
drop table t1;
set @@session.sql_mode='STRICT_ALL_TABLES';
create table if not exists t1 (a int, b date, c date) select 1 as b, 2 as c;
-ERROR 22007: Incorrect date value: '1' for column 'b' at row 1
+ERROR 22007: Incorrect date value: '1' for column 'test.t1.b' at row 1
select * from t1;
ERROR 42S02: Table 'test.t1' doesn't exist
create table if not exists t1 (a int, b date, c date)
replace select 1 as b, 2 as c;
-ERROR 22007: Incorrect date value: '1' for column 'b' at row 1
+ERROR 22007: Incorrect date value: '1' for column 'test.t1.b' at row 1
select * from t1;
ERROR 42S02: Table 'test.t1' doesn't exist
create table if not exists t1 (a int, b date, c date)
diff --git a/mysql-test/r/ctype_big5.result b/mysql-test/r/ctype_big5.result
index 2db4da5..1503953 100644
--- a/mysql-test/r/ctype_big5.result
+++ b/mysql-test/r/ctype_big5.result
@@ -565,70 +565,70 @@ COUNT(*)
28672
UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code;
Warnings:
-Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
-Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
-Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
-Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
-Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
-Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
-Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
-Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
-Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
-Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
-Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
-Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
-Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
-Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
-Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
-Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
-Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
-Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
-Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
-Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
-Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
-Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
-Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
-Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
-Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
-Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
-Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
-Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
-Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
-Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
-Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
-Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
-Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
-Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
-Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
-Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
-Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
-Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
-Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
-Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
-Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
-Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
-Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
-Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
-Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
-Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
-Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
-Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
-Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
-Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
-Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
-Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
-Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
-Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
-Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
-Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
-Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
-Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
-Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
-Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
-Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
-Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
-Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+Warning 1366 Incorrect string value: '\x80 ' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'test.t1.a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'test.t1.a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'test.t1.a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'test.t1.a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'test.t1.a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'test.t1.a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'test.t1.a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'test.t1.a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'test.t1.a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'test.t1.a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'test.t1.a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'test.t1.a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'test.t1.a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'test.t1.a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'test.t1.a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'test.t1.a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'test.t1.a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'test.t1.a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'test.t1.a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'test.t1.a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'test.t1.a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'test.t1.a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'test.t1.a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'test.t1.a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'test.t1.a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'test.t1.a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'test.t1.a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'test.t1.a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'test.t1.a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'test.t1.a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'test.t1.a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t1.a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'test.t1.a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'test.t1.a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'test.t1.a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'test.t1.a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'test.t1.a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'test.t1.a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'test.t1.a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'test.t1.a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'test.t1.a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'test.t1.a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'test.t1.a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'test.t1.a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'test.t1.a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'test.t1.a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'test.t1.a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'test.t1.a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'test.t1.a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'test.t1.a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'test.t1.a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'test.t1.a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'test.t1.a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'test.t1.a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'test.t1.a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'test.t1.a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'test.t1.a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'test.t1.a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'test.t1.a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'test.t1.a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'test.t1.a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'test.t1.a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'test.t1.a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'?';
COUNT(*)
13973
diff --git a/mysql-test/r/ctype_cp932_binlog_stm.result b/mysql-test/r/ctype_cp932_binlog_stm.result
index f49400b..ecb106e 100644
--- a/mysql-test/r/ctype_cp932_binlog_stm.result
+++ b/mysql-test/r/ctype_cp932_binlog_stm.result
@@ -98,70 +98,70 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code;
Warnings:
-Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
-Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
-Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
-Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
-Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
-Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
-Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
-Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
-Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
-Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
-Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
-Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
-Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
-Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
-Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
-Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
-Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
-Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
-Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
-Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
-Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
-Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
-Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
-Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
-Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
-Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
-Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
-Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
-Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
-Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
-Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
-Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
-Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
-Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
-Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
-Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
-Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
-Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
-Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
-Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
-Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
-Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
-Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
-Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
-Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
-Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
-Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
-Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
-Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
-Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
-Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
-Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
-Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
-Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
-Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
-Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
-Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
-Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
-Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
-Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
-Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
-Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
-Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+Warning 1366 Incorrect string value: '\x80 ' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'test.t1.a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'test.t1.a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'test.t1.a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'test.t1.a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'test.t1.a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'test.t1.a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'test.t1.a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'test.t1.a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'test.t1.a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'test.t1.a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'test.t1.a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'test.t1.a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'test.t1.a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'test.t1.a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'test.t1.a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'test.t1.a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'test.t1.a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'test.t1.a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'test.t1.a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'test.t1.a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'test.t1.a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'test.t1.a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'test.t1.a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'test.t1.a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'test.t1.a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'test.t1.a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'test.t1.a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'test.t1.a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'test.t1.a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'test.t1.a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'test.t1.a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t1.a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'test.t1.a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'test.t1.a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'test.t1.a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'test.t1.a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'test.t1.a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'test.t1.a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'test.t1.a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'test.t1.a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'test.t1.a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'test.t1.a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'test.t1.a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'test.t1.a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'test.t1.a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'test.t1.a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'test.t1.a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'test.t1.a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'test.t1.a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'test.t1.a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'test.t1.a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'test.t1.a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'test.t1.a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'test.t1.a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'test.t1.a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'test.t1.a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'test.t1.a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'test.t1.a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'test.t1.a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'test.t1.a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'test.t1.a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'test.t1.a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'test.t1.a' at row 64
SELECT COUNT(*) FROM t1;
COUNT(*)
14623
diff --git a/mysql-test/r/ctype_eucjpms.result b/mysql-test/r/ctype_eucjpms.result
index 507d002..52dee73 100644
--- a/mysql-test/r/ctype_eucjpms.result
+++ b/mysql-test/r/ctype_eucjpms.result
@@ -10042,70 +10042,70 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code;
Warnings:
-Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
-Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
-Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
-Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
-Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
-Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
-Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
-Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
-Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
-Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
-Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
-Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
-Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
-Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
-Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
-Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
-Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
-Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
-Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
-Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
-Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
-Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
-Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
-Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
-Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
-Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
-Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
-Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
-Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
-Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
-Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
-Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
-Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
-Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
-Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
-Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
-Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
-Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
-Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
-Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
-Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
-Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
-Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
-Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
-Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
-Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
-Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
-Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
-Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
-Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
-Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
-Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
-Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
-Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
-Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
-Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
-Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
-Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
-Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
-Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
-Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
-Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
-Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+Warning 1366 Incorrect string value: '\x80 ' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'test.t1.a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'test.t1.a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'test.t1.a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'test.t1.a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'test.t1.a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'test.t1.a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'test.t1.a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'test.t1.a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'test.t1.a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'test.t1.a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'test.t1.a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'test.t1.a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'test.t1.a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'test.t1.a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'test.t1.a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'test.t1.a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'test.t1.a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'test.t1.a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'test.t1.a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'test.t1.a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'test.t1.a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'test.t1.a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'test.t1.a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'test.t1.a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'test.t1.a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'test.t1.a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'test.t1.a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'test.t1.a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'test.t1.a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'test.t1.a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'test.t1.a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t1.a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'test.t1.a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'test.t1.a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'test.t1.a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'test.t1.a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'test.t1.a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'test.t1.a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'test.t1.a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'test.t1.a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'test.t1.a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'test.t1.a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'test.t1.a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'test.t1.a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'test.t1.a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'test.t1.a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'test.t1.a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'test.t1.a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'test.t1.a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'test.t1.a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'test.t1.a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'test.t1.a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'test.t1.a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'test.t1.a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'test.t1.a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'test.t1.a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'test.t1.a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'test.t1.a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'test.t1.a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'test.t1.a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'test.t1.a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'test.t1.a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'test.t1.a' at row 64
SELECT COUNT(*) FROM t1;
COUNT(*)
56959
diff --git a/mysql-test/r/ctype_euckr.result b/mysql-test/r/ctype_euckr.result
index cc50ddd..31eda4c 100644
--- a/mysql-test/r/ctype_euckr.result
+++ b/mysql-test/r/ctype_euckr.result
@@ -389,22 +389,22 @@ insert into t1 values (0xA181);
insert into t1 values (0xA1FE);
insert ignore into t1 values (0xA140);
Warnings:
-Warning 1366 Incorrect string value: '\xA1@' for column 's1' at row 1
+Warning 1366 Incorrect string value: '\xA1@' for column 'test.t1.s1' at row 1
insert ignore into t1 values (0xA15B);
Warnings:
-Warning 1366 Incorrect string value: '\xA1[' for column 's1' at row 1
+Warning 1366 Incorrect string value: '\xA1[' for column 'test.t1.s1' at row 1
insert ignore into t1 values (0xA160);
Warnings:
-Warning 1366 Incorrect string value: '\xA1`' for column 's1' at row 1
+Warning 1366 Incorrect string value: '\xA1`' for column 'test.t1.s1' at row 1
insert ignore into t1 values (0xA17B);
Warnings:
-Warning 1366 Incorrect string value: '\xA1{' for column 's1' at row 1
+Warning 1366 Incorrect string value: '\xA1{' for column 'test.t1.s1' at row 1
insert ignore into t1 values (0xA180);
Warnings:
-Warning 1366 Incorrect string value: '\xA1\x80' for column 's1' at row 1
+Warning 1366 Incorrect string value: '\xA1\x80' for column 'test.t1.s1' at row 1
insert ignore into t1 values (0xA1FF);
Warnings:
-Warning 1366 Incorrect string value: '\xA1\xFF' for column 's1' at row 1
+Warning 1366 Incorrect string value: '\xA1\xFF' for column 'test.t1.s1' at row 1
select hex(s1), hex(convert(s1 using utf8)) from t1 order by binary s1;
hex(s1) hex(convert(s1 using utf8))
3F3F 3F3F
@@ -24428,70 +24428,70 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code;
Warnings:
-Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
-Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
-Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
-Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
-Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
-Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
-Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
-Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
-Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
-Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
-Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
-Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
-Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
-Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
-Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
-Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
-Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
-Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
-Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
-Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
-Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
-Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
-Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
-Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
-Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
-Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
-Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
-Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
-Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
-Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
-Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
-Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
-Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
-Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
-Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
-Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
-Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
-Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
-Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
-Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
-Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
-Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
-Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
-Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
-Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
-Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
-Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
-Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
-Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
-Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
-Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
-Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
-Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
-Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
-Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
-Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
-Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
-Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
-Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
-Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
-Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
-Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
-Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+Warning 1366 Incorrect string value: '\x80 ' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'test.t1.a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'test.t1.a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'test.t1.a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'test.t1.a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'test.t1.a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'test.t1.a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'test.t1.a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'test.t1.a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'test.t1.a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'test.t1.a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'test.t1.a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'test.t1.a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'test.t1.a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'test.t1.a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'test.t1.a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'test.t1.a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'test.t1.a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'test.t1.a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'test.t1.a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'test.t1.a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'test.t1.a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'test.t1.a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'test.t1.a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'test.t1.a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'test.t1.a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'test.t1.a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'test.t1.a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'test.t1.a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'test.t1.a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'test.t1.a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'test.t1.a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t1.a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'test.t1.a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'test.t1.a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'test.t1.a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'test.t1.a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'test.t1.a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'test.t1.a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'test.t1.a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'test.t1.a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'test.t1.a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'test.t1.a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'test.t1.a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'test.t1.a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'test.t1.a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'test.t1.a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'test.t1.a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'test.t1.a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'test.t1.a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'test.t1.a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'test.t1.a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'test.t1.a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'test.t1.a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'test.t1.a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'test.t1.a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'test.t1.a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'test.t1.a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'test.t1.a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'test.t1.a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'test.t1.a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'test.t1.a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'test.t1.a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'test.t1.a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'?';
COUNT(*)
22428
diff --git a/mysql-test/r/ctype_gb2312.result b/mysql-test/r/ctype_gb2312.result
index c3c2eee..ccfdd33 100644
--- a/mysql-test/r/ctype_gb2312.result
+++ b/mysql-test/r/ctype_gb2312.result
@@ -489,70 +489,70 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code;
Warnings:
-Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
-Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
-Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
-Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
-Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
-Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
-Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
-Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
-Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
-Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
-Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
-Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
-Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
-Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
-Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
-Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
-Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
-Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
-Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
-Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
-Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
-Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
-Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
-Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
-Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
-Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
-Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
-Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
-Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
-Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
-Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
-Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
-Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
-Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
-Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
-Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
-Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
-Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
-Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
-Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
-Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
-Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
-Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
-Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
-Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
-Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
-Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
-Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
-Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
-Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
-Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
-Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
-Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
-Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
-Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
-Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
-Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
-Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
-Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
-Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
-Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
-Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
-Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+Warning 1366 Incorrect string value: '\x80 ' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'test.t1.a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'test.t1.a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'test.t1.a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'test.t1.a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'test.t1.a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'test.t1.a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'test.t1.a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'test.t1.a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'test.t1.a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'test.t1.a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'test.t1.a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'test.t1.a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'test.t1.a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'test.t1.a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'test.t1.a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'test.t1.a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'test.t1.a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'test.t1.a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'test.t1.a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'test.t1.a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'test.t1.a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'test.t1.a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'test.t1.a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'test.t1.a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'test.t1.a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'test.t1.a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'test.t1.a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'test.t1.a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'test.t1.a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'test.t1.a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'test.t1.a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t1.a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'test.t1.a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'test.t1.a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'test.t1.a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'test.t1.a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'test.t1.a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'test.t1.a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'test.t1.a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'test.t1.a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'test.t1.a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'test.t1.a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'test.t1.a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'test.t1.a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'test.t1.a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'test.t1.a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'test.t1.a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'test.t1.a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'test.t1.a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'test.t1.a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'test.t1.a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'test.t1.a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'test.t1.a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'test.t1.a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'test.t1.a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'test.t1.a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'test.t1.a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'test.t1.a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'test.t1.a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'test.t1.a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'test.t1.a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'test.t1.a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'test.t1.a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'?';
COUNT(*)
8178
diff --git a/mysql-test/r/ctype_gbk.result b/mysql-test/r/ctype_gbk.result
index 4e5c969..408e79e 100644
--- a/mysql-test/r/ctype_gbk.result
+++ b/mysql-test/r/ctype_gbk.result
@@ -511,70 +511,70 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code;
Warnings:
-Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
-Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
-Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
-Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
-Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
-Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
-Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
-Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
-Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
-Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
-Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
-Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
-Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
-Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
-Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
-Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
-Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
-Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
-Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
-Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
-Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
-Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
-Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
-Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
-Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
-Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
-Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
-Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
-Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
-Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
-Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
-Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
-Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
-Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
-Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
-Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
-Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
-Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
-Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
-Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
-Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
-Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
-Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
-Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
-Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
-Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
-Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
-Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
-Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
-Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
-Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
-Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
-Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
-Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
-Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
-Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
-Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
-Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
-Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
-Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
-Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
-Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
-Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
+Warning 1366 Incorrect string value: '\x80 ' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\x80!' for column 'test.t1.a' at row 2
+Warning 1366 Incorrect string value: '\x80"' for column 'test.t1.a' at row 3
+Warning 1366 Incorrect string value: '\x80#' for column 'test.t1.a' at row 4
+Warning 1366 Incorrect string value: '\x80$' for column 'test.t1.a' at row 5
+Warning 1366 Incorrect string value: '\x80%' for column 'test.t1.a' at row 6
+Warning 1366 Incorrect string value: '\x80&' for column 'test.t1.a' at row 7
+Warning 1366 Incorrect string value: '\x80'' for column 'test.t1.a' at row 8
+Warning 1366 Incorrect string value: '\x80(' for column 'test.t1.a' at row 9
+Warning 1366 Incorrect string value: '\x80)' for column 'test.t1.a' at row 10
+Warning 1366 Incorrect string value: '\x80*' for column 'test.t1.a' at row 11
+Warning 1366 Incorrect string value: '\x80+' for column 'test.t1.a' at row 12
+Warning 1366 Incorrect string value: '\x80,' for column 'test.t1.a' at row 13
+Warning 1366 Incorrect string value: '\x80-' for column 'test.t1.a' at row 14
+Warning 1366 Incorrect string value: '\x80.' for column 'test.t1.a' at row 15
+Warning 1366 Incorrect string value: '\x80/' for column 'test.t1.a' at row 16
+Warning 1366 Incorrect string value: '\x800' for column 'test.t1.a' at row 17
+Warning 1366 Incorrect string value: '\x801' for column 'test.t1.a' at row 18
+Warning 1366 Incorrect string value: '\x802' for column 'test.t1.a' at row 19
+Warning 1366 Incorrect string value: '\x803' for column 'test.t1.a' at row 20
+Warning 1366 Incorrect string value: '\x804' for column 'test.t1.a' at row 21
+Warning 1366 Incorrect string value: '\x805' for column 'test.t1.a' at row 22
+Warning 1366 Incorrect string value: '\x806' for column 'test.t1.a' at row 23
+Warning 1366 Incorrect string value: '\x807' for column 'test.t1.a' at row 24
+Warning 1366 Incorrect string value: '\x808' for column 'test.t1.a' at row 25
+Warning 1366 Incorrect string value: '\x809' for column 'test.t1.a' at row 26
+Warning 1366 Incorrect string value: '\x80:' for column 'test.t1.a' at row 27
+Warning 1366 Incorrect string value: '\x80;' for column 'test.t1.a' at row 28
+Warning 1366 Incorrect string value: '\x80<' for column 'test.t1.a' at row 29
+Warning 1366 Incorrect string value: '\x80=' for column 'test.t1.a' at row 30
+Warning 1366 Incorrect string value: '\x80>' for column 'test.t1.a' at row 31
+Warning 1366 Incorrect string value: '\x80?' for column 'test.t1.a' at row 32
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t1.a' at row 33
+Warning 1366 Incorrect string value: '\x80A' for column 'test.t1.a' at row 34
+Warning 1366 Incorrect string value: '\x80B' for column 'test.t1.a' at row 35
+Warning 1366 Incorrect string value: '\x80C' for column 'test.t1.a' at row 36
+Warning 1366 Incorrect string value: '\x80D' for column 'test.t1.a' at row 37
+Warning 1366 Incorrect string value: '\x80E' for column 'test.t1.a' at row 38
+Warning 1366 Incorrect string value: '\x80F' for column 'test.t1.a' at row 39
+Warning 1366 Incorrect string value: '\x80G' for column 'test.t1.a' at row 40
+Warning 1366 Incorrect string value: '\x80H' for column 'test.t1.a' at row 41
+Warning 1366 Incorrect string value: '\x80I' for column 'test.t1.a' at row 42
+Warning 1366 Incorrect string value: '\x80J' for column 'test.t1.a' at row 43
+Warning 1366 Incorrect string value: '\x80K' for column 'test.t1.a' at row 44
+Warning 1366 Incorrect string value: '\x80L' for column 'test.t1.a' at row 45
+Warning 1366 Incorrect string value: '\x80M' for column 'test.t1.a' at row 46
+Warning 1366 Incorrect string value: '\x80N' for column 'test.t1.a' at row 47
+Warning 1366 Incorrect string value: '\x80O' for column 'test.t1.a' at row 48
+Warning 1366 Incorrect string value: '\x80P' for column 'test.t1.a' at row 49
+Warning 1366 Incorrect string value: '\x80Q' for column 'test.t1.a' at row 50
+Warning 1366 Incorrect string value: '\x80R' for column 'test.t1.a' at row 51
+Warning 1366 Incorrect string value: '\x80S' for column 'test.t1.a' at row 52
+Warning 1366 Incorrect string value: '\x80T' for column 'test.t1.a' at row 53
+Warning 1366 Incorrect string value: '\x80U' for column 'test.t1.a' at row 54
+Warning 1366 Incorrect string value: '\x80V' for column 'test.t1.a' at row 55
+Warning 1366 Incorrect string value: '\x80W' for column 'test.t1.a' at row 56
+Warning 1366 Incorrect string value: '\x80X' for column 'test.t1.a' at row 57
+Warning 1366 Incorrect string value: '\x80Y' for column 'test.t1.a' at row 58
+Warning 1366 Incorrect string value: '\x80Z' for column 'test.t1.a' at row 59
+Warning 1366 Incorrect string value: '\x80[' for column 'test.t1.a' at row 60
+Warning 1366 Incorrect string value: '\x80\' for column 'test.t1.a' at row 61
+Warning 1366 Incorrect string value: '\x80]' for column 'test.t1.a' at row 62
+Warning 1366 Incorrect string value: '\x80^' for column 'test.t1.a' at row 63
+Warning 1366 Incorrect string value: '\x80_' for column 'test.t1.a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'?';
COUNT(*)
23940
@@ -5192,25 +5192,25 @@ INSERT IGNORE INTO t3 (b,c,comment) SELECT b,b,comment FROM t2
WHERE type1='tail' OR type1='bad' OR type2='bad'
ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 1
-Warning 1366 Incorrect string value: '\x80@' for column 'c' at row 2
-Warning 1366 Incorrect string value: '\x80\x80' for column 'c' at row 3
-Warning 1366 Incorrect string value: '\x80\x81' for column 'c' at row 4
-Warning 1366 Incorrect string value: '\x80\xA1@' for column 'c' at row 5
-Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'c' at row 6
-Warning 1366 Incorrect string value: '\x80\xFE@' for column 'c' at row 7
-Warning 1366 Incorrect string value: '\x80\xFF' for column 'c' at row 8
-Warning 1366 Incorrect string value: '\x81\xFF' for column 'c' at row 9
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 10
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 11
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 12
-Warning 1366 Incorrect string value: '\xFF@' for column 'c' at row 13
-Warning 1366 Incorrect string value: '\xFF\x80' for column 'c' at row 14
-Warning 1366 Incorrect string value: '\xFF\x81' for column 'c' at row 15
-Warning 1366 Incorrect string value: '\xFF\xA1@' for column 'c' at row 16
-Warning 1366 Incorrect string value: '\xFF\xA1\xA3' for column 'c' at row 17
-Warning 1366 Incorrect string value: '\xFF\xFE@' for column 'c' at row 18
-Warning 1366 Incorrect string value: '\xFF\xFF' for column 'c' at row 19
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 1
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t3.c' at row 2
+Warning 1366 Incorrect string value: '\x80\x80' for column 'test.t3.c' at row 3
+Warning 1366 Incorrect string value: '\x80\x81' for column 'test.t3.c' at row 4
+Warning 1366 Incorrect string value: '\x80\xA1@' for column 'test.t3.c' at row 5
+Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'test.t3.c' at row 6
+Warning 1366 Incorrect string value: '\x80\xFE@' for column 'test.t3.c' at row 7
+Warning 1366 Incorrect string value: '\x80\xFF' for column 'test.t3.c' at row 8
+Warning 1366 Incorrect string value: '\x81\xFF' for column 'test.t3.c' at row 9
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 10
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 11
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 12
+Warning 1366 Incorrect string value: '\xFF@' for column 'test.t3.c' at row 13
+Warning 1366 Incorrect string value: '\xFF\x80' for column 'test.t3.c' at row 14
+Warning 1366 Incorrect string value: '\xFF\x81' for column 'test.t3.c' at row 15
+Warning 1366 Incorrect string value: '\xFF\xA1@' for column 'test.t3.c' at row 16
+Warning 1366 Incorrect string value: '\xFF\xA1\xA3' for column 'test.t3.c' at row 17
+Warning 1366 Incorrect string value: '\xFF\xFE@' for column 'test.t3.c' at row 18
+Warning 1366 Incorrect string value: '\xFF\xFF' for column 'test.t3.c' at row 19
SELECT COUNT(*) FROM t3;
COUNT(*)
19
@@ -5248,14 +5248,14 @@ WHERE (FIND_IN_SET('mb2',type1) OR FIND_IN_SET('ascii',type1))
AND (FIND_IN_SET('tail',type2) AND NOT FIND_IN_SET('ascii',type2))
ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 1
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 2
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 3
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 4
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 5
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 6
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 7
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 8
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 1
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 2
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 3
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 4
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 5
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 6
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 7
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 8
SELECT COUNT(*) FROM t3;
COUNT(*)
8
@@ -5278,7 +5278,7 @@ DELETE FROM t3;
#
INSERT INTO t3 (b,c,comment) SELECT b,b,comment FROM t2 ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\xA3' for column 'c' at row 5
+Warning 1366 Incorrect string value: '\xA3' for column 'test.t3.c' at row 5
SELECT COUNT(*) FROM t3;
COUNT(*)
6
@@ -5401,70 +5401,70 @@ INSERT IGNORE INTO t3 (b,c,comment) SELECT b,b,comment FROM t2
WHERE type1='tail' OR type1='bad' OR type2='bad' OR type3='bad'
ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 1
-Warning 1366 Incorrect string value: '\x80\xFF' for column 'c' at row 2
-Warning 1366 Incorrect string value: '\x81\xFF' for column 'c' at row 3
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 4
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 5
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 6
-Warning 1366 Incorrect string value: '\xFF@' for column 'c' at row 7
-Warning 1366 Incorrect string value: '\xFF\x80' for column 'c' at row 8
-Warning 1366 Incorrect string value: '\xFF\x81' for column 'c' at row 9
-Warning 1366 Incorrect string value: '\xFF\xA1@' for column 'c' at row 10
-Warning 1366 Incorrect string value: '\xFF\xA1\xA3' for column 'c' at row 11
-Warning 1366 Incorrect string value: '\xFF\xFE@' for column 'c' at row 12
-Warning 1366 Incorrect string value: '\xFF\xFF' for column 'c' at row 13
-Warning 1366 Incorrect string value: '\x80@@' for column 'c' at row 14
-Warning 1366 Incorrect string value: '\x80@\x80' for column 'c' at row 15
-Warning 1366 Incorrect string value: '\x80@\x81' for column 'c' at row 16
-Warning 1366 Incorrect string value: '\x80@\xA1@' for column 'c' at row 17
-Warning 1366 Incorrect string value: '\x80@\xA1\xA3' for column 'c' at row 18
-Warning 1366 Incorrect string value: '\x80@\xFE@' for column 'c' at row 19
-Warning 1366 Incorrect string value: '\x80@\xFF' for column 'c' at row 20
-Warning 1366 Incorrect string value: '\x80\x80@' for column 'c' at row 21
-Warning 1366 Incorrect string value: '\x80\x80\x80' for column 'c' at row 22
-Warning 1366 Incorrect string value: '\x80\x80\x81' for column 'c' at row 23
-Warning 1366 Incorrect string value: '\x80\x80\xA1@' for column 'c' at row 24
-Warning 1366 Incorrect string value: '\x80\x80\xA1\xA3' for column 'c' at row 25
-Warning 1366 Incorrect string value: '\x80\x80\xFE@' for column 'c' at row 26
-Warning 1366 Incorrect string value: '\x80\x80\xFF' for column 'c' at row 27
-Warning 1366 Incorrect string value: '\x80\x81@' for column 'c' at row 28
-Warning 1366 Incorrect string value: '\x80\x81\x80' for column 'c' at row 29
-Warning 1366 Incorrect string value: '\x80\x81\x81' for column 'c' at row 30
-Warning 1366 Incorrect string value: '\x80\x81\xA1@' for column 'c' at row 31
-Warning 1366 Incorrect string value: '\x80\x81\xA1\xA3' for column 'c' at row 32
-Warning 1366 Incorrect string value: '\x80\x81\xFE@' for column 'c' at row 33
-Warning 1366 Incorrect string value: '\x80\x81\xFF' for column 'c' at row 34
-Warning 1366 Incorrect string value: '\x80\xA1@@' for column 'c' at row 35
-Warning 1366 Incorrect string value: '\x80\xA1@\x80' for column 'c' at row 36
-Warning 1366 Incorrect string value: '\x80\xA1@\x81' for column 'c' at row 37
-Warning 1366 Incorrect string value: '\x80\xA1@\xA1@' for column 'c' at row 38
-Warning 1366 Incorrect string value: '\x80\xA1@\xA1\xA3' for column 'c' at row 39
-Warning 1366 Incorrect string value: '\x80\xA1@\xFE@' for column 'c' at row 40
-Warning 1366 Incorrect string value: '\x80\xA1@\xFF' for column 'c' at row 41
-Warning 1366 Incorrect string value: '\x80\xA1\xA3@' for column 'c' at row 42
-Warning 1366 Incorrect string value: '\x80\xA1\xA3\x80' for column 'c' at row 43
-Warning 1366 Incorrect string value: '\x80\xA1\xA3\x81' for column 'c' at row 44
-Warning 1366 Incorrect string value: '\x80\xA1\xA3\xA1@' for column 'c' at row 45
-Warning 1366 Incorrect string value: '\x80\xA1\xA3\xA1\xA3' for column 'c' at row 46
-Warning 1366 Incorrect string value: '\x80\xA1\xA3\xFE@' for column 'c' at row 47
-Warning 1366 Incorrect string value: '\x80\xA1\xA3\xFF' for column 'c' at row 48
-Warning 1366 Incorrect string value: '\x80\xFE@@' for column 'c' at row 49
-Warning 1366 Incorrect string value: '\x80\xFE@\x80' for column 'c' at row 50
-Warning 1366 Incorrect string value: '\x80\xFE@\x81' for column 'c' at row 51
-Warning 1366 Incorrect string value: '\x80\xFE@\xA1@' for column 'c' at row 52
-Warning 1366 Incorrect string value: '\x80\xFE@\xA1\xA3' for column 'c' at row 53
-Warning 1366 Incorrect string value: '\x80\xFE@\xFE@' for column 'c' at row 54
-Warning 1366 Incorrect string value: '\x80\xFE@\xFF' for column 'c' at row 55
-Warning 1366 Incorrect string value: '\x80\xFF@' for column 'c' at row 56
-Warning 1366 Incorrect string value: '\x80\xFF\x80' for column 'c' at row 57
-Warning 1366 Incorrect string value: '\x80\xFF\x81' for column 'c' at row 58
-Warning 1366 Incorrect string value: '\x80\xFF\xA1@' for column 'c' at row 59
-Warning 1366 Incorrect string value: '\x80\xFF\xA1\xA3' for column 'c' at row 60
-Warning 1366 Incorrect string value: '\x80\xFF\xFE@' for column 'c' at row 61
-Warning 1366 Incorrect string value: '\x80\xFF\xFF' for column 'c' at row 62
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 63
-Warning 1366 Incorrect string value: '\xFF' for column 'c' at row 64
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 1
+Warning 1366 Incorrect string value: '\x80\xFF' for column 'test.t3.c' at row 2
+Warning 1366 Incorrect string value: '\x81\xFF' for column 'test.t3.c' at row 3
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 4
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 5
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 6
+Warning 1366 Incorrect string value: '\xFF@' for column 'test.t3.c' at row 7
+Warning 1366 Incorrect string value: '\xFF\x80' for column 'test.t3.c' at row 8
+Warning 1366 Incorrect string value: '\xFF\x81' for column 'test.t3.c' at row 9
+Warning 1366 Incorrect string value: '\xFF\xA1@' for column 'test.t3.c' at row 10
+Warning 1366 Incorrect string value: '\xFF\xA1\xA3' for column 'test.t3.c' at row 11
+Warning 1366 Incorrect string value: '\xFF\xFE@' for column 'test.t3.c' at row 12
+Warning 1366 Incorrect string value: '\xFF\xFF' for column 'test.t3.c' at row 13
+Warning 1366 Incorrect string value: '\x80@@' for column 'test.t3.c' at row 14
+Warning 1366 Incorrect string value: '\x80@\x80' for column 'test.t3.c' at row 15
+Warning 1366 Incorrect string value: '\x80@\x81' for column 'test.t3.c' at row 16
+Warning 1366 Incorrect string value: '\x80@\xA1@' for column 'test.t3.c' at row 17
+Warning 1366 Incorrect string value: '\x80@\xA1\xA3' for column 'test.t3.c' at row 18
+Warning 1366 Incorrect string value: '\x80@\xFE@' for column 'test.t3.c' at row 19
+Warning 1366 Incorrect string value: '\x80@\xFF' for column 'test.t3.c' at row 20
+Warning 1366 Incorrect string value: '\x80\x80@' for column 'test.t3.c' at row 21
+Warning 1366 Incorrect string value: '\x80\x80\x80' for column 'test.t3.c' at row 22
+Warning 1366 Incorrect string value: '\x80\x80\x81' for column 'test.t3.c' at row 23
+Warning 1366 Incorrect string value: '\x80\x80\xA1@' for column 'test.t3.c' at row 24
+Warning 1366 Incorrect string value: '\x80\x80\xA1\xA3' for column 'test.t3.c' at row 25
+Warning 1366 Incorrect string value: '\x80\x80\xFE@' for column 'test.t3.c' at row 26
+Warning 1366 Incorrect string value: '\x80\x80\xFF' for column 'test.t3.c' at row 27
+Warning 1366 Incorrect string value: '\x80\x81@' for column 'test.t3.c' at row 28
+Warning 1366 Incorrect string value: '\x80\x81\x80' for column 'test.t3.c' at row 29
+Warning 1366 Incorrect string value: '\x80\x81\x81' for column 'test.t3.c' at row 30
+Warning 1366 Incorrect string value: '\x80\x81\xA1@' for column 'test.t3.c' at row 31
+Warning 1366 Incorrect string value: '\x80\x81\xA1\xA3' for column 'test.t3.c' at row 32
+Warning 1366 Incorrect string value: '\x80\x81\xFE@' for column 'test.t3.c' at row 33
+Warning 1366 Incorrect string value: '\x80\x81\xFF' for column 'test.t3.c' at row 34
+Warning 1366 Incorrect string value: '\x80\xA1@@' for column 'test.t3.c' at row 35
+Warning 1366 Incorrect string value: '\x80\xA1@\x80' for column 'test.t3.c' at row 36
+Warning 1366 Incorrect string value: '\x80\xA1@\x81' for column 'test.t3.c' at row 37
+Warning 1366 Incorrect string value: '\x80\xA1@\xA1@' for column 'test.t3.c' at row 38
+Warning 1366 Incorrect string value: '\x80\xA1@\xA1\xA3' for column 'test.t3.c' at row 39
+Warning 1366 Incorrect string value: '\x80\xA1@\xFE@' for column 'test.t3.c' at row 40
+Warning 1366 Incorrect string value: '\x80\xA1@\xFF' for column 'test.t3.c' at row 41
+Warning 1366 Incorrect string value: '\x80\xA1\xA3@' for column 'test.t3.c' at row 42
+Warning 1366 Incorrect string value: '\x80\xA1\xA3\x80' for column 'test.t3.c' at row 43
+Warning 1366 Incorrect string value: '\x80\xA1\xA3\x81' for column 'test.t3.c' at row 44
+Warning 1366 Incorrect string value: '\x80\xA1\xA3\xA1@' for column 'test.t3.c' at row 45
+Warning 1366 Incorrect string value: '\x80\xA1\xA3\xA1\xA3' for column 'test.t3.c' at row 46
+Warning 1366 Incorrect string value: '\x80\xA1\xA3\xFE@' for column 'test.t3.c' at row 47
+Warning 1366 Incorrect string value: '\x80\xA1\xA3\xFF' for column 'test.t3.c' at row 48
+Warning 1366 Incorrect string value: '\x80\xFE@@' for column 'test.t3.c' at row 49
+Warning 1366 Incorrect string value: '\x80\xFE@\x80' for column 'test.t3.c' at row 50
+Warning 1366 Incorrect string value: '\x80\xFE@\x81' for column 'test.t3.c' at row 51
+Warning 1366 Incorrect string value: '\x80\xFE@\xA1@' for column 'test.t3.c' at row 52
+Warning 1366 Incorrect string value: '\x80\xFE@\xA1\xA3' for column 'test.t3.c' at row 53
+Warning 1366 Incorrect string value: '\x80\xFE@\xFE@' for column 'test.t3.c' at row 54
+Warning 1366 Incorrect string value: '\x80\xFE@\xFF' for column 'test.t3.c' at row 55
+Warning 1366 Incorrect string value: '\x80\xFF@' for column 'test.t3.c' at row 56
+Warning 1366 Incorrect string value: '\x80\xFF\x80' for column 'test.t3.c' at row 57
+Warning 1366 Incorrect string value: '\x80\xFF\x81' for column 'test.t3.c' at row 58
+Warning 1366 Incorrect string value: '\x80\xFF\xA1@' for column 'test.t3.c' at row 59
+Warning 1366 Incorrect string value: '\x80\xFF\xA1\xA3' for column 'test.t3.c' at row 60
+Warning 1366 Incorrect string value: '\x80\xFF\xFE@' for column 'test.t3.c' at row 61
+Warning 1366 Incorrect string value: '\x80\xFF\xFF' for column 'test.t3.c' at row 62
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 63
+Warning 1366 Incorrect string value: '\xFF' for column 'test.t3.c' at row 64
SELECT COUNT(*) FROM t3;
COUNT(*)
163
@@ -5646,30 +5646,30 @@ WHERE (FIND_IN_SET('mb2',type1) OR FIND_IN_SET('ascii',type1))
AND type2='tail'
ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\x80@' for column 'c' at row 1
-Warning 1366 Incorrect string value: '\x80\x80' for column 'c' at row 2
-Warning 1366 Incorrect string value: '\x80\x81' for column 'c' at row 3
-Warning 1366 Incorrect string value: '\x80\xA1@' for column 'c' at row 4
-Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'c' at row 5
-Warning 1366 Incorrect string value: '\x80\xFE@' for column 'c' at row 6
-Warning 1366 Incorrect string value: '\x80@' for column 'c' at row 7
-Warning 1366 Incorrect string value: '\x80\x80' for column 'c' at row 8
-Warning 1366 Incorrect string value: '\x80\x81' for column 'c' at row 9
-Warning 1366 Incorrect string value: '\x80\xA1@' for column 'c' at row 10
-Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'c' at row 11
-Warning 1366 Incorrect string value: '\x80\xFE@' for column 'c' at row 12
-Warning 1366 Incorrect string value: '\x80@' for column 'c' at row 13
-Warning 1366 Incorrect string value: '\x80\x80' for column 'c' at row 14
-Warning 1366 Incorrect string value: '\x80\x81' for column 'c' at row 15
-Warning 1366 Incorrect string value: '\x80\xA1@' for column 'c' at row 16
-Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'c' at row 17
-Warning 1366 Incorrect string value: '\x80\xFE@' for column 'c' at row 18
-Warning 1366 Incorrect string value: '\x80@' for column 'c' at row 19
-Warning 1366 Incorrect string value: '\x80\x80' for column 'c' at row 20
-Warning 1366 Incorrect string value: '\x80\x81' for column 'c' at row 21
-Warning 1366 Incorrect string value: '\x80\xA1@' for column 'c' at row 22
-Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'c' at row 23
-Warning 1366 Incorrect string value: '\x80\xFE@' for column 'c' at row 24
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t3.c' at row 1
+Warning 1366 Incorrect string value: '\x80\x80' for column 'test.t3.c' at row 2
+Warning 1366 Incorrect string value: '\x80\x81' for column 'test.t3.c' at row 3
+Warning 1366 Incorrect string value: '\x80\xA1@' for column 'test.t3.c' at row 4
+Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'test.t3.c' at row 5
+Warning 1366 Incorrect string value: '\x80\xFE@' for column 'test.t3.c' at row 6
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t3.c' at row 7
+Warning 1366 Incorrect string value: '\x80\x80' for column 'test.t3.c' at row 8
+Warning 1366 Incorrect string value: '\x80\x81' for column 'test.t3.c' at row 9
+Warning 1366 Incorrect string value: '\x80\xA1@' for column 'test.t3.c' at row 10
+Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'test.t3.c' at row 11
+Warning 1366 Incorrect string value: '\x80\xFE@' for column 'test.t3.c' at row 12
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t3.c' at row 13
+Warning 1366 Incorrect string value: '\x80\x80' for column 'test.t3.c' at row 14
+Warning 1366 Incorrect string value: '\x80\x81' for column 'test.t3.c' at row 15
+Warning 1366 Incorrect string value: '\x80\xA1@' for column 'test.t3.c' at row 16
+Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'test.t3.c' at row 17
+Warning 1366 Incorrect string value: '\x80\xFE@' for column 'test.t3.c' at row 18
+Warning 1366 Incorrect string value: '\x80@' for column 'test.t3.c' at row 19
+Warning 1366 Incorrect string value: '\x80\x80' for column 'test.t3.c' at row 20
+Warning 1366 Incorrect string value: '\x80\x81' for column 'test.t3.c' at row 21
+Warning 1366 Incorrect string value: '\x80\xA1@' for column 'test.t3.c' at row 22
+Warning 1366 Incorrect string value: '\x80\xA1\xA3' for column 'test.t3.c' at row 23
+Warning 1366 Incorrect string value: '\x80\xFE@' for column 'test.t3.c' at row 24
SELECT COUNT(*) FROM t3;
COUNT(*)
24
@@ -5713,22 +5713,22 @@ WHERE (FIND_IN_SET('mb2',type1) OR FIND_IN_SET('ascii',type1)) AND
type3='tail'
ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 1
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 2
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 3
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 4
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 5
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 6
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 7
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 8
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 9
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 10
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 11
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 12
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 13
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 14
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 15
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 16
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 1
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 2
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 3
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 4
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 5
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 6
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 7
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 8
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 9
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 10
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 11
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 12
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 13
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 14
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 15
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 16
SELECT COUNT(*) FROM t3;
COUNT(*)
16
@@ -5764,15 +5764,15 @@ AND NOT FIND_IN_SET('ascii',type3)
AND NOT FIND_IN_SET('mb2',type3)
ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 1
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 2
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 3
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 4
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 5
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 6
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 7
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 8
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 9
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 1
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 2
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 3
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 4
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 5
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 6
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 7
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 8
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 9
SELECT COUNT(*) FROM t3;
COUNT(*)
9
@@ -5848,28 +5848,28 @@ DELETE FROM t2 WHERE b IN (SELECT b FROM t3);
DELETE FROM t3;
INSERT IGNORE INTO t3 (b,c,comment) SELECT b,b,comment FROM t2 ORDER BY b;
Warnings:
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 1
-Warning 1366 Incorrect string value: '\xA3' for column 'c' at row 3
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 5
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 6
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 7
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 9
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 10
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 12
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 13
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 15
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 16
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 18
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 19
-Warning 1366 Incorrect string value: '\xA3' for column 'c' at row 27
-Warning 1366 Incorrect string value: '\x80' for column 'c' at row 30
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 31
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 35
-Warning 1366 Incorrect string value: '\xA3' for column 'c' at row 37
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 39
-Warning 1366 Incorrect string value: '\xA3' for column 'c' at row 41
-Warning 1366 Incorrect string value: '\x81' for column 'c' at row 43
-Warning 1366 Incorrect string value: '\xA3' for column 'c' at row 45
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 1
+Warning 1366 Incorrect string value: '\xA3' for column 'test.t3.c' at row 3
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 5
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 6
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 7
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 9
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 10
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 12
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 13
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 15
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 16
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 18
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 19
+Warning 1366 Incorrect string value: '\xA3' for column 'test.t3.c' at row 27
+Warning 1366 Incorrect string value: '\x80' for column 'test.t3.c' at row 30
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 31
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 35
+Warning 1366 Incorrect string value: '\xA3' for column 'test.t3.c' at row 37
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 39
+Warning 1366 Incorrect string value: '\xA3' for column 'test.t3.c' at row 41
+Warning 1366 Incorrect string value: '\x81' for column 'test.t3.c' at row 43
+Warning 1366 Incorrect string value: '\xA3' for column 'test.t3.c' at row 45
SELECT COUNT(*) FROM t3;
COUNT(*)
46
diff --git a/mysql-test/r/ctype_latin1.result b/mysql-test/r/ctype_latin1.result
index 9899342..4d496c7 100644
--- a/mysql-test/r/ctype_latin1.result
+++ b/mysql-test/r/ctype_latin1.result
@@ -7987,12 +7987,12 @@ SET NAMES utf8;
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
INSERT IGNORE INTO t1 VALUES ('�'),('�#');
Warnings:
-Warning 1366 Incorrect string value: '\xC2' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\xC2#' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\xC2' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\xC2#' for column 'test.t1.a' at row 2
SHOW WARNINGS;
Level Code Message
-Warning 1366 Incorrect string value: '\xC2' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\xC2#' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\xC2' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\xC2#' for column 'test.t1.a' at row 2
SELECT HEX(a),a FROM t1;
HEX(a) a
3F ?
diff --git a/mysql-test/r/ctype_many.result b/mysql-test/r/ctype_many.result
index d73a478..ce05015 100644
--- a/mysql-test/r/ctype_many.result
+++ b/mysql-test/r/ctype_many.result
@@ -1767,8 +1767,8 @@ CREATE TABLE t2 (a VARCHAR(10) CHARACTER SET ucs2);
INSERT INTO t1 VALUES (0x10082), (0x12345);
INSERT IGNORE INTO t2 SELECT * FROM t1;
Warnings:
-Warning 1366 Incorrect string value: '\x00\x01\x00\x82' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\x00\x01\x23\x45' for column 'a' at row 2
+Warning 1366 Incorrect string value: '\x00\x01\x00\x82' for column 'test.t2.a' at row 1
+Warning 1366 Incorrect string value: '\x00\x01\x23\x45' for column 'test.t2.a' at row 2
SELECT HEX(a) FROM t2;
HEX(a)
003F
diff --git a/mysql-test/r/ctype_recoding.result b/mysql-test/r/ctype_recoding.result
index 806d9dc..40c67ad 100644
--- a/mysql-test/r/ctype_recoding.result
+++ b/mysql-test/r/ctype_recoding.result
@@ -171,8 +171,8 @@ create table t1 (a char(10) character set koi8r, b text character set koi8r);
insert into t1 values ('test','test');
insert ignore into t1 values ('����','����');
Warnings:
-Warning 1366 Incorrect string value: '\xCA\xC3\xD5\xCB' for column 'a' at row 1
-Warning 1366 Incorrect string value: '\xCA\xC3\xD5\xCB' for column 'b' at row 1
+Warning 1366 Incorrect string value: '\xCA\xC3\xD5\xCB' for column 'test.t1.a' at row 1
+Warning 1366 Incorrect string value: '\xCA\xC3\xD5\xCB' for column 'test.t1.b' at row 1
drop table t1;
set names koi8r;
create table t1 (a char(10) character set cp1251);
diff --git a/sql/field.cc b/sql/field.cc
index caa84dc..5a97deb 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -8599,6 +8599,24 @@ int Field_geom::store_decimal(const my_decimal *)
}
+static char *long_field_name(char *buf, size_t buf_len,
+ const TABLE_SHARE *s, const char *field_name)
+{
+ bool is_temp= !s||
+ (tmp_file_prefix_length < s->table_name.length &&
+ memcmp(s->table_name.str,
+ tmp_file_prefix, tmp_file_prefix_length) == 0);
+
+ if (is_temp)
+ strxnmov(buf, buf_len, "{temporary}.", field_name, NullS);
+ else
+ strxnmov(buf, buf_len,
+ s->db.str, ".", s->table_name.str, ".", field_name, NullS);
+
+ return buf;
+}
+
+
int Field_geom::store(const char *from, uint length, CHARSET_INFO *cs)
{
if (!length)
@@ -8620,10 +8638,11 @@ int Field_geom::store(const char *from, uint length, CHARSET_INFO *cs)
geom_type != Field::GEOM_GEOMETRYCOLLECTION &&
(uint32) geom_type != wkb_type)
{
+ char buf[193];
my_error(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, MYF(0),
Geometry::ci_collection[geom_type]->m_name.str,
Geometry::ci_collection[wkb_type]->m_name.str,
- field_name,
+ long_field_name(buf, sizeof(buf), table->s, field_name),
(ulong) table->in_use->get_stmt_da()->
current_row_for_warning());
goto err_exit;
@@ -10787,7 +10806,11 @@ void Field::set_datetime_warning(Sql_condition::enum_warning_level level,
{
THD *thd= get_thd();
if (thd->really_abort_on_warning() && level >= Sql_condition::WARN_LEVEL_WARN)
- make_truncated_value_warning(thd, level, str, ts_type, field_name);
+ {
+ char buf[193];
+ make_truncated_value_warning(thd, level, str, ts_type,
+ long_field_name(buf, sizeof(buf), table->s, field_name));
+ }
else
set_warning(level, code, cuted_increment);
}
@@ -10797,10 +10820,13 @@ void Field::set_warning_truncated_wrong_value(const char *type_arg,
const char *value)
{
THD *thd= get_thd();
+ char buf[193];
+
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD,
ER_THD(thd, ER_TRUNCATED_WRONG_VALUE_FOR_FIELD),
- type_arg, value, field_name,
+ type_arg, value,
+ long_field_name(buf, sizeof(buf), table->s, field_name),
static_cast<ulong>(thd->get_stmt_da()->
current_row_for_warning()));
}
1
0
[Commits] 621ade37706: MDEV-14791: Crash with order by expression containing window functions
by varunraiko1803ï¼ gmail.com 02 Nov '18
by varunraiko1803ï¼ gmail.com 02 Nov '18
02 Nov '18
revision-id: 621ade377068a00aa73502e75ae5ed0ccee9d573 (mariadb-10.2.16-222-g621ade37706)
parent(s): 1c6b982e02eeaa75bb6c2f2a3c2b64491dd6d3c8
author: Varun Gupta
committer: Varun Gupta
timestamp: 2018-11-02 22:25:11 +0530
message:
MDEV-14791: Crash with order by expression containing window functions
The issue here is that for a window function in the ORDER BY clause, we were not
creating an extra field in the temporary table for the window function
(which is contained in an expression).
So a call to split_sum_func is added to handle this case
Also we need to update all items that contain a window function
in the temp table during window function computation as filesort would need
these values to be updated to calculate the ORDER BY clause of the select
---
mysql-test/r/win.result | 29 +++++++++++++++++++++++++++++
mysql-test/t/win.test | 25 +++++++++++++++++++++++++
sql/sql_select.cc | 24 ++----------------------
sql/sql_window.cc | 27 +++++++++++++++++++++++++++
4 files changed, 83 insertions(+), 22 deletions(-)
diff --git a/mysql-test/r/win.result b/mysql-test/r/win.result
index 790b264fc09..905a7e49a06 100644
--- a/mysql-test/r/win.result
+++ b/mysql-test/r/win.result
@@ -3361,3 +3361,32 @@ Esben Tuning 31 68.7500
Kaolin Tuning 88 68.7500
Tatiana Tuning 83 68.7500
drop table t1;
+#
+# MDEV-14791: Crash with order by expression containing window functions
+#
+CREATE TABLE t1 (b1 int, b2 int);
+INSERT INTO t1 VALUES (1,1),(0,0);
+explain
+SELECT b1
+from t1
+order by row_number() over (ORDER BY b2) + 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
+SELECT b1
+from t1
+order by row_number() over (ORDER BY b2) + 1;
+b1
+0
+1
+explain SELECT b1
+from t1
+order by row_number() over (ORDER BY b2);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
+SELECT b1
+from t1
+order by row_number() over (ORDER BY b2);
+b1
+0
+1
+DROP TABLE t1;
diff --git a/mysql-test/t/win.test b/mysql-test/t/win.test
index e9c8ee05773..b13c1471346 100644
--- a/mysql-test/t/win.test
+++ b/mysql-test/t/win.test
@@ -2119,3 +2119,28 @@ SELECT name, test, score,
FROM t1
ORDER BY test, name;
drop table t1;
+
+--echo #
+--echo # MDEV-14791: Crash with order by expression containing window functions
+--echo #
+
+CREATE TABLE t1 (b1 int, b2 int);
+INSERT INTO t1 VALUES (1,1),(0,0);
+
+explain
+SELECT b1
+from t1
+order by row_number() over (ORDER BY b2) + 1;
+
+SELECT b1
+from t1
+order by row_number() over (ORDER BY b2) + 1;
+
+explain SELECT b1
+from t1
+order by row_number() over (ORDER BY b2);
+
+SELECT b1
+from t1
+order by row_number() over (ORDER BY b2);
+DROP TABLE t1;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 0cdecf1bf2e..70e4d1d37f8 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -933,7 +933,8 @@ JOIN::prepare(TABLE_LIST *tables_init,
item->max_length)))
real_order= TRUE;
- if (item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM)
+ if ((item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM) ||
+ item->with_window_func)
item->split_sum_func(thd, ref_ptrs, all_fields, 0);
}
if (!real_order)
@@ -26681,27 +26682,6 @@ AGGR_OP::end_send()
}
else
{
- /*
- In case we have window functions present, an extra step is required
- to compute all the fields from the temporary table.
- In case we have a compound expression such as: expr + expr,
- where one of the terms has a window function inside it, only
- after computing window function values we actually know the true
- final result of the compounded expression.
-
- Go through all the func items and save their values once again in the
- corresponding temp table fields. Do this for each row in the table.
- */
- if (join_tab->window_funcs_step)
- {
- Item **func_ptr= join_tab->tmp_table_param->items_to_copy;
- Item *func;
- for (; (func = *func_ptr) ; func_ptr++)
- {
- if (func->with_window_func)
- func->save_in_result_field(true);
- }
- }
rc= evaluate_join_record(join, join_tab, 0);
}
}
diff --git a/sql/sql_window.cc b/sql/sql_window.cc
index 465c6ae032c..9fb10339e35 100644
--- a/sql/sql_window.cc
+++ b/sql/sql_window.cc
@@ -2511,11 +2511,38 @@ bool save_window_function_values(List<Item_window_func>& window_functions,
TABLE *tbl, uchar *rowid_buf)
{
List_iterator_fast<Item_window_func> iter(window_functions);
+ JOIN_TAB *join_tab= tbl->reginfo.join_tab;
tbl->file->ha_rnd_pos(tbl->record[0], rowid_buf);
store_record(tbl, record[1]);
while (Item_window_func *item_win= iter++)
item_win->save_in_field(item_win->result_field, true);
+ /*
+ In case we have window functions present, an extra step is required
+ to compute all the fields from the temporary table.
+ In case we have a compound expression such as: expr + expr,
+ where one of the terms has a window function inside it, only
+ after computing window function values we actually know the true
+ final result of the compounded expression.
+
+ Go through all the func items and save their values once again in the
+ corresponding temp table fields. Do this for each row in the table.
+
+ This needs to be done earlier because ORDER BY clause can also have
+ a window function, so we need to make sure all the fields of the temp.table
+ are updated before we do the filesort. So is best to update the other fields
+ that contain the window functions along with the computation of window
+ functions.
+ */
+
+ Item **func_ptr= join_tab->tmp_table_param->items_to_copy;
+ Item *func;
+ for (; (func = *func_ptr) ; func_ptr++)
+ {
+ if (func->with_window_func)
+ func->save_in_result_field(true);
+ }
+
int err= tbl->file->ha_update_row(tbl->record[1], tbl->record[0]);
if (err && err != HA_ERR_RECORD_IS_THE_SAME)
return true;
1
0
[Commits] e9a7c9e28c8: MDEV-11167: InnoDB: Warning: using a partial-field key prefix in search, results in assertion failure or "Can't find record" error
by Oleksandr Byelkin 02 Nov '18
by Oleksandr Byelkin 02 Nov '18
02 Nov '18
revision-id: e9a7c9e28c8f28447a29c59585d08f88ce0772db (mariadb-10.1.35-40-ge9a7c9e28c8)
parent(s): 62dbf4f18d47a1e26f5fd7a0d6683494fb203a44
author: Oleksandr Byelkin
committer: Oleksandr Byelkin
timestamp: 2018-11-02 17:54:35 +0100
message:
MDEV-11167: InnoDB: Warning: using a partial-field key prefix in search, results in assertion failure or "Can't find record" error
Fix ha_rnd_init() argument (we do not doing scan but use rnd_pos)
---
mysql-test/r/partition_innodb.result | 26 ++++++++++++++++++++++++++
mysql-test/t/partition_innodb.test | 30 ++++++++++++++++++++++++++++++
sql/sql_update.cc | 2 +-
3 files changed, 57 insertions(+), 1 deletion(-)
diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result
index b322d63a7e1..e08ee24bb69 100644
--- a/mysql-test/r/partition_innodb.result
+++ b/mysql-test/r/partition_innodb.result
@@ -892,3 +892,29 @@ ERROR HY000: Table definition has changed, please retry transaction
SELECT b FROM t1 WHERE b = 0;
ERROR HY000: Table definition has changed, please retry transaction
DROP TABLE t1;
+#
+# MDEV-11167: InnoDB: Warning: using a partial-field key prefix
+# in search, results in assertion failure or "Can't find record" error
+#
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
+CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
+INSERT INTO t1 VALUES (1),(2);
+INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
+Warnings:
+Warning 1366 Incorrect integer value: 'three' for column 'b' at row 2
+UPDATE v SET a = NULL ORDER BY a, b;
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'foo'
+DROP view v;
+DROP TABLE t1, t2;
+SET @save_isp=@@innodb_stats_persistent;
+SET GLOBAL innodb_stats_persistent= ON;
+CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
+INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
+CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
+UPDATE v SET f2 = NULL;
+ERROR HY000: CHECK OPTION failed 'test.v'
+SET GLOBAL innodb_stats_persistent= @save_isp;
+DROP view v;
+DROP TABLE t;
diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test
index 00af34f9d26..c6a94d17c04 100644
--- a/mysql-test/t/partition_innodb.test
+++ b/mysql-test/t/partition_innodb.test
@@ -998,3 +998,33 @@ SELECT b FROM t1 WHERE b = 0;
SELECT b FROM t1 WHERE b = 0;
--disconnect con1
DROP TABLE t1;
+
+--echo #
+--echo # MDEV-11167: InnoDB: Warning: using a partial-field key prefix
+--echo # in search, results in assertion failure or "Can't find record" error
+--echo #
+
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
+CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
+
+INSERT INTO t1 VALUES (1),(2);
+INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
+UPDATE v SET a = NULL ORDER BY a, b;
+
+DROP view v;
+DROP TABLE t1, t2;
+
+SET @save_isp=@@innodb_stats_persistent;
+SET GLOBAL innodb_stats_persistent= ON;
+
+CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
+INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
+CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
+--error ER_VIEW_CHECK_FAILED
+UPDATE v SET f2 = NULL;
+
+SET GLOBAL innodb_stats_persistent= @save_isp;
+DROP view v;
+DROP TABLE t;
+
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index db9f9013188..5df3f3db784 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -2347,7 +2347,7 @@ int multi_update::do_updates()
check_opt_it.rewind();
while(TABLE *tbl= check_opt_it++)
{
- if ((local_error= tbl->file->ha_rnd_init(1)))
+ if ((local_error= tbl->file->ha_rnd_init(0)))
{
err_table= tbl;
goto err;
1
0