From 847eb24b17c2f65008b3d2c2cc031088ee5cca8e Mon Sep 17 00:00:00 2001 From: Monty Date: Wed, 19 Apr 2017 22:09:43 +0300 Subject: [PATCH] Fixed some wrong/inconsistent error message - Added trigger name to "Trigger already exists" error message - Added also missing query name to ER_DUP_QUERY_NAME - Fixed wrong use of MASTER_DELAY_VALUE_OUT_OF_RANGE --- mysql-test/r/create.result | 2 +- mysql-test/r/create_drop_binlog.result | 2 +- mysql-test/r/create_drop_trigger.result | 4 ++-- mysql-test/r/cte_nonrecursive.result | 2 +- mysql-test/r/trigger.result | 6 +++--- 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/rpl/r/rpl_create_drop_trigger.result | 2 +- sql/share/errmsg-utf8.txt | 8 ++++---- sql/sql_trigger.cc | 6 +++++- sql/sql_yacc.yy | 2 +- sql/sql_yacc_ora.yy | 2 +- 15 files changed, 28 insertions(+), 24 deletions(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 81b65c420cd..1f032faaa40 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1351,7 +1351,7 @@ CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW BEGIN UPDATE A SET `pk`=1 WHERE `pk`=0 ; END ;| -ERROR HY000: Trigger already exists +ERROR HY000: Trigger 'test.f' already exists CREATE TRIGGER f1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN UPDATE A SET `pk`=1 WHERE `pk`=0 ; diff --git a/mysql-test/r/create_drop_binlog.result b/mysql-test/r/create_drop_binlog.result index d22d8dd5d92..5a14ed5def9 100644 --- a/mysql-test/r/create_drop_binlog.result +++ b/mysql-test/r/create_drop_binlog.result @@ -274,7 +274,7 @@ DROP TRIGGER tr1; CREATE TRIGGER IF NOT EXISTS tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.a=20; CREATE TRIGGER IF NOT EXISTS tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.a=21; Warnings: -Note 1359 Trigger already exists +Note 1359 Trigger 'test.tr1' already exists DROP TRIGGER IF EXISTS tr1; DROP TRIGGER IF EXISTS tr1; Warnings: diff --git a/mysql-test/r/create_drop_trigger.result b/mysql-test/r/create_drop_trigger.result index f7ae8d21a7f..540d898d848 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 already exists +Note 1359 Trigger 'db1.val_' 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 already exists +ERROR HY000: Trigger 'db1.val_' 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/cte_nonrecursive.result b/mysql-test/r/cte_nonrecursive.result index 207df07f083..5b773067f13 100644 --- a/mysql-test/r/cte_nonrecursive.result +++ b/mysql-test/r/cte_nonrecursive.result @@ -703,7 +703,7 @@ ERROR 42S21: Duplicate column name 'f1' with t as (select * from t2 where c>3), t as (select a from t1 where a>2) select * from t,t1 where t1.a=t.c; -ERROR HY000: Duplicate query name in WITH clause +ERROR HY000: Duplicate query name `t` in WITH clause with t as (select a from s where a<5), s as (select a from t1 where b>='d') select * from t,s where t.a=s.a; diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result index 9224756407b..a9f4cb12a92 100644 --- a/mysql-test/r/trigger.result +++ b/mysql-test/r/trigger.result @@ -301,11 +301,11 @@ create trigger trg before insert on t2 for each row set @a:=1; ERROR 42S02: Table 'test.t2' doesn't exist create trigger trg before insert on t1 for each row set @a:=1; create trigger trg after insert on t1 for each row set @a:=1; -ERROR HY000: Trigger already exists +ERROR HY000: Trigger 'test.trg' already exists create trigger trg2 before insert on t1 for each row set @a:=1; drop trigger trg2; create trigger trg before insert on t3 for each row set @a:=1; -ERROR HY000: Trigger already exists +ERROR HY000: Trigger 'test.trg' already exists create trigger trg2 before insert on t3 for each row set @a:=1; drop trigger trg2; drop trigger trg; @@ -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 already exists +ERROR HY000: Trigger 'test.t1_' 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 77fabeaef77..49ff935f63f 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 already exists +ERROR HY000: Trigger 'test.trg' 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 already exists +ERROR HY000: Trigger 'test.tri' 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 81ead0c9346..8228589a482 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 already exists +ERROR HY000: Trigger 'test.trg' 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 85da4aa7832..14bc8b44353 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 already exists +ERROR HY000: Trigger 'test.trg' 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 already exists +ERROR HY000: Trigger 'test.tri' 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 72a7cb4f01d..892e84a8dac 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 already exists +ERROR HY000: Trigger 'test.trg' 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 85da4aa7832..14bc8b44353 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 already exists +ERROR HY000: Trigger 'test.trg' 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 already exists +ERROR HY000: Trigger 'test.tri' already exists insert into t1 value ('insert to t1',1); select * from t1; f1 f2 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 76024d1fd74..71c2bfe30ce 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 already exists +Note 1359 Trigger 'db1.val_' 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/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index 562d0acdd19..b2e895b0775 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -5257,8 +5257,8 @@ ER_SP_GOTO_IN_HNDLR eng "GOTO is not allowed in a stored procedure handler" ger "GOTO ist im Handler einer gespeicherten Prozedur nicht erlaubt" ER_TRG_ALREADY_EXISTS - eng "Trigger already exists" - ger "Trigger existiert bereits" + eng "Trigger '%s' already exists" + ger "Trigger '%s' existiert bereits" ER_TRG_DOES_NOT_EXIST eng "Trigger does not exist" ger "Trigger existiert nicht" @@ -6471,7 +6471,7 @@ ER_CANNOT_LOAD_FROM_TABLE_V2 ger "Kann %s.%s nicht einlesen. Tabelle ist wahrscheinlich beschÃĪdigt" ER_MASTER_DELAY_VALUE_OUT_OF_RANGE - eng "The requested value %u for the master delay exceeds the maximum %u" + eng "The requested value %lu for the master delay exceeds the maximum %lu" ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT eng "Only Format_description_log_event and row events are allowed in BINLOG statements (but %s was provided)" @@ -7351,7 +7351,7 @@ ER_WITH_COL_WRONG_LIST ER_TOO_MANY_DEFINITIONS_IN_WITH_CLAUSE eng "Too many WITH elements in WITH clause" ER_DUP_QUERY_NAME - eng "Duplicate query name in WITH clause" + eng "Duplicate query name %`-.64s in WITH clause" ER_RECURSIVE_WITHOUT_ANCHORS eng "No anchors for recursive WITH element '%s'" ER_UNACCEPTABLE_MUTUAL_RECURSION diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index ce80d53feb2..36606b7645d 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -833,6 +833,8 @@ 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, ".", + lex->spname->m_name.str, NullS); push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, ER_TRG_ALREADY_EXISTS, ER_THD(thd, ER_TRG_ALREADY_EXISTS), @@ -850,7 +852,9 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables, } else { - my_error(ER_TRG_ALREADY_EXISTS, MYF(0)); + 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); } } diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index e06993bf9ca..960f1b4de3d 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2230,7 +2230,7 @@ master_def: if ($3 > MASTER_DELAY_MAX) { my_error(ER_MASTER_DELAY_VALUE_OUT_OF_RANGE, MYF(0), - $3, MASTER_DELAY_MAX); + (ulong) $3, (ulong) MASTER_DELAY_MAX); } else Lex->mi.sql_delay = $3; diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy index 4718a290627..7d272d28088 100644 --- a/sql/sql_yacc_ora.yy +++ b/sql/sql_yacc_ora.yy @@ -1684,7 +1684,7 @@ master_def: if ($3 > MASTER_DELAY_MAX) { my_error(ER_MASTER_DELAY_VALUE_OUT_OF_RANGE, MYF(0), - $3, MASTER_DELAY_MAX); + (ulong) $3, (ulong) MASTER_DELAY_MAX); } else Lex->mi.sql_delay = $3;