Commit ffd4bf58 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/extern/mysql/bk/mysql-5.0

into  mysql.com:/extern/mysql/5.0/bug17476/mysql-5.0

parents 2ec1d015 7865ce61
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -4768,4 +4768,23 @@ Handler
Inner
drop procedure bug15011|
drop table t3|
drop procedure if exists bug17476|
create table t3 ( d date )|
insert into t3 values
( '2005-01-01' ), ( '2005-01-02' ), ( '2005-01-03' ),
( '2005-01-04' ), ( '2005-02-01' ), ( '2005-02-02' )|
create procedure bug17476(pDateFormat varchar(10))
select date_format(t3.d, pDateFormat), count(*)
from t3 
group by date_format(t3.d, pDateFormat)|
call bug17476('%Y-%m')|
date_format(t3.d, pDateFormat)	count(*)
2005-01	4
2005-02	2
call bug17476('%Y-%m')|
date_format(t3.d, pDateFormat)	count(*)
2005-01	4
2005-02	2
drop table t3|
drop procedure bug17476|
drop table t1,t2;
+25 −0
Original line number Diff line number Diff line
@@ -5615,6 +5615,31 @@ drop procedure bug15011|
drop table t3|


#
# BUG#17476: Stored procedure not returning data when it is called first
#            time per connection
#
--disable_warnings
drop procedure if exists bug17476|
--enable_warnings

create table t3 ( d date )|
insert into t3 values
  ( '2005-01-01' ), ( '2005-01-02' ), ( '2005-01-03' ),
  ( '2005-01-04' ), ( '2005-02-01' ), ( '2005-02-02' )|

create procedure bug17476(pDateFormat varchar(10))
  select date_format(t3.d, pDateFormat), count(*)
    from t3 
    group by date_format(t3.d, pDateFormat)|

call bug17476('%Y-%m')|
call bug17476('%Y-%m')|

drop table t3|
drop procedure bug17476|


#
# BUG#NNNN: New bug synopsis
#
+0 −1
Original line number Diff line number Diff line
@@ -1585,7 +1585,6 @@ class Item_string :public Item
    			   str_value.length(), collation.collation);
  }
  Item *safe_charset_converter(CHARSET_INFO *tocs);
  String *const_string() { return &str_value; }
  inline void append(char *str, uint length) { str_value.append(str, length); }
  void print(String *str);
  // to prevent drop fixed flag (no need parent cleanup call)
+10 −3
Original line number Diff line number Diff line
@@ -1605,9 +1605,15 @@ longlong Item_func_sec_to_time::val_int()

void Item_func_date_format::fix_length_and_dec()
{
  /*
    Must use this_item() in case it's a local SP variable
    (for ->max_length and ->str_value)
  */
  Item *arg1= args[1]->this_item();

  decimals=0;
  collation.set(&my_charset_bin);
  if (args[1]->type() == STRING_ITEM)
  if (arg1->type() == STRING_ITEM)
  {						// Optimize the normal case
    fixed_length=1;

@@ -1615,13 +1621,13 @@ void Item_func_date_format::fix_length_and_dec()
      The result is a binary string (no reason to use collation->mbmaxlen
      This is becasue make_date_time() only returns binary strings
    */
    max_length= format_length(((Item_string*) args[1])->const_string());
    max_length= format_length(&arg1->str_value);
  }
  else
  {
    fixed_length=0;
    /* The result is a binary string (no reason to use collation->mbmaxlen */
    max_length=min(args[1]->max_length,MAX_BLOB_WIDTH) * 10;
    max_length=min(arg1->max_length, MAX_BLOB_WIDTH) * 10;
    set_if_smaller(max_length,MAX_BLOB_WIDTH);
  }
  maybe_null=1;					// If wrong date
@@ -1631,6 +1637,7 @@ void Item_func_date_format::fix_length_and_dec()
bool Item_func_date_format::eq(const Item *item, bool binary_cmp) const
{
  Item_func_date_format *item_func;

  if (item->type() != FUNC_ITEM)
    return 0;
  if (func_name() != ((Item_func*) item)->func_name())