Commit 8218d49d authored by unknown's avatar unknown
Browse files

Merge bk-internal:/home/bk/mysql-3.23/

into serg.mysql.com:/usr/home/serg/Abk/mysql

parents 7f7e7220 dccac583
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -128,3 +128,4 @@ a MAX(b) ELT(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f')
a	MAX(b)	MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
1	4	c
10	43	a,b,d,f
a	c	count(distinct rand())
+8 −0
Original line number Diff line number Diff line
@@ -346,3 +346,11 @@ select a, MAX(b), CONCAT_WS(MAX(b), '43', '4', '5') from t1 group by a;
select a, MAX(b), ELT(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f') from t1 group by a;
select a, MAX(b), MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') from t1 group by a;
drop table t1;

# not purely group_by bug, but group_by is involved...

create table t1 (a date default null, b date default null);
insert t1 values ('1999-10-01','2000-01-10'), ('1997-01-01','1998-10-01');
select a,min(b) c,count(distinct rand()) from t1 group by a having c<a + interval 1 day;
drop table t1;
+11 −0
Original line number Diff line number Diff line
@@ -194,6 +194,17 @@ bool Item_field::get_date(TIME *ltime,bool fuzzydate)
  return 0;
}

bool Item_field::get_date_result(TIME *ltime,bool fuzzydate)
{
  if ((null_value=result_field->is_null()) ||
      result_field->get_date(ltime,fuzzydate))
  {
    bzero((char*) ltime,sizeof(*ltime));
    return 1;
  }
  return 0;
}

bool Item_field::get_time(TIME *ltime)
{
  if ((null_value=field->is_null()) || field->get_time(ltime))
+7 −4
Original line number Diff line number Diff line
@@ -82,6 +82,8 @@ class Item {
  virtual void split_sum_func(List<Item> &fields) {}
  virtual bool get_date(TIME *ltime,bool fuzzydate);
  virtual bool get_time(TIME *ltime);
  virtual bool get_date_result(TIME *ltime,bool fuzzydate)
  { return get_date(ltime,fuzzydate); }
};


@@ -130,6 +132,7 @@ class Item_field :public Item_ident
  }
  Field *tmp_table_field() { return result_field; }
  bool get_date(TIME *ltime,bool fuzzydate);
  bool get_date_result(TIME *ltime,bool fuzzydate);
  bool get_time(TIME *ltime);
};

@@ -333,7 +336,7 @@ class Item_ref :public Item_ident
  }
  bool get_date(TIME *ltime,bool fuzzydate)
  {
    return (null_value=(*ref)->get_date(ltime,fuzzydate));
    return (null_value=(*ref)->get_date_result(ltime,fuzzydate));
  }
  bool send(String *tmp)		{ return (*ref)->send(tmp); }
  void make_field(Send_field *field)	{ (*ref)->make_field(field); }