mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
fixed ORDER BY ?
new tests to ensure that prepared statement *really* work (and that MySQL not picks up some number from arbitrary location that happens to match the parameter's value) mysql-test/include/ps_query.inc: new tests to ensure that prepared statement *really* work (and that MySQL not picks up some number from arbitrary location that happens to match the parameter's value) mysql-test/r/ps_2myisam.result: results updated mysql-test/r/ps_3innodb.result: results updated mysql-test/r/ps_4heap.result: results updated mysql-test/r/ps_5merge.result: results updated mysql-test/r/ps_6bdb.result: results updated sql/sql_select.cc: don't shortcut - it backfires! (in particular - when itemptr is Item_param :)
This commit is contained in:
@ -246,6 +246,11 @@ select a,b from t1 order by 2 ;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
order by ? ';
|
||||
execute stmt1 using @arg00;
|
||||
set @arg00=1 ;
|
||||
execute stmt1 using @arg00;
|
||||
set @arg00=0 ;
|
||||
--error 1054
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
##### parameter used in limit clause
|
||||
set @arg00=1;
|
||||
|
@ -335,6 +335,16 @@ a b
|
||||
3 three
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
set @arg00=0 ;
|
||||
execute stmt1 using @arg00;
|
||||
ERROR 42S22: Unknown column '?' in 'order clause'
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
|
@ -335,6 +335,16 @@ a b
|
||||
3 three
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
set @arg00=0 ;
|
||||
execute stmt1 using @arg00;
|
||||
ERROR 42S22: Unknown column '?' in 'order clause'
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
|
@ -336,6 +336,16 @@ a b
|
||||
3 three
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
set @arg00=0 ;
|
||||
execute stmt1 using @arg00;
|
||||
ERROR 42S22: Unknown column '?' in 'order clause'
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
|
@ -378,6 +378,16 @@ a b
|
||||
3 three
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
set @arg00=0 ;
|
||||
execute stmt1 using @arg00;
|
||||
ERROR 42S22: Unknown column '?' in 'order clause'
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
@ -1561,6 +1571,16 @@ a b
|
||||
3 three
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
set @arg00=0 ;
|
||||
execute stmt1 using @arg00;
|
||||
ERROR 42S22: Unknown column '?' in 'order clause'
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
|
@ -335,6 +335,16 @@ a b
|
||||
3 three
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
set @arg00=0 ;
|
||||
execute stmt1 using @arg00;
|
||||
ERROR 42S22: Unknown column '?' in 'order clause'
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
|
@ -8000,7 +8000,7 @@ find_order_in_list(THD *thd, Item **ref_pointer_array,
|
||||
Item *itemptr=*order->item;
|
||||
if (itemptr->type() == Item::INT_ITEM)
|
||||
{ /* Order by position */
|
||||
uint count= (uint) ((Item_int*)itemptr)->value;
|
||||
uint count= itemptr->val_int();
|
||||
if (!count || count > fields.elements)
|
||||
{
|
||||
my_printf_error(ER_BAD_FIELD_ERROR,ER(ER_BAD_FIELD_ERROR),
|
||||
|
Reference in New Issue
Block a user