From b1fab9bf4e8a0d807c1076b6610c7208f40ca0c1 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 14 Sep 2021 12:08:01 +0200 Subject: [PATCH] UUID() function should return UUID, not VARCHAR(36) --- mysql-test/main/ctype_utf8.result | 4 +- mysql-test/main/ctype_utf8.test | 2 +- mysql-test/main/func_json.result | 4 +- mysql-test/main/func_json.test | 2 +- mysql-test/main/func_misc.result | 5 +- mysql-test/main/func_misc.test | 1 + mysql-test/main/func_time.result | 2 +- mysql-test/main/func_time.test | 2 +- .../rpl_switch_stm_row_mixed.result | 54 ++++++++--------- .../funcs/r/rpl_switch_stm_row_mixed.result | 54 ++++++++--------- .../suite/rpl/include/rpl_mixed_dml.inc | 18 +++--- .../rpl/include/rpl_switch_stm_row_mixed.inc | 60 +++++++++---------- .../suite/rpl/r/rpl_innodb_mixed_dml.result | 30 +++++----- .../rpl/r/rpl_switch_stm_row_mixed.result | 54 ++++++++--------- .../suite/rpl/r/rpl_temp_table_mix_row.result | 6 +- .../suite/rpl/t/rpl_temp_table_mix_row.test | 6 +- mysql-test/suite/vcol/r/binlog.result | 2 +- plugin/type_uuid/item_uuidfunc.cc | 41 +++++++------ plugin/type_uuid/item_uuidfunc.h | 35 +++++++---- plugin/type_uuid/plugin.cc | 4 +- 20 files changed, 204 insertions(+), 182 deletions(-) diff --git a/mysql-test/main/ctype_utf8.result b/mysql-test/main/ctype_utf8.result index 1d0227e8cf6..b6cd1fff6fd 100644 --- a/mysql-test/main/ctype_utf8.result +++ b/mysql-test/main/ctype_utf8.result @@ -11392,8 +11392,8 @@ DROP TABLE t1; # MDEV-20890 Illegal mix of collations with UUID() # SET NAMES utf8 COLLATE utf8_unicode_ci; -SELECT uuid()>''; -uuid()>'' +SELECT sys_guid()>''; +sys_guid()>'' 1 # # MDEV-8844 Unreadable control characters printed as is in warnings diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test index 6febc42085a..daef581fa02 100644 --- a/mysql-test/main/ctype_utf8.test +++ b/mysql-test/main/ctype_utf8.test @@ -2319,7 +2319,7 @@ DROP TABLE t1; --echo # SET NAMES utf8 COLLATE utf8_unicode_ci; -SELECT uuid()>''; +SELECT sys_guid()>''; --echo # diff --git a/mysql-test/main/func_json.result b/mysql-test/main/func_json.result index 6edb27c14b8..29b996f3066 100644 --- a/mysql-test/main/func_json.result +++ b/mysql-test/main/func_json.result @@ -765,8 +765,8 @@ DROP TABLE t1; # # MDEV-16054 simple json functions flatline cpu on garbage input. # -select json_array(1,uuid(),compress(5.140264e+307)); -json_array(1,uuid(),compress(5.140264e+307)) +select json_array(1,user(),compress(5.140264e+307)); +json_array(1,user(),compress(5.140264e+307)) NULL # # MDEV-16869 String functions don't respect character set of JSON_VALUE. diff --git a/mysql-test/main/func_json.test b/mysql-test/main/func_json.test index e62c780702f..eb84d607430 100644 --- a/mysql-test/main/func_json.test +++ b/mysql-test/main/func_json.test @@ -429,7 +429,7 @@ DROP TABLE t1; --echo # MDEV-16054 simple json functions flatline cpu on garbage input. --echo # -select json_array(1,uuid(),compress(5.140264e+307)); +select json_array(1,user(),compress(5.140264e+307)); --echo # --echo # MDEV-16869 String functions don't respect character set of JSON_VALUE. diff --git a/mysql-test/main/func_misc.result b/mysql-test/main/func_misc.result index b2c08989854..7597da95f3d 100644 --- a/mysql-test/main/func_misc.result +++ b/mysql-test/main/func_misc.result @@ -118,9 +118,12 @@ create table t1 as select uuid(), length(uuid()); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `uuid()` varchar(36) DEFAULT NULL, + `uuid()` uuid DEFAULT NULL, `length(uuid())` int(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 +select length(`uuid()`) from t1; +length(`uuid()`) +36 drop table t1; create table t1 select INET_ATON('255.255.0.1') as `a`; show create table t1; diff --git a/mysql-test/main/func_misc.test b/mysql-test/main/func_misc.test index 56e7a996f94..5e8118d4cef 100644 --- a/mysql-test/main/func_misc.test +++ b/mysql-test/main/func_misc.test @@ -106,6 +106,7 @@ select export_set(3, _latin1'foo', _utf8'bar', ',', 4); create table t1 as select uuid(), length(uuid()); --enable_warnings show create table t1; +select length(`uuid()`) from t1; drop table t1; # diff --git a/mysql-test/main/func_time.result b/mysql-test/main/func_time.result index d44f634db08..7bca4158d70 100644 --- a/mysql-test/main/func_time.result +++ b/mysql-test/main/func_time.result @@ -2792,7 +2792,7 @@ SET sql_mode=DEFAULT; # # MDEV-13972 crash in Item_func_sec_to_time::get_date # -DO TO_DAYS(SEC_TO_TIME(TIME(CEILING(UUID())))); +DO TO_DAYS(SEC_TO_TIME(TIME(CEILING(SYS_GUID())))); DO TO_DAYS(SEC_TO_TIME(MAKEDATE('',RAND(~(''))))); Warnings: Warning 1292 Truncated incorrect DECIMAL value: '' diff --git a/mysql-test/main/func_time.test b/mysql-test/main/func_time.test index f0bfb926f83..359b1ac8698 100644 --- a/mysql-test/main/func_time.test +++ b/mysql-test/main/func_time.test @@ -1701,7 +1701,7 @@ SET sql_mode=DEFAULT; # The below query can return warning sporadically --disable_warnings -DO TO_DAYS(SEC_TO_TIME(TIME(CEILING(UUID())))); +DO TO_DAYS(SEC_TO_TIME(TIME(CEILING(SYS_GUID())))); --enable_warnings DO TO_DAYS(SEC_TO_TIME(MAKEDATE('',RAND(~(''))))); diff --git a/mysql-test/suite/binlog_encryption/rpl_switch_stm_row_mixed.result b/mysql-test/suite/binlog_encryption/rpl_switch_stm_row_mixed.result index 936f604be2e..71332034b15 100644 --- a/mysql-test/suite/binlog_encryption/rpl_switch_stm_row_mixed.result +++ b/mysql-test/suite/binlog_encryption/rpl_switch_stm_row_mixed.result @@ -41,16 +41,16 @@ select @@global.binlog_format, @@session.binlog_format; @@global.binlog_format @@session.binlog_format ROW ROW CREATE TABLE t1 (a varchar(100)); -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_1_"; insert into t1 values("work_2_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_3_")); +insert into t1 values(concat(SYS_GUID(),"work_3_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_4_",UUID())); +insert into t1 values(concat("for_4_",SYS_GUID())); insert into t1 select "yesterday_5_"; create temporary table tmp(a char(100)); insert into tmp values("see_6_"); @@ -116,43 +116,43 @@ set binlog_format=default; select @@global.binlog_format, @@session.binlog_format; @@global.binlog_format @@session.binlog_format MIXED MIXED -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_17_"; insert into t1 values("work_18_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_19_")); +insert into t1 values(concat(SYS_GUID(),"work_19_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_20_",UUID())); +insert into t1 values(concat("for_20_",SYS_GUID())); insert into t1 select "yesterday_21_"; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_22_")); +insert into t1 values(concat(SYS_GUID(),"work_22_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_23_",UUID())); +insert into t1 values(concat("for_23_",SYS_GUID())); insert into t1 select "yesterday_24_"; -create table t2 ENGINE=MyISAM select rpad(UUID(),100,' '); -create table t3 select 1 union select UUID(); +create table t2 ENGINE=MyISAM select rpad(SYS_GUID(),100,' '); +create table t3 select 1 union select SYS_GUID(); SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR -create table t4 select * from t1 where 3 in (select 1 union select 2 union select UUID() union select 3); +create table t4 select * from t1 where 3 in (select 1 union select 2 union select SYS_GUID() union select 3); SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR create table t5 select * from t1 where 3 in (select 1 union select 2 union select curdate() union select 3); Warnings: Warning 1292 Truncated incorrect datetime value: '3' -insert ignore into t5 select UUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); +insert ignore into t5 select SYS_GUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); create procedure foo() begin insert into t1 values("work_25_"); -insert into t1 values(concat("for_26_",UUID())); +insert into t1 values(concat("for_26_",SYS_GUID())); insert into t1 select "yesterday_27_"; end| create procedure foo2() begin -insert into t1 values(concat("emergency_28_",UUID())); +insert into t1 values(concat("emergency_28_",SYS_GUID())); insert into t1 values("work_29_"); -insert into t1 values(concat("for_30_",UUID())); +insert into t1 values(concat("for_30_",SYS_GUID())); set session binlog_format=row; # accepted for stored procs insert into t1 values("more work_31_"); set session binlog_format=mixed; @@ -171,7 +171,7 @@ end| call foo(); call foo2(); call foo4("hello"); -call foo4(UUID()); +call foo4(SYS_GUID()); call foo4("world"); select foo3(); ERROR HY000: Cannot change the binary logging format inside a stored function or trigger @@ -207,7 +207,7 @@ foo4() deallocate prepare stmt1; create function foo5() returns bigint unsigned begin -insert into t2 select UUID(); +insert into t2 select SYS_GUID(); return 100; end| select foo5(); @@ -229,18 +229,18 @@ end| select foo6("foo6_1_"); foo6("foo6_1_") 100 -select foo6(concat("foo6_2_",UUID())); -foo6(concat("foo6_2_",UUID())) +select foo6(concat("foo6_2_",SYS_GUID())); +foo6(concat("foo6_2_",SYS_GUID())) 100 -prepare stmt1 from 'select foo6(concat("foo6_3_",UUID()))'; +prepare stmt1 from 'select foo6(concat("foo6_3_",SYS_GUID()))'; execute stmt1; -foo6(concat("foo6_3_",UUID())) +foo6(concat("foo6_3_",SYS_GUID())) 100 execute stmt1; -foo6(concat("foo6_3_",UUID())) +foo6(concat("foo6_3_",SYS_GUID())) 100 deallocate prepare stmt1; -create view v1 as select uuid(); +create view v1 as select SYS_GUID(); create table t11 (data varchar(255)); insert into t11 select * from v1; insert into t11 select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysqltest1' and TABLE_NAME IN ('v1','t11'); @@ -250,11 +250,11 @@ execute stmt1; deallocate prepare stmt1; create trigger t11_bi before insert on t11 for each row begin -set NEW.data = concat(NEW.data,UUID()); +set NEW.data = concat(NEW.data,SYS_GUID()); end| insert into t11 values("try_560_"); insert delayed into t2 values("delay_1_"); -insert delayed into t2 values(concat("delay_2_",UUID())); +insert delayed into t2 values(concat("delay_2_",SYS_GUID())); insert delayed into t2 values("delay_6_"); insert delayed into t2 values(rand()); set @a=2.345; @@ -356,7 +356,7 @@ alter table t1 modify a int, drop primary key; insert into t1 values(null,"try_57_"); connection slave; connection master; -CREATE TEMPORARY TABLE t15 SELECT UUID(); +CREATE TEMPORARY TABLE t15 SELECT SYS_GUID(); create table t16 like t15; INSERT INTO t16 SELECT * FROM t15; insert into t16 values("try_65_"); @@ -427,7 +427,7 @@ DROP TABLE IF EXISTS t12; SET SESSION BINLOG_FORMAT=MIXED; CREATE TABLE t12 (data LONG); LOCK TABLES t12 WRITE; -INSERT INTO t12 VALUES(UUID()); +INSERT INTO t12 VALUES(SYS_GUID()); UNLOCK TABLES; connection slave; connection master; diff --git a/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result b/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result index 936f604be2e..71332034b15 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result +++ b/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result @@ -41,16 +41,16 @@ select @@global.binlog_format, @@session.binlog_format; @@global.binlog_format @@session.binlog_format ROW ROW CREATE TABLE t1 (a varchar(100)); -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_1_"; insert into t1 values("work_2_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_3_")); +insert into t1 values(concat(SYS_GUID(),"work_3_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_4_",UUID())); +insert into t1 values(concat("for_4_",SYS_GUID())); insert into t1 select "yesterday_5_"; create temporary table tmp(a char(100)); insert into tmp values("see_6_"); @@ -116,43 +116,43 @@ set binlog_format=default; select @@global.binlog_format, @@session.binlog_format; @@global.binlog_format @@session.binlog_format MIXED MIXED -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_17_"; insert into t1 values("work_18_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_19_")); +insert into t1 values(concat(SYS_GUID(),"work_19_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_20_",UUID())); +insert into t1 values(concat("for_20_",SYS_GUID())); insert into t1 select "yesterday_21_"; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_22_")); +insert into t1 values(concat(SYS_GUID(),"work_22_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_23_",UUID())); +insert into t1 values(concat("for_23_",SYS_GUID())); insert into t1 select "yesterday_24_"; -create table t2 ENGINE=MyISAM select rpad(UUID(),100,' '); -create table t3 select 1 union select UUID(); +create table t2 ENGINE=MyISAM select rpad(SYS_GUID(),100,' '); +create table t3 select 1 union select SYS_GUID(); SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR -create table t4 select * from t1 where 3 in (select 1 union select 2 union select UUID() union select 3); +create table t4 select * from t1 where 3 in (select 1 union select 2 union select SYS_GUID() union select 3); SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR create table t5 select * from t1 where 3 in (select 1 union select 2 union select curdate() union select 3); Warnings: Warning 1292 Truncated incorrect datetime value: '3' -insert ignore into t5 select UUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); +insert ignore into t5 select SYS_GUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); create procedure foo() begin insert into t1 values("work_25_"); -insert into t1 values(concat("for_26_",UUID())); +insert into t1 values(concat("for_26_",SYS_GUID())); insert into t1 select "yesterday_27_"; end| create procedure foo2() begin -insert into t1 values(concat("emergency_28_",UUID())); +insert into t1 values(concat("emergency_28_",SYS_GUID())); insert into t1 values("work_29_"); -insert into t1 values(concat("for_30_",UUID())); +insert into t1 values(concat("for_30_",SYS_GUID())); set session binlog_format=row; # accepted for stored procs insert into t1 values("more work_31_"); set session binlog_format=mixed; @@ -171,7 +171,7 @@ end| call foo(); call foo2(); call foo4("hello"); -call foo4(UUID()); +call foo4(SYS_GUID()); call foo4("world"); select foo3(); ERROR HY000: Cannot change the binary logging format inside a stored function or trigger @@ -207,7 +207,7 @@ foo4() deallocate prepare stmt1; create function foo5() returns bigint unsigned begin -insert into t2 select UUID(); +insert into t2 select SYS_GUID(); return 100; end| select foo5(); @@ -229,18 +229,18 @@ end| select foo6("foo6_1_"); foo6("foo6_1_") 100 -select foo6(concat("foo6_2_",UUID())); -foo6(concat("foo6_2_",UUID())) +select foo6(concat("foo6_2_",SYS_GUID())); +foo6(concat("foo6_2_",SYS_GUID())) 100 -prepare stmt1 from 'select foo6(concat("foo6_3_",UUID()))'; +prepare stmt1 from 'select foo6(concat("foo6_3_",SYS_GUID()))'; execute stmt1; -foo6(concat("foo6_3_",UUID())) +foo6(concat("foo6_3_",SYS_GUID())) 100 execute stmt1; -foo6(concat("foo6_3_",UUID())) +foo6(concat("foo6_3_",SYS_GUID())) 100 deallocate prepare stmt1; -create view v1 as select uuid(); +create view v1 as select SYS_GUID(); create table t11 (data varchar(255)); insert into t11 select * from v1; insert into t11 select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysqltest1' and TABLE_NAME IN ('v1','t11'); @@ -250,11 +250,11 @@ execute stmt1; deallocate prepare stmt1; create trigger t11_bi before insert on t11 for each row begin -set NEW.data = concat(NEW.data,UUID()); +set NEW.data = concat(NEW.data,SYS_GUID()); end| insert into t11 values("try_560_"); insert delayed into t2 values("delay_1_"); -insert delayed into t2 values(concat("delay_2_",UUID())); +insert delayed into t2 values(concat("delay_2_",SYS_GUID())); insert delayed into t2 values("delay_6_"); insert delayed into t2 values(rand()); set @a=2.345; @@ -356,7 +356,7 @@ alter table t1 modify a int, drop primary key; insert into t1 values(null,"try_57_"); connection slave; connection master; -CREATE TEMPORARY TABLE t15 SELECT UUID(); +CREATE TEMPORARY TABLE t15 SELECT SYS_GUID(); create table t16 like t15; INSERT INTO t16 SELECT * FROM t15; insert into t16 values("try_65_"); @@ -427,7 +427,7 @@ DROP TABLE IF EXISTS t12; SET SESSION BINLOG_FORMAT=MIXED; CREATE TABLE t12 (data LONG); LOCK TABLES t12 WRITE; -INSERT INTO t12 VALUES(UUID()); +INSERT INTO t12 VALUES(SYS_GUID()); UNLOCK TABLES; connection slave; connection master; diff --git a/mysql-test/suite/rpl/include/rpl_mixed_dml.inc b/mysql-test/suite/rpl/include/rpl_mixed_dml.inc index bb1a2c173de..e9e1fd512b4 100644 --- a/mysql-test/suite/rpl/include/rpl_mixed_dml.inc +++ b/mysql-test/suite/rpl/include/rpl_mixed_dml.inc @@ -29,7 +29,7 @@ INSERT INTO t2 VALUES(1, 't2, text 1'); --echo --echo ******************** DELETE ******************** DELETE FROM t1 WHERE a = 1; -DELETE FROM t2 WHERE b <> UUID(); +DELETE FROM t2 WHERE b <> SYS_GUID(); --source suite/rpl/include/rpl_mixed_check_select.inc --source suite/rpl/include/rpl_mixed_clear_tables.inc @@ -37,7 +37,7 @@ DELETE FROM t2 WHERE b <> UUID(); --echo --echo ******************** INSERT ******************** INSERT INTO t1 VALUES(1, 't1, text 1'); -INSERT INTO t1 VALUES(2, UUID()); +INSERT INTO t1 VALUES(2, SYS_GUID()); INSERT INTO t2 SELECT * FROM t1; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1'; DELETE FROM t1 WHERE a = 2; @@ -60,7 +60,7 @@ INSERT INTO t1 VALUES(1, 't1, text 1'); INSERT INTO t1 VALUES(2, 't1, text 2'); INSERT INTO t1 VALUES(3, 't1, text 3'); REPLACE INTO t1 VALUES(1, 't1, text 11'); -REPLACE INTO t1 VALUES(2, UUID()); +REPLACE INTO t1 VALUES(2, SYS_GUID()); REPLACE INTO t1 SET a=3, b='t1, text 33'; DELETE FROM t1 WHERE a = 2; --source suite/rpl/include/rpl_mixed_check_select.inc @@ -70,7 +70,7 @@ DELETE FROM t1 WHERE a = 2; --echo --echo ******************** SELECT ******************** INSERT INTO t1 VALUES(1, 't1, text 1'); -SELECT * FROM t1 WHERE b <> UUID() ORDER BY a; +SELECT * FROM t1 WHERE b <> SYS_GUID() ORDER BY a; --source suite/rpl/include/rpl_mixed_clear_tables.inc # JOIN @@ -89,7 +89,7 @@ SELECT * FROM t1 INNER JOIN t2 ON t1.b = t2.b ORDER BY t1.a,t2.a; --echo ******************** UNION ******************** INSERT INTO t1 VALUES(1, 't1, text 1'); INSERT INTO t2 VALUES(1, 't2, text 1'); -SELECT * FROM t1 UNION SELECT * FROM t2 WHERE t2.b <> UUID(); +SELECT * FROM t1 UNION SELECT * FROM t2 WHERE t2.b <> SYS_GUID(); --source suite/rpl/include/rpl_mixed_clear_tables.inc # TRUNCATE @@ -144,7 +144,7 @@ START TRANSACTION; INSERT INTO t1 VALUES (5, 'before savepoint s2'); SAVEPOINT s2; INSERT INTO t1 VALUES (6, 'after savepoint s2'); -INSERT INTO t1 VALUES (7, CONCAT('with UUID() ',UUID())); +INSERT INTO t1 VALUES (7, CONCAT('with SYS_GUID() ',SYS_GUID())); RELEASE SAVEPOINT s2; COMMIT; DELETE FROM t1 WHERE a = 7; @@ -257,7 +257,7 @@ BEGIN END| CREATE PROCEDURE p2 () BEGIN - UPDATE t1 SET b = UUID() WHERE a = 202; + UPDATE t1 SET b = SYS_GUID() WHERE a = 202; END| DELIMITER ;| INSERT INTO t1 VALUES(201, 'test 201'); @@ -309,7 +309,7 @@ DROP EVENT e2; INSERT INTO t1 VALUES(1, 'test1'); INSERT INTO t1 VALUES(2, 'test2'); CREATE VIEW v1 AS SELECT * FROM t1 WHERE a = 1; -CREATE VIEW v2 AS SELECT * FROM t1 WHERE b <> UUID(); +CREATE VIEW v2 AS SELECT * FROM t1 WHERE b <> SYS_GUID(); --source suite/rpl/include/rpl_mixed_check_view.inc ALTER VIEW v1 AS SELECT * FROM t1 WHERE a = 2; --source suite/rpl/include/rpl_mixed_check_view.inc @@ -323,7 +323,7 @@ DROP VIEW v2; --echo ******************** SHOW BINLOG EVENTS ******************** --source include/show_binlog_events.inc sync_slave_with_master; -# as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID +# as we're using SYS_GUID we don't SELECT but use "diff" like in rpl_row_SYS_GUID --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_slave.sql diff --git a/mysql-test/suite/rpl/include/rpl_switch_stm_row_mixed.inc b/mysql-test/suite/rpl/include/rpl_switch_stm_row_mixed.inc index 31b80732c60..d814a257711 100644 --- a/mysql-test/suite/rpl/include/rpl_switch_stm_row_mixed.inc +++ b/mysql-test/suite/rpl/include/rpl_switch_stm_row_mixed.inc @@ -10,7 +10,7 @@ # - Master is switching explicitly between STATEMENT, ROW, and MIXED # binlog format showing when it is possible and when not. # - Master switching from MIXED to RBR implicitly listing all use -# cases, e.g a query invokes UUID(), thereafter to serve as the +# cases, e.g a query invokes SYS_GUID(), thereafter to serve as the # definition of MIXED binlog format # - correctness of execution @@ -56,18 +56,18 @@ select @@global.binlog_format, @@session.binlog_format; CREATE TABLE t1 (a varchar(100)); -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_1_"; insert into t1 values("work_2_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_3_")); +insert into t1 values(concat(SYS_GUID(),"work_3_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_4_",UUID())); +insert into t1 values(concat("for_4_",SYS_GUID())); insert into t1 select "yesterday_5_"; # verify that temp tables prevent a switch to SBR @@ -129,41 +129,41 @@ select @@global.binlog_format, @@session.binlog_format; set binlog_format=default; select @@global.binlog_format, @@session.binlog_format; -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_17_"; insert into t1 values("work_18_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_19_")); +insert into t1 values(concat(SYS_GUID(),"work_19_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_20_",UUID())); +insert into t1 values(concat("for_20_",SYS_GUID())); insert into t1 select "yesterday_21_"; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_22_")); +insert into t1 values(concat(SYS_GUID(),"work_22_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_23_",UUID())); +insert into t1 values(concat("for_23_",SYS_GUID())); insert into t1 select "yesterday_24_"; # Test of CREATE TABLE SELECT -create table t2 ENGINE=MyISAM select rpad(UUID(),100,' '); -create table t3 select 1 union select UUID(); +create table t2 ENGINE=MyISAM select rpad(SYS_GUID(),100,' '); +create table t3 select 1 union select SYS_GUID(); --disable_warnings SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR -create table t4 select * from t1 where 3 in (select 1 union select 2 union select UUID() union select 3); +create table t4 select * from t1 where 3 in (select 1 union select 2 union select SYS_GUID() union select 3); --enable_warnings SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR create table t5 select * from t1 where 3 in (select 1 union select 2 union select curdate() union select 3); -# what if UUID() is first: +# what if SYS_GUID() is first: --disable_warnings -insert ignore into t5 select UUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); +insert ignore into t5 select SYS_GUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); --enable_warnings # inside a stored procedure @@ -172,14 +172,14 @@ delimiter |; create procedure foo() begin insert into t1 values("work_25_"); -insert into t1 values(concat("for_26_",UUID())); +insert into t1 values(concat("for_26_",SYS_GUID())); insert into t1 select "yesterday_27_"; end| create procedure foo2() begin -insert into t1 values(concat("emergency_28_",UUID())); +insert into t1 values(concat("emergency_28_",SYS_GUID())); insert into t1 values("work_29_"); -insert into t1 values(concat("for_30_",UUID())); +insert into t1 values(concat("for_30_",SYS_GUID())); set session binlog_format=row; # accepted for stored procs insert into t1 values("more work_31_"); set session binlog_format=mixed; @@ -199,7 +199,7 @@ delimiter ;| call foo(); call foo2(); call foo4("hello"); -call foo4(UUID()); +call foo4(SYS_GUID()); call foo4("world"); # test that can't SET in a stored function @@ -249,7 +249,7 @@ deallocate prepare stmt1; delimiter |; create function foo5() returns bigint unsigned begin - insert into t2 select UUID(); + insert into t2 select SYS_GUID(); return 100; end| delimiter ;| @@ -260,7 +260,7 @@ execute stmt1; execute stmt1; deallocate prepare stmt1; -# A simple stored function where UUID() is in the argument +# A simple stored function where SYS_GUID() is in the argument delimiter |; create function foo6(x varchar(100)) returns bigint unsigned begin @@ -269,17 +269,17 @@ begin end| delimiter ;| select foo6("foo6_1_"); -select foo6(concat("foo6_2_",UUID())); +select foo6(concat("foo6_2_",SYS_GUID())); -prepare stmt1 from 'select foo6(concat("foo6_3_",UUID()))'; +prepare stmt1 from 'select foo6(concat("foo6_3_",SYS_GUID()))'; execute stmt1; execute stmt1; deallocate prepare stmt1; -# Test of views using UUID() +# Test of views using SYS_GUID() -create view v1 as select uuid(); +create view v1 as select SYS_GUID(); create table t11 (data varchar(255)); insert into t11 select * from v1; # Test of querying INFORMATION_SCHEMA which parses the view's body, @@ -291,18 +291,18 @@ execute stmt1; execute stmt1; deallocate prepare stmt1; -# Test of triggers with UUID() +# Test of triggers with SYS_GUID() delimiter |; create trigger t11_bi before insert on t11 for each row begin - set NEW.data = concat(NEW.data,UUID()); + set NEW.data = concat(NEW.data,SYS_GUID()); end| delimiter ;| insert into t11 values("try_560_"); # Test that INSERT DELAYED works in mixed mode (BUG#20649) insert delayed into t2 values("delay_1_"); -insert delayed into t2 values(concat("delay_2_",UUID())); +insert delayed into t2 values(concat("delay_2_",SYS_GUID())); insert delayed into t2 values("delay_6_"); # Test for BUG#20633 (INSERT DELAYED RAND()/user_variable does not @@ -482,7 +482,7 @@ sync_slave_with_master; # Test for BUG#20499 "mixed mode with temporary table breaks binlog" # Slave used to have only 2 rows instead of 3. connection master; -CREATE TEMPORARY TABLE t15 SELECT UUID(); +CREATE TEMPORARY TABLE t15 SELECT SYS_GUID(); create table t16 like t15; INSERT INTO t16 SELECT * FROM t15; # we'll verify that this one is done RBB @@ -546,7 +546,7 @@ DROP TABLE IF EXISTS t12; SET SESSION BINLOG_FORMAT=MIXED; CREATE TABLE t12 (data LONG); LOCK TABLES t12 WRITE; -INSERT INTO t12 VALUES(UUID()); +INSERT INTO t12 VALUES(SYS_GUID()); UNLOCK TABLES; sync_slave_with_master; @@ -587,7 +587,7 @@ INSERT INTO t13 VALUES (my_current_user()); sync_slave_with_master; -# as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID +# as we're using SYS_GUID we don't SELECT but use "diff" like in rpl_row_UUID --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_slave.sql diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result index 7dd3907f102..513bc26a1cc 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result @@ -33,7 +33,7 @@ INSERT INTO t2 VALUES(1, 't2, text 1'); ******************** DELETE ******************** DELETE FROM t1 WHERE a = 1; -DELETE FROM t2 WHERE b <> UUID(); +DELETE FROM t2 WHERE b <> SYS_GUID(); SELECT COUNT(*) FROM t1; COUNT(*) 1 @@ -64,7 +64,7 @@ DELETE FROM t2; ******************** INSERT ******************** INSERT INTO t1 VALUES(1, 't1, text 1'); -INSERT INTO t1 VALUES(2, UUID()); +INSERT INTO t1 VALUES(2, SYS_GUID()); INSERT INTO t2 SELECT * FROM t1; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1'; DELETE FROM t1 WHERE a = 2; @@ -143,7 +143,7 @@ INSERT INTO t1 VALUES(1, 't1, text 1'); INSERT INTO t1 VALUES(2, 't1, text 2'); INSERT INTO t1 VALUES(3, 't1, text 3'); REPLACE INTO t1 VALUES(1, 't1, text 11'); -REPLACE INTO t1 VALUES(2, UUID()); +REPLACE INTO t1 VALUES(2, SYS_GUID()); REPLACE INTO t1 SET a=3, b='t1, text 33'; DELETE FROM t1 WHERE a = 2; SELECT COUNT(*) FROM t1; @@ -178,7 +178,7 @@ DELETE FROM t2; ******************** SELECT ******************** INSERT INTO t1 VALUES(1, 't1, text 1'); -SELECT * FROM t1 WHERE b <> UUID() ORDER BY a; +SELECT * FROM t1 WHERE b <> SYS_GUID() ORDER BY a; a b 1 t1, text 1 DELETE FROM t1; @@ -203,7 +203,7 @@ DELETE FROM t2; ******************** UNION ******************** INSERT INTO t1 VALUES(1, 't1, text 1'); INSERT INTO t2 VALUES(1, 't2, text 1'); -SELECT * FROM t1 UNION SELECT * FROM t2 WHERE t2.b <> UUID(); +SELECT * FROM t1 UNION SELECT * FROM t2 WHERE t2.b <> SYS_GUID(); a b 1 t1, text 1 1 t2, text 1 @@ -430,7 +430,7 @@ START TRANSACTION; INSERT INTO t1 VALUES (5, 'before savepoint s2'); SAVEPOINT s2; INSERT INTO t1 VALUES (6, 'after savepoint s2'); -INSERT INTO t1 VALUES (7, CONCAT('with UUID() ',UUID())); +INSERT INTO t1 VALUES (7, CONCAT('with SYS_GUID() ',SYS_GUID())); RELEASE SAVEPOINT s2; COMMIT; DELETE FROM t1 WHERE a = 7; @@ -598,7 +598,7 @@ UPDATE t1 SET b = 'test' WHERE a = 201; END| CREATE PROCEDURE p2 () BEGIN -UPDATE t1 SET b = UUID() WHERE a = 202; +UPDATE t1 SET b = SYS_GUID() WHERE a = 202; END| INSERT INTO t1 VALUES(201, 'test 201'); CALL p1(); @@ -790,7 +790,7 @@ DELETE FROM t2; INSERT INTO t1 VALUES(1, 'test1'); INSERT INTO t1 VALUES(2, 'test2'); CREATE VIEW v1 AS SELECT * FROM t1 WHERE a = 1; -CREATE VIEW v2 AS SELECT * FROM t1 WHERE b <> UUID(); +CREATE VIEW v2 AS SELECT * FROM t1 WHERE b <> SYS_GUID(); 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 `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where `t1`.`a` = 1 latin1 latin1_swedish_ci @@ -850,7 +850,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 1 master-bin.000001 # Xid # # COMMIT /* XID */ master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # DELETE FROM t2 WHERE b <> UUID() +master-bin.000001 # Annotate_rows # # DELETE FROM t2 WHERE b <> SYS_GUID() master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) master-bin.000001 # Delete_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -864,7 +864,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') master-bin.000001 # Xid # # COMMIT /* XID */ master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES(2, UUID()) +master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES(2, SYS_GUID()) master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -912,7 +912,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text 11') master-bin.000001 # Xid # # COMMIT /* XID */ master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # REPLACE INTO t1 VALUES(2, UUID()) +master-bin.000001 # Annotate_rows # # REPLACE INTO t1 VALUES(2, SYS_GUID()) master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -1007,7 +1007,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2') master-bin.000001 # Query # # SAVEPOINT `s2` master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2') -master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (7, CONCAT('with UUID() ',UUID())) +master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (7, CONCAT('with SYS_GUID() ',SYS_GUID())) master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -1049,7 +1049,7 @@ END master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`() BEGIN -UPDATE t1 SET b = UUID() WHERE a = 202; +UPDATE t1 SET b = SYS_GUID() WHERE a = 202; END master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test 201') @@ -1061,7 +1061,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test 202') master-bin.000001 # Xid # # COMMIT /* XID */ master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE t1 SET b = UUID() WHERE a = 202 +master-bin.000001 # Annotate_rows # # UPDATE t1 SET b = SYS_GUID() WHERE a = 202 master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -1124,7 +1124,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1 master-bin.000001 # Gtid # # GTID #-#-# -master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> UUID() +master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> SYS_GUID() master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test_rpl`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2 master-bin.000001 # Gtid # # GTID #-#-# diff --git a/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result b/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result index 936f604be2e..71332034b15 100644 --- a/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result +++ b/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result @@ -41,16 +41,16 @@ select @@global.binlog_format, @@session.binlog_format; @@global.binlog_format @@session.binlog_format ROW ROW CREATE TABLE t1 (a varchar(100)); -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_1_"; insert into t1 values("work_2_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_3_")); +insert into t1 values(concat(SYS_GUID(),"work_3_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_4_",UUID())); +insert into t1 values(concat("for_4_",SYS_GUID())); insert into t1 select "yesterday_5_"; create temporary table tmp(a char(100)); insert into tmp values("see_6_"); @@ -116,43 +116,43 @@ set binlog_format=default; select @@global.binlog_format, @@session.binlog_format; @@global.binlog_format @@session.binlog_format MIXED MIXED -prepare stmt1 from 'insert into t1 select concat(UUID(),?)'; +prepare stmt1 from 'insert into t1 select concat(SYS_GUID(),?)'; set @string="emergency_17_"; insert into t1 values("work_18_"); execute stmt1 using @string; deallocate prepare stmt1; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_19_")); +insert into t1 values(concat(SYS_GUID(),"work_19_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_20_",UUID())); +insert into t1 values(concat("for_20_",SYS_GUID())); insert into t1 select "yesterday_21_"; prepare stmt1 from 'insert into t1 select ?'; -insert into t1 values(concat(UUID(),"work_22_")); +insert into t1 values(concat(SYS_GUID(),"work_22_")); execute stmt1 using @string; deallocate prepare stmt1; -insert into t1 values(concat("for_23_",UUID())); +insert into t1 values(concat("for_23_",SYS_GUID())); insert into t1 select "yesterday_24_"; -create table t2 ENGINE=MyISAM select rpad(UUID(),100,' '); -create table t3 select 1 union select UUID(); +create table t2 ENGINE=MyISAM select rpad(SYS_GUID(),100,' '); +create table t3 select 1 union select SYS_GUID(); SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR -create table t4 select * from t1 where 3 in (select 1 union select 2 union select UUID() union select 3); +create table t4 select * from t1 where 3 in (select 1 union select 2 union select SYS_GUID() union select 3); SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR create table t5 select * from t1 where 3 in (select 1 union select 2 union select curdate() union select 3); Warnings: Warning 1292 Truncated incorrect datetime value: '3' -insert ignore into t5 select UUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); +insert ignore into t5 select SYS_GUID() from t1 where 3 in (select 1 union select 2 union select 3 union select * from t4); create procedure foo() begin insert into t1 values("work_25_"); -insert into t1 values(concat("for_26_",UUID())); +insert into t1 values(concat("for_26_",SYS_GUID())); insert into t1 select "yesterday_27_"; end| create procedure foo2() begin -insert into t1 values(concat("emergency_28_",UUID())); +insert into t1 values(concat("emergency_28_",SYS_GUID())); insert into t1 values("work_29_"); -insert into t1 values(concat("for_30_",UUID())); +insert into t1 values(concat("for_30_",SYS_GUID())); set session binlog_format=row; # accepted for stored procs insert into t1 values("more work_31_"); set session binlog_format=mixed; @@ -171,7 +171,7 @@ end| call foo(); call foo2(); call foo4("hello"); -call foo4(UUID()); +call foo4(SYS_GUID()); call foo4("world"); select foo3(); ERROR HY000: Cannot change the binary logging format inside a stored function or trigger @@ -207,7 +207,7 @@ foo4() deallocate prepare stmt1; create function foo5() returns bigint unsigned begin -insert into t2 select UUID(); +insert into t2 select SYS_GUID(); return 100; end| select foo5(); @@ -229,18 +229,18 @@ end| select foo6("foo6_1_"); foo6("foo6_1_") 100 -select foo6(concat("foo6_2_",UUID())); -foo6(concat("foo6_2_",UUID())) +select foo6(concat("foo6_2_",SYS_GUID())); +foo6(concat("foo6_2_",SYS_GUID())) 100 -prepare stmt1 from 'select foo6(concat("foo6_3_",UUID()))'; +prepare stmt1 from 'select foo6(concat("foo6_3_",SYS_GUID()))'; execute stmt1; -foo6(concat("foo6_3_",UUID())) +foo6(concat("foo6_3_",SYS_GUID())) 100 execute stmt1; -foo6(concat("foo6_3_",UUID())) +foo6(concat("foo6_3_",SYS_GUID())) 100 deallocate prepare stmt1; -create view v1 as select uuid(); +create view v1 as select SYS_GUID(); create table t11 (data varchar(255)); insert into t11 select * from v1; insert into t11 select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysqltest1' and TABLE_NAME IN ('v1','t11'); @@ -250,11 +250,11 @@ execute stmt1; deallocate prepare stmt1; create trigger t11_bi before insert on t11 for each row begin -set NEW.data = concat(NEW.data,UUID()); +set NEW.data = concat(NEW.data,SYS_GUID()); end| insert into t11 values("try_560_"); insert delayed into t2 values("delay_1_"); -insert delayed into t2 values(concat("delay_2_",UUID())); +insert delayed into t2 values(concat("delay_2_",SYS_GUID())); insert delayed into t2 values("delay_6_"); insert delayed into t2 values(rand()); set @a=2.345; @@ -356,7 +356,7 @@ alter table t1 modify a int, drop primary key; insert into t1 values(null,"try_57_"); connection slave; connection master; -CREATE TEMPORARY TABLE t15 SELECT UUID(); +CREATE TEMPORARY TABLE t15 SELECT SYS_GUID(); create table t16 like t15; INSERT INTO t16 SELECT * FROM t15; insert into t16 values("try_65_"); @@ -427,7 +427,7 @@ DROP TABLE IF EXISTS t12; SET SESSION BINLOG_FORMAT=MIXED; CREATE TABLE t12 (data LONG); LOCK TABLES t12 WRITE; -INSERT INTO t12 VALUES(UUID()); +INSERT INTO t12 VALUES(SYS_GUID()); UNLOCK TABLES; connection slave; connection master; diff --git a/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result b/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result index 24d7d6cebf7..650d9e5c326 100644 --- a/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result +++ b/mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result @@ -4,7 +4,7 @@ include/master-slave.inc connection master; CREATE TABLE t1 (a CHAR(48)); CREATE TEMPORARY TABLE t1_tmp1(a INT); -INSERT INTO t1 VALUES (UUID()); +INSERT INTO t1 VALUES (SYS_GUID()); connection slave; ==== Verify results on slave ==== SHOW STATUS LIKE "Slave_open_temp_tables"; @@ -119,12 +119,12 @@ master-bin.000001 # Query # # COMMIT BEGIN; DROP TEMPORARY TABLE t1; # The rows event will binlogged after 'INSERT INTO t1 VALUES(1)' -INSERT IGNORE INTO t1 VALUES(uuid()+0); +INSERT IGNORE INTO t1 VALUES(SYS_GUID()+0); COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT IGNORE INTO t1 VALUES(uuid()+0) +master-bin.000001 # Annotate_rows # # INSERT IGNORE INTO t1 VALUES(SYS_GUID()+0) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT diff --git a/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test b/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test index cbbf4c5ffa7..ca7be98e50c 100644 --- a/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test +++ b/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test @@ -4,7 +4,7 @@ # This test case will test the condition of the bug#40013. # The test step is: # 1: create temp table on connection 'master'; -# 2: switch to ROW format using 'INSERT INTO t1 VALUES (UUID());' +# 2: switch to ROW format using 'INSERT INTO t1 VALUES (SYS_GUID());' # 3: disconnect 'master' and connect to a new connection 'master1'; # 4: sync to slave and check the number of temp tables on slave. # @@ -19,7 +19,7 @@ source include/master-slave.inc; CREATE TABLE t1 (a CHAR(48)); CREATE TEMPORARY TABLE t1_tmp1(a INT); -INSERT INTO t1 VALUES (UUID()); +INSERT INTO t1 VALUES (SYS_GUID()); sync_slave_with_master; @@ -187,7 +187,7 @@ DROP TEMPORARY TABLE t1; --echo # The rows event will binlogged after 'INSERT INTO t1 VALUES(1)' --disable_warnings -INSERT IGNORE INTO t1 VALUES(uuid()+0); +INSERT IGNORE INTO t1 VALUES(SYS_GUID()+0); --enable_warnings COMMIT; diff --git a/mysql-test/suite/vcol/r/binlog.result b/mysql-test/suite/vcol/r/binlog.result index 519877e9bc0..97d0aabb315 100644 --- a/mysql-test/suite/vcol/r/binlog.result +++ b/mysql-test/suite/vcol/r/binlog.result @@ -88,7 +88,7 @@ CREATE TEMPORARY TABLE t1 SELECT UUID(); show create table t1; Table Create Table t1 CREATE TEMPORARY TABLE `t1` ( - `UUID()` varchar(36) DEFAULT NULL + `UUID()` uuid DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 CREATE TABLE t2 (a INT PRIMARY KEY, b TEXT, c INT GENERATED ALWAYS AS(b)); INSERT INTO t2 (a,b) VALUES (1,1); diff --git a/plugin/type_uuid/item_uuidfunc.cc b/plugin/type_uuid/item_uuidfunc.cc index 0c79cbbd5b8..725b696f905 100644 --- a/plugin/type_uuid/item_uuidfunc.cc +++ b/plugin/type_uuid/item_uuidfunc.cc @@ -18,26 +18,29 @@ #include "item_uuidfunc.h" #include "sql_type_uuid.h" -class UUID_generated : public UUIDBundle::Fbt -{ -public: - UUID_generated() { my_uuid((uchar *) m_buffer); } - bool to_string(String *to, bool with_separators) const - { - if (to->alloc(max_char_length() + 1)) - return true; - to->set_charset(system_charset_info); - to->length(MY_UUID_BARE_STRING_LENGTH + with_separators*MY_UUID_SEPARATORS); - my_uuid2str((const uchar *) m_buffer, (char *) to->ptr(), with_separators); - return false; - } -}; - -String *Item_func_uuid::val_str(String *str) +String *Item_func_sys_guid::val_str(String *str) { DBUG_ASSERT(fixed()); - if (!UUID_generated().to_string(str, with_separators)) - return str; - str->set("", 0, collation.collation); + str->alloc(uuid_len()+1); + str->length(uuid_len()); + str->set_charset(collation.collation); + + uchar buf[MY_UUID_SIZE]; + my_uuid(buf); + my_uuid2str(buf, const_cast(str->ptr()), with_dashes); return str; } + +const Type_handler *Item_func_uuid::type_handler() const +{ + return UUIDBundle::type_handler_fbt(); +} + +bool Item_func_uuid::val_native(THD *, Native *to) +{ + DBUG_ASSERT(fixed()); + to->alloc(MY_UUID_SIZE); + to->length(MY_UUID_SIZE); + my_uuid((uchar*)to->ptr()); + return 0; +} diff --git a/plugin/type_uuid/item_uuidfunc.h b/plugin/type_uuid/item_uuidfunc.h index 3756d70ba3d..add4f202784 100644 --- a/plugin/type_uuid/item_uuidfunc.h +++ b/plugin/type_uuid/item_uuidfunc.h @@ -19,33 +19,48 @@ #include "item.h" -class Item_func_uuid: public Item_str_func +class Item_func_sys_guid: public Item_str_func { - bool with_separators; +protected: + bool with_dashes; + size_t uuid_len() const + { return MY_UUID_BARE_STRING_LENGTH + with_dashes*MY_UUID_SEPARATORS; } public: - Item_func_uuid(THD *thd, bool with_separators_arg): - Item_str_func(thd), with_separators(with_separators_arg) {} + Item_func_sys_guid(THD *thd): Item_str_func(thd), with_dashes(false) {} bool fix_length_and_dec() { collation.set(DTCollation_numeric()); - fix_char_length(with_separators ? MY_UUID_STRING_LENGTH - : MY_UUID_BARE_STRING_LENGTH); + fix_char_length(uuid_len()); return FALSE; } bool const_item() const { return false; } table_map used_tables() const { return RAND_TABLE_BIT; } LEX_CSTRING func_name_cstring() const override { - static LEX_CSTRING name1= {STRING_WITH_LEN("uuid") }; - static LEX_CSTRING name2= {STRING_WITH_LEN("sys_guid") }; - return with_separators ? name1 : name2; + static LEX_CSTRING name= {STRING_WITH_LEN("sys_guid") }; + return name; } - String *val_str(String *); + String *val_str(String *) override; bool check_vcol_func_processor(void *arg) { return mark_unsupported_function(func_name(), "()", arg, VCOL_NON_DETERMINISTIC); } Item *get_copy(THD *thd) + { return get_item_copy(thd, this); } +}; + +class Item_func_uuid: public Item_func_sys_guid +{ +public: + Item_func_uuid(THD *thd): Item_func_sys_guid(thd) { with_dashes= true; } + const Type_handler *type_handler() const override; + LEX_CSTRING func_name_cstring() const override + { + static LEX_CSTRING name= {STRING_WITH_LEN("uuid") }; + return name; + } + bool val_native(THD *thd, Native *to) override; + Item *get_copy(THD *thd) { return get_item_copy(thd, this); } }; diff --git a/plugin/type_uuid/plugin.cc b/plugin/type_uuid/plugin.cc index ae511b95456..6e7df8897fb 100644 --- a/plugin/type_uuid/plugin.cc +++ b/plugin/type_uuid/plugin.cc @@ -37,7 +37,7 @@ public: DBUG_ENTER("Create_func_uuid::create"); thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION); thd->lex->safe_to_cache_query= 0; - DBUG_RETURN(new (thd->mem_root) Item_func_uuid(thd, true)); + DBUG_RETURN(new (thd->mem_root) Item_func_uuid(thd)); } static Create_func_uuid s_singleton; @@ -55,7 +55,7 @@ public: DBUG_ENTER("Create_func_sys_guid::create"); thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION); thd->lex->safe_to_cache_query= 0; - DBUG_RETURN(new (thd->mem_root) Item_func_uuid(thd, false)); + DBUG_RETURN(new (thd->mem_root) Item_func_sys_guid(thd)); } static Create_func_sys_guid s_singleton;