Commit a88dac08 authored by unknown's avatar unknown
Browse files

Merge bk-internal:/home/bk/mysql-5.1-opt

into  magare.gmz:/home/kgeorge/mysql/work/B26303-5.1-opt


sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
parents a79e08a6 9e6a5959
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -621,3 +621,20 @@ Pos Instruction
0	stmt 2 "CREATE INDEX idx ON t1 (c1)"
DROP PROCEDURE p1;
End of 5.0 tests.
CREATE PROCEDURE p1() 
BEGIN 
DECLARE dummy int default 0;
CASE 12 
WHEN 12 
THEN SET dummy = 0;
END CASE;
END//
SHOW PROCEDURE CODE p1;
Pos	Instruction
0	set dummy@0 0
1	set_case_expr (6) 0 12
2	jump_if_not 5(6) (case_expr@0 = 12)
3	set dummy@0 0
4	jump 6
5	error 1339
DROP PROCEDURE p1;
+18 −0
Original line number Diff line number Diff line
@@ -447,3 +447,21 @@ DROP PROCEDURE p1;


--echo End of 5.0 tests.

#
# Bug #26303: reserve() not called before qs_append() may lead to buffer
# overflow
#
DELIMITER //;
CREATE PROCEDURE p1() 
BEGIN 
  DECLARE dummy int default 0;

  CASE 12 
    WHEN 12 
    THEN SET dummy = 0;
  END CASE;
END//
DELIMITER ;//
SHOW PROCEDURE CODE p1;
DROP PROCEDURE p1;
+3 −1
Original line number Diff line number Diff line
@@ -1088,7 +1088,7 @@ bool Item_splocal::set_value(THD *thd, sp_rcontext *ctx, Item **it)
  Item_case_expr methods
*****************************************************************************/

Item_case_expr::Item_case_expr(int case_expr_id)
Item_case_expr::Item_case_expr(uint case_expr_id)
  :Item_sp_variable( C_STRING_WITH_LEN("case_expr")),
   m_case_expr_id(case_expr_id)
{
@@ -1125,6 +1125,8 @@ Item_case_expr::this_item_addr(THD *thd, Item **)

void Item_case_expr::print(String *str)
{
  if (str->reserve(MAX_INT_WIDTH + sizeof("case_expr@")))
    return;                                    /* purecov: inspected */
  VOID(str->append(STRING_WITH_LEN("case_expr@")));
  str->qs_append(m_case_expr_id);
}
+2 −2
Original line number Diff line number Diff line
@@ -1116,7 +1116,7 @@ inline Item_result Item_splocal::result_type() const
class Item_case_expr :public Item_sp_variable
{
public:
  Item_case_expr(int case_expr_id);
  Item_case_expr(uint case_expr_id);

public:
  Item *this_item();
@@ -1135,7 +1135,7 @@ class Item_case_expr :public Item_sp_variable
  void print(String *str);

private:
  int m_case_expr_id;
  uint m_case_expr_id;
};

/*****************************************************************************