Commit cb35648e authored by unknown's avatar unknown

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 :)
parent bf95f919
......@@ -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;
......
......@@ -334,6 +334,16 @@ a b
1 one
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 ';
......
......@@ -334,6 +334,16 @@ a b
1 one
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 ';
......
......@@ -335,6 +335,16 @@ a b
1 one
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 ';
......
......@@ -377,6 +377,16 @@ a b
1 one
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 ';
......@@ -1560,6 +1570,16 @@ a b
1 one
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 ';
......
......@@ -334,6 +334,16 @@ a b
1 one
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 ';
......
......@@ -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),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment