From f82212946f64499ad1a82a6dbe567f258a2ae298 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Sun, 23 Apr 2017 12:57:26 +0400 Subject: [PATCH] Fixing a bug in the recent commit that added trigger names into error messages Trigger names were erroneously cut to 8 or 4 bytes (on 64 and 32 bit machines). Recording correct tests results. --- mysql-test/r/create_drop_trigger.result | 4 ++-- mysql-test/r/trigger.result | 2 +- mysql-test/suite/funcs_1/r/innodb_trig_0102.result | 4 ++-- mysql-test/suite/funcs_1/r/innodb_trig_0407.result | 2 +- mysql-test/suite/funcs_1/r/memory_trig_0102.result | 4 ++-- mysql-test/suite/funcs_1/r/memory_trig_0407.result | 2 +- mysql-test/suite/funcs_1/r/myisam_trig_0102.result | 4 ++-- mysql-test/suite/funcs_1/r/myisam_trig_0407.result | 2 +- mysql-test/suite/rpl/r/rpl_create_drop_trigger.result | 2 +- sql/sql_trigger.cc | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mysql-test/r/create_drop_trigger.result b/mysql-test/r/create_drop_trigger.result index 540d898d848f9..d2857a0cb79c7 100644 --- a/mysql-test/r/create_drop_trigger.result +++ b/mysql-test/r/create_drop_trigger.result @@ -10,7 +10,7 @@ SELECT @sum; CREATE TRIGGER IF NOT EXISTS val_sum_new BEFORE INSERT ON t1 FOR EACH ROW SET @sum = @sum + NEW.val; CREATE TRIGGER IF NOT EXISTS val_sum AFTER INSERT ON t1 FOR EACH ROW SET @sum = @sum + 1 + NEW.val; Warnings: -Note 1359 Trigger 'db1.val_' already exists +Note 1359 Trigger 'db1.val_sum' already exists CREATE OR REPLACE TRIGGER IF NOT EXISTS val_sum BEFORE INSERT ON t1 FOR EACH ROW SET @sum = @sum + 2 + NEW.val; ERROR HY000: Incorrect usage of OR REPLACE and IF NOT EXISTS SELECT ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME='val_sum'; @@ -21,7 +21,7 @@ SELECT ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME='val ACTION_STATEMENT SET @sum = @sum + 3 + NEW.val CREATE TRIGGER val_sum BEFORE INSERT ON t1 FOR EACH ROW SET @sum = @sum + 4 + NEW.val; -ERROR HY000: Trigger 'db1.val_' already exists +ERROR HY000: Trigger 'db1.val_sum' already exists SELECT ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME='val_sum'; ACTION_STATEMENT SET @sum = @sum + 3 + NEW.val diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result index a9f4cb12a9267..77590d8508b28 100644 --- a/mysql-test/r/trigger.result +++ b/mysql-test/r/trigger.result @@ -1986,7 +1986,7 @@ drop table if exists t1; create table t1 (i int, j int); create trigger t1_bi before insert on t1 for each row begin end; create trigger t1_bi before insert on t1 for each row begin end; -ERROR HY000: Trigger 'test.t1_' already exists +ERROR HY000: Trigger 'test.t1_bi' already exists create trigger t1_bi2 before insert on t1 for each row begin end; drop trigger t1_bi; drop trigger t1_bi2; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_0102.result b/mysql-test/suite/funcs_1/r/innodb_trig_0102.result index 49ff935f63fa6..2bc3f46821df1 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_0102.result @@ -253,7 +253,7 @@ Testcase 3.5.1.10: ------------------ CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X'; CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y'; -ERROR HY000: Trigger 'test.trg' already exists +ERROR HY000: Trigger 'test.trg7_1' already exists drop trigger trg7_1; Testcase 3.5.1.?: @@ -266,7 +266,7 @@ create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; create trigger trig before update on t2 for each row set new.f1 ='trig t2'; -ERROR HY000: Trigger 'test.tri' already exists +ERROR HY000: Trigger 'test.trig' already exists insert into t1 value ('insert to t1',1); select * from t1; f1 f2 diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_0407.result b/mysql-test/suite/funcs_1/r/innodb_trig_0407.result index 8228589a48286..b6a3a34207d57 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_0407.result @@ -459,7 +459,7 @@ Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; -ERROR HY000: Trigger 'test.trg' already exists +ERROR HY000: Trigger 'test.trg_3_406010_1' already exists select @test_var; @test_var 1 diff --git a/mysql-test/suite/funcs_1/r/memory_trig_0102.result b/mysql-test/suite/funcs_1/r/memory_trig_0102.result index 14bc8b443539d..fa35ef6e7ae28 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_0102.result @@ -254,7 +254,7 @@ Testcase 3.5.1.10: ------------------ CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X'; CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y'; -ERROR HY000: Trigger 'test.trg' already exists +ERROR HY000: Trigger 'test.trg7_1' already exists drop trigger trg7_1; Testcase 3.5.1.?: @@ -267,7 +267,7 @@ create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; create trigger trig before update on t2 for each row set new.f1 ='trig t2'; -ERROR HY000: Trigger 'test.tri' already exists +ERROR HY000: Trigger 'test.trig' already exists insert into t1 value ('insert to t1',1); select * from t1; f1 f2 diff --git a/mysql-test/suite/funcs_1/r/memory_trig_0407.result b/mysql-test/suite/funcs_1/r/memory_trig_0407.result index 892e84a8dac9d..57b14e49f7224 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_0407.result @@ -459,7 +459,7 @@ Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; -ERROR HY000: Trigger 'test.trg' already exists +ERROR HY000: Trigger 'test.trg_3_406010_1' already exists select @test_var; @test_var 1 diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_0102.result b/mysql-test/suite/funcs_1/r/myisam_trig_0102.result index 14bc8b443539d..fa35ef6e7ae28 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_0102.result @@ -254,7 +254,7 @@ Testcase 3.5.1.10: ------------------ CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X'; CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y'; -ERROR HY000: Trigger 'test.trg' already exists +ERROR HY000: Trigger 'test.trg7_1' already exists drop trigger trg7_1; Testcase 3.5.1.?: @@ -267,7 +267,7 @@ create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; create trigger trig before update on t2 for each row set new.f1 ='trig t2'; -ERROR HY000: Trigger 'test.tri' already exists +ERROR HY000: Trigger 'test.trig' already exists insert into t1 value ('insert to t1',1); select * from t1; f1 f2 diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_0407.result b/mysql-test/suite/funcs_1/r/myisam_trig_0407.result index 892e84a8dac9d..57b14e49f7224 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_0407.result @@ -459,7 +459,7 @@ Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; -ERROR HY000: Trigger 'test.trg' already exists +ERROR HY000: Trigger 'test.trg_3_406010_1' already exists select @test_var; @test_var 1 diff --git a/mysql-test/suite/rpl/r/rpl_create_drop_trigger.result b/mysql-test/suite/rpl/r/rpl_create_drop_trigger.result index 71c2bfe30ce6e..e1474d8854e47 100644 --- a/mysql-test/suite/rpl/r/rpl_create_drop_trigger.result +++ b/mysql-test/suite/rpl/r/rpl_create_drop_trigger.result @@ -19,7 +19,7 @@ SET @sum = @sum + NEW.val + 1 connection master; CREATE TRIGGER IF NOT EXISTS val_sum AFTER INSERT ON t1 FOR EACH ROW SET @sum = @sum + NEW.val + 2; Warnings: -Note 1359 Trigger 'db1.val_' already exists +Note 1359 Trigger 'db1.val_sum' already exists SELECT ACTION_STATEMENT AS ACTION_STATEMENT_Master FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME='val_sum'; ACTION_STATEMENT_Master SET @sum = @sum + NEW.val + 1 diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 36606b7645dd8..d804e568b798e 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -833,7 +833,7 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables, } else if (lex->create_info.if_not_exists()) { - strxnmov(trigname_buff, sizeof(trigname_buff-1), tables->db, ".", + strxnmov(trigname_buff, sizeof(trigname_buff) - 1, tables->db, ".", lex->spname->m_name.str, NullS); push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, ER_TRG_ALREADY_EXISTS, @@ -852,7 +852,7 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables, } else { - strxnmov(trigname_buff, sizeof(trigname_buff-1), tables->db, ".", + strxnmov(trigname_buff, sizeof(trigname_buff) - 1, tables->db, ".", lex->spname->m_name.str, NullS); my_error(ER_TRG_ALREADY_EXISTS, MYF(0), trigname_buff); DBUG_RETURN(true);