mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge mockturtle.local:/home/dlenev/src/mysql-5.0-bg24491
into mockturtle.local:/home/dlenev/src/mysql-5.1-bg24491 mysql-test/t/sp-error.test: Auto merged sql/item.h: Auto merged sql/sql_table.cc: Auto merged mysql-test/r/ps.result: SCCS merged mysql-test/r/sp-error.result: SCCS merged mysql-test/t/disabled.def: SCCS merged mysql-test/t/ps.test: SCCS merged
This commit is contained in:
@@ -1544,6 +1544,22 @@ a
|
|||||||
2
|
2
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
drop tables if exists t1;
|
||||||
|
create table t1 (id int primary key auto_increment, value varchar(10));
|
||||||
|
insert into t1 (id, value) values (1, 'FIRST'), (2, 'SECOND'), (3, 'THIRD');
|
||||||
|
prepare stmt from "insert into t1 (id, value) select * from (select 4 as i, 'FOURTH' as v) as y on duplicate key update v = 'DUP'";
|
||||||
|
execute stmt;
|
||||||
|
ERROR 42S22: Unknown column 'v' in 'field list'
|
||||||
|
execute stmt;
|
||||||
|
ERROR 42S22: Unknown column 'v' in 'field list'
|
||||||
|
deallocate prepare stmt;
|
||||||
|
prepare stmt from "insert into t1 (id, value) select * from (select 4 as id, 'FOURTH' as value) as y on duplicate key update y.value = 'DUP'";
|
||||||
|
execute stmt;
|
||||||
|
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
||||||
|
execute stmt;
|
||||||
|
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop tables t1;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
create procedure proc_1() reset query cache;
|
create procedure proc_1() reset query cache;
|
||||||
call proc_1();
|
call proc_1();
|
||||||
|
@@ -1250,6 +1250,25 @@ ERROR HY000: View's SELECT contains a variable or parameter
|
|||||||
PREPARE stmt FROM "CREATE VIEW v AS SELECT ?";
|
PREPARE stmt FROM "CREATE VIEW v AS SELECT ?";
|
||||||
ERROR HY000: View's SELECT contains a variable or parameter
|
ERROR HY000: View's SELECT contains a variable or parameter
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
drop tables if exists t1;
|
||||||
|
drop procedure if exists bug24491;
|
||||||
|
create table t1 (id int primary key auto_increment, value varchar(10));
|
||||||
|
insert into t1 (id, value) values (1, 'FIRST'), (2, 'SECOND'), (3, 'THIRD');
|
||||||
|
create procedure bug24491()
|
||||||
|
insert into t1 (id, value) select * from (select 4 as i, 'FOURTH' as v) as y on duplicate key update v = 'DUP';
|
||||||
|
call bug24491();
|
||||||
|
ERROR 42S22: Unknown column 'v' in 'field list'
|
||||||
|
call bug24491();
|
||||||
|
ERROR 42S22: Unknown column 'v' in 'field list'
|
||||||
|
drop procedure bug24491;
|
||||||
|
create procedure bug24491()
|
||||||
|
insert into t1 (id, value) select * from (select 4 as id, 'FOURTH' as value) as y on duplicate key update y.value = 'DUP';
|
||||||
|
call bug24491();
|
||||||
|
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
||||||
|
call bug24491();
|
||||||
|
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
||||||
|
drop procedure bug24491;
|
||||||
|
drop tables t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
drop function if exists bug16164;
|
drop function if exists bug16164;
|
||||||
create function bug16164() returns int
|
create function bug16164() returns int
|
||||||
|
@@ -1576,6 +1576,7 @@ execute sq;
|
|||||||
deallocate prepare no_index;
|
deallocate prepare no_index;
|
||||||
deallocate prepare sq;
|
deallocate prepare sq;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug 25027: query with a single-row non-correlated subquery
|
# Bug 25027: query with a single-row non-correlated subquery
|
||||||
# and IS NULL predicate
|
# and IS NULL predicate
|
||||||
@@ -1599,6 +1600,36 @@ DEALLOCATE PREPARE stmt;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#24491 "using alias from source table in insert ... on duplicate key"
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop tables if exists t1;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (id int primary key auto_increment, value varchar(10));
|
||||||
|
insert into t1 (id, value) values (1, 'FIRST'), (2, 'SECOND'), (3, 'THIRD');
|
||||||
|
# Let us prepare INSERT ... SELECT ... ON DUPLICATE KEY UPDATE statement
|
||||||
|
# which in its ON DUPLICATE KEY clause erroneously tries to assign value
|
||||||
|
# to a column which is mentioned only in SELECT part.
|
||||||
|
prepare stmt from "insert into t1 (id, value) select * from (select 4 as i, 'FOURTH' as v) as y on duplicate key update v = 'DUP'";
|
||||||
|
# Both first and second attempts to execute it should fail
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
execute stmt;
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
# And now the same test for more complex case which is more close
|
||||||
|
# to the one that was reported originally.
|
||||||
|
prepare stmt from "insert into t1 (id, value) select * from (select 4 as id, 'FOURTH' as value) as y on duplicate key update y.value = 'DUP'";
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
execute stmt;
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop tables t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests.
|
--echo End of 5.0 tests.
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -1853,6 +1853,38 @@ drop function bug20701;
|
|||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#24491 "using alias from source table in insert ... on duplicate key"
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop tables if exists t1;
|
||||||
|
drop procedure if exists bug24491;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (id int primary key auto_increment, value varchar(10));
|
||||||
|
insert into t1 (id, value) values (1, 'FIRST'), (2, 'SECOND'), (3, 'THIRD');
|
||||||
|
# Let us create routine with INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
|
||||||
|
# statement which in its ON DUPLICATE KEY clause erroneously tries to assign
|
||||||
|
# value to a column which is mentioned only in SELECT part.
|
||||||
|
create procedure bug24491()
|
||||||
|
insert into t1 (id, value) select * from (select 4 as i, 'FOURTH' as v) as y on duplicate key update v = 'DUP';
|
||||||
|
# Both first and second calls to it should fail
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
call bug24491();
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
call bug24491();
|
||||||
|
drop procedure bug24491;
|
||||||
|
# And now the same test for more complex case which is more close
|
||||||
|
# to the one that was reported originally.
|
||||||
|
create procedure bug24491()
|
||||||
|
insert into t1 (id, value) select * from (select 4 as id, 'FOURTH' as value) as y on duplicate key update y.value = 'DUP';
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
call bug24491();
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
call bug24491();
|
||||||
|
drop procedure bug24491;
|
||||||
|
drop tables t1;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUG#NNNN: New bug synopsis
|
# BUG#NNNN: New bug synopsis
|
||||||
#
|
#
|
||||||
|
@@ -336,23 +336,18 @@ public:
|
|||||||
{
|
{
|
||||||
save_table_list= context->table_list;
|
save_table_list= context->table_list;
|
||||||
save_first_name_resolution_table= context->first_name_resolution_table;
|
save_first_name_resolution_table= context->first_name_resolution_table;
|
||||||
save_next_name_resolution_table= (context->first_name_resolution_table) ?
|
|
||||||
context->first_name_resolution_table->
|
|
||||||
next_name_resolution_table :
|
|
||||||
NULL;
|
|
||||||
save_resolve_in_select_list= context->resolve_in_select_list;
|
save_resolve_in_select_list= context->resolve_in_select_list;
|
||||||
save_next_local= table_list->next_local;
|
save_next_local= table_list->next_local;
|
||||||
|
save_next_name_resolution_table= table_list->next_name_resolution_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Restore a name resolution context from saved state. */
|
/* Restore a name resolution context from saved state. */
|
||||||
void restore_state(Name_resolution_context *context, TABLE_LIST *table_list)
|
void restore_state(Name_resolution_context *context, TABLE_LIST *table_list)
|
||||||
{
|
{
|
||||||
table_list->next_local= save_next_local;
|
table_list->next_local= save_next_local;
|
||||||
|
table_list->next_name_resolution_table= save_next_name_resolution_table;
|
||||||
context->table_list= save_table_list;
|
context->table_list= save_table_list;
|
||||||
context->first_name_resolution_table= save_first_name_resolution_table;
|
context->first_name_resolution_table= save_first_name_resolution_table;
|
||||||
if (context->first_name_resolution_table)
|
|
||||||
context->first_name_resolution_table->
|
|
||||||
next_name_resolution_table= save_next_name_resolution_table;
|
|
||||||
context->resolve_in_select_list= save_resolve_in_select_list;
|
context->resolve_in_select_list= save_resolve_in_select_list;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user