Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/bb-10.2-ext' into 10.3
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Barkov committed Apr 20, 2017
2 parents 7ba0cfc + 33b6a34 commit ef6e03d
Show file tree
Hide file tree
Showing 26 changed files with 217 additions and 229 deletions.
2 changes: 1 addition & 1 deletion mysql-test/r/create.result
Original file line number Diff line number Diff line change
Expand Up @@ -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 ;
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/r/create_drop_binlog.result
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions mysql-test/r/create_drop_trigger.result
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/r/cte_nonrecursive.result
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions mysql-test/r/trigger.result
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
24 changes: 22 additions & 2 deletions mysql-test/r/view.result
Original file line number Diff line number Diff line change
Expand Up @@ -2268,12 +2268,32 @@ create table t1 (s1 int);
create view abc as select * from t1 as abc;
drop table t1;
drop view abc;
flush status;
create table t1(f1 char(1));
create view v1 as select * from t1;
select * from (select f1 as f2 from v1) v where v.f2='a';
f2
select * from (select f1 as f2, f1 as f3 from v1) v where v.f2='a';
f2 f3
show status like "Created_tmp%";
Variable_name Value
Created_tmp_disk_tables 0
Created_tmp_files 0
Created_tmp_tables 0
drop view v1;
drop table t1;
set @tmp=@@optimizer_switch;
set @@optimizer_switch='derived_merge=OFF';
create table t1(f1 char(1));
create view v1 as select * from t1;
select * from (select f1 as f2, f1 as f3 from v1) v where v.f2='a';
f2 f3
show status like "Created_tmp%";
Variable_name Value
Created_tmp_disk_tables 0
Created_tmp_files 0
Created_tmp_tables 1
drop view v1;
drop table t1;
set @@optimizer_switch=@tmp;
create view v1 as SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
select * from v1;
CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')
Expand Down
17 changes: 17 additions & 0 deletions mysql-test/suite/compat/oracle/r/sequence.result
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,20 @@ View Create View character_set_client collation_connection
v1 CREATE VIEW "v1" AS select lastval("test"."s1") AS "a" latin1 latin1_swedish_ci
DROP VIEW v1;
DROP SEQUENCE s1;
#
# MDEV-12533 sql_mode=ORACLE: Add support for database qualified sequence names in NEXTVAL and CURRVAL
#
CREATE SEQUENCE s1;
SELECT test.s1.nextval;
test.s1.nextval
1
SELECT test.s1.currval;
test.s1.currval
1
SELECT .s1.nextval;
.s1.nextval
2
SELECT .s1.currval;
.s1.currval
2
DROP SEQUENCE s1;
10 changes: 10 additions & 0 deletions mysql-test/suite/compat/oracle/t/sequence.test
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,13 @@ SELECT * FROM v1;
SHOW CREATE VIEW v1;
DROP VIEW v1;
DROP SEQUENCE s1;

--echo #
--echo # MDEV-12533 sql_mode=ORACLE: Add support for database qualified sequence names in NEXTVAL and CURRVAL
--echo #
CREATE SEQUENCE s1;
SELECT test.s1.nextval;
SELECT test.s1.currval;
SELECT .s1.nextval;
SELECT .s1.currval;
DROP SEQUENCE s1;
4 changes: 2 additions & 2 deletions mysql-test/suite/funcs_1/r/innodb_trig_0102.result
Original file line number Diff line number Diff line change
Expand Up @@ -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.?:
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/suite/funcs_1/r/innodb_trig_0407.result
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions mysql-test/suite/funcs_1/r/memory_trig_0102.result
Original file line number Diff line number Diff line change
Expand Up @@ -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.?:
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/suite/funcs_1/r/memory_trig_0407.result
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions mysql-test/suite/funcs_1/r/myisam_trig_0102.result
Original file line number Diff line number Diff line change
Expand Up @@ -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.?:
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/suite/funcs_1/r/myisam_trig_0407.result
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/suite/rpl/r/rpl_create_drop_trigger.result
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
14 changes: 13 additions & 1 deletion mysql-test/t/view.test
Original file line number Diff line number Diff line change
Expand Up @@ -2124,12 +2124,24 @@ drop view abc;
#
# Bug#12993 View column rename broken in subselect
#

flush status;
create table t1(f1 char(1));
create view v1 as select * from t1;
select * from (select f1 as f2 from v1) v where v.f2='a';
select * from (select f1 as f2, f1 as f3 from v1) v where v.f2='a';
show status like "Created_tmp%";
drop view v1;
drop table t1;

set @tmp=@@optimizer_switch;
set @@optimizer_switch='derived_merge=OFF';
create table t1(f1 char(1));
create view v1 as select * from t1;
select * from (select f1 as f2, f1 as f3 from v1) v where v.f2='a';
show status like "Created_tmp%";
drop view v1;
drop table t1;
set @@optimizer_switch=@tmp;

#
# Bug#11416 Server crash if using a view that uses function convert_tz
Expand Down
15 changes: 0 additions & 15 deletions sql/item.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1117,21 +1117,6 @@ void Item::set_name_no_truncate(THD *thd, const char *str, uint length,
}


void Item::set_name_for_rollback(THD *thd, const char *str, uint length,
CHARSET_INFO *cs)
{
char *old_name, *new_name;
old_name= name;
set_name(thd, str, length, cs);
new_name= name;
if (old_name != new_name)
{
name= old_name;
thd->change_item_tree((Item **) &name, (Item *) new_name);
}
}


/**
@details
This function is called when:
Expand Down
2 changes: 0 additions & 2 deletions sql/item.h
Original file line number Diff line number Diff line change
Expand Up @@ -645,8 +645,6 @@ class Item: public Value_source,
void set_name(THD *thd, const char *str, uint length, CHARSET_INFO *cs);
void set_name_no_truncate(THD *thd, const char *str, uint length,
CHARSET_INFO *cs);
void set_name_for_rollback(THD *thd, const char *str, uint length,
CHARSET_INFO *cs);
void rename(char *new_name);
void init_make_field(Send_field *tmp_field,enum enum_field_types type);
virtual void cleanup();
Expand Down
8 changes: 4 additions & 4 deletions sql/share/errmsg-utf8.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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)"

Expand Down Expand Up @@ -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
Expand Down
21 changes: 2 additions & 19 deletions sql/sql_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5268,27 +5268,10 @@ find_field_in_view(THD *thd, TABLE_LIST *table_list,
*ref != NULL means that *ref contains the item that we need to
replace. If the item was aliased by the user, set the alias to
the replacing item.
We need to set alias on both ref itself and on ref real item.
*/
if (*ref && !(*ref)->is_autogenerated_name)
{
if (register_tree_change)
{
item->set_name_for_rollback(thd, (*ref)->name,
(*ref)->name_length,
system_charset_info);
item->real_item()->set_name_for_rollback(thd, (*ref)->name,
(*ref)->name_length,
system_charset_info);
}
else
{
item->set_name(thd, (*ref)->name, (*ref)->name_length,
system_charset_info);
item->real_item()->set_name(thd, (*ref)->name, (*ref)->name_length,
system_charset_info);
}
}
item->set_name(thd, (*ref)->name, (*ref)->name_length,
system_charset_info);
if (register_tree_change)
thd->change_item_tree(ref, item);
else
Expand Down
Loading

0 comments on commit ef6e03d

Please sign in to comment.