Commit 0dba629a authored by sergefp@mysql.com's avatar sergefp@mysql.com

Manual merge

parents d9ce6e8f d820a09a
--require r/true.require --require r/true.require
--disable_query_log; disable_query_log;
select convert(@@version_compile_os using latin1) NOT IN ("Win32","Win64","Windows") as "TRUE"; select convert(@@version_compile_os using latin1) NOT IN ("Win32","Win64","Windows") as "TRUE";
--enable_query_log; enable_query_log;
...@@ -163,6 +163,10 @@ text id betreff ...@@ -163,6 +163,10 @@ text id betreff
(select b.id, b.betreff from t3 b) (select b.id, b.betreff from t3 b)
order by match(betreff) against ('+abc' in boolean mode) desc; order by match(betreff) against ('+abc' in boolean mode) desc;
id betreff id betreff
(select b.id, b.betreff from t3 b) union
(select b.id, b.betreff from t3 b)
order by match(betreff) against ('+abc') desc;
ERROR HY000: Can't find FULLTEXT index matching the column list
select distinct b.id, b.betreff from t3 b select distinct b.id, b.betreff from t3 b
order by match(betreff) against ('+abc' in boolean mode) desc; order by match(betreff) against ('+abc' in boolean mode) desc;
id betreff id betreff
......
...@@ -756,6 +756,13 @@ INSERT INTO t1 VALUES (1); ...@@ -756,6 +756,13 @@ INSERT INTO t1 VALUES (1);
SELECT n+1 AS n FROM t1 GROUP BY n; SELECT n+1 AS n FROM t1 GROUP BY n;
n n
2 2
create table t1 (f1 date);
insert into t1 values('2005-06-06');
insert into t1 values('2005-06-06');
select date(left(f1+0,8)) from t1 group by 1;
date(left(f1+0,8))
2005-06-06
drop table t1;
Warnings: Warnings:
Warning 1052 Column 'n' in group statement is ambiguous Warning 1052 Column 'n' in group statement is ambiguous
DROP TABLE t1; DROP TABLE t1;
......
...@@ -153,3 +153,13 @@ dt ...@@ -153,3 +153,13 @@ dt
0000-00-00 00:00:00 0000-00-00 00:00:00
0000-00-00 00:00:00 0000-00-00 00:00:00
drop table t1; drop table t1;
create table t1 (dt datetime);
insert into t1 values ("20010101T010101");
insert into t1 values ("2001-01-01T01:01:01");
insert into t1 values ("2001-1-1T1:01:01");
select * from t1;
dt
2001-01-01 01:01:01
2001-01-01 01:01:01
2001-01-01 01:01:01
drop table t1;
...@@ -138,6 +138,11 @@ order by ...@@ -138,6 +138,11 @@ order by
(select b.id, b.betreff from t3 b) (select b.id, b.betreff from t3 b)
order by match(betreff) against ('+abc' in boolean mode) desc; order by match(betreff) against ('+abc' in boolean mode) desc;
--error 1191
(select b.id, b.betreff from t3 b) union
(select b.id, b.betreff from t3 b)
order by match(betreff) against ('+abc') desc;
select distinct b.id, b.betreff from t3 b select distinct b.id, b.betreff from t3 b
order by match(betreff) against ('+abc' in boolean mode) desc; order by match(betreff) against ('+abc' in boolean mode) desc;
......
...@@ -576,6 +576,16 @@ INSERT INTO t1 VALUES ('trans1'), ('trans2'); ...@@ -576,6 +576,16 @@ INSERT INTO t1 VALUES ('trans1'), ('trans2');
CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL); CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL);
INSERT INTO t2 VALUES ('trans1', 'a problem'); INSERT INTO t2 VALUES ('trans1', 'a problem');
#
# Bug #12266 GROUP BY expression on DATE column produces result with
# reduced length
#
create table t1 (f1 date);
insert into t1 values('2005-06-06');
insert into t1 values('2005-06-06');
select date(left(f1+0,8)) from t1 group by 1;
drop table t1;
SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment
FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment; FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment;
......
# Embedded server doesn't support external clients # Embedded server doesn't support external clients
--source include/not_embedded.inc --source include/not_embedded.inc
# Windows fails because it disconnects on too-large packets instead of just
# swallowing them and returning an error
--source include/not_windows.inc
# #
# Check protocol handling # Check protocol handling
......
...@@ -709,9 +709,9 @@ CREATE TABLE t1 ( ...@@ -709,9 +709,9 @@ CREATE TABLE t1 (
INSERT INTO t1 VALUES ('20050326'); INSERT INTO t1 VALUES ('20050326');
INSERT INTO t1 VALUES ('20050325'); INSERT INTO t1 VALUES ('20050325');
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 0:0:0'; SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid';
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050328 0:0:0'; SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050328 invalid';
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 0:0:0'; SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid';
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
show status like "Qcache_inserts"; show status like "Qcache_inserts";
show status like "Qcache_hits"; show status like "Qcache_hits";
......
...@@ -3,7 +3,10 @@ ...@@ -3,7 +3,10 @@
# RENAME TABLE work with MERGE tables on the slave. # RENAME TABLE work with MERGE tables on the slave.
# Test of FLUSH NO_WRITE_TO_BINLOG by the way. # Test of FLUSH NO_WRITE_TO_BINLOG by the way.
# #
source include/master-slave.inc; --source include/master-slave.inc
# Skipped on Windows because it can't handle a table underlying an open
# merge table getting renamed.
--source include/not_windows.inc
create table t1 (a int); create table t1 (a int);
insert into t1 values (10); insert into t1 values (10);
......
...@@ -102,4 +102,14 @@ insert into t1 values ("00-00-00"), ("00-00-00 00:00:00"); ...@@ -102,4 +102,14 @@ insert into t1 values ("00-00-00"), ("00-00-00 00:00:00");
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# Bug #7308: ISO-8601 date format not handled correctly
#
create table t1 (dt datetime);
insert into t1 values ("20010101T010101");
insert into t1 values ("2001-01-01T01:01:01");
insert into t1 values ("2001-1-1T1:01:01");
select * from t1;
drop table t1;
# End of 4.1 tests # End of 4.1 tests
...@@ -207,7 +207,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time, ...@@ -207,7 +207,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
{ {
/* Found date in internal format (only numbers like YYYYMMDD) */ /* Found date in internal format (only numbers like YYYYMMDD) */
year_length= (digits == 4 || digits == 8 || digits >= 14) ? 4 : 2; year_length= (digits == 4 || digits == 8 || digits >= 14) ? 4 : 2;
field_length=year_length-1; field_length= year_length;
is_internal_format= 1; is_internal_format= 1;
format_position= internal_format_positions; format_position= internal_format_positions;
} }
...@@ -237,6 +237,8 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time, ...@@ -237,6 +237,8 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
start_loop= 5; /* Start with first date part */ start_loop= 5; /* Start with first date part */
} }
} }
field_length= format_position[0] == 0 ? 4 : 2;
} }
/* /*
...@@ -261,7 +263,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time, ...@@ -261,7 +263,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
const char *start= str; const char *start= str;
ulong tmp_value= (uint) (uchar) (*str++ - '0'); ulong tmp_value= (uint) (uchar) (*str++ - '0');
while (str != end && my_isdigit(&my_charset_latin1,str[0]) && while (str != end && my_isdigit(&my_charset_latin1,str[0]) &&
(!is_internal_format || field_length--)) --field_length)
{ {
tmp_value=tmp_value*10 + (ulong) (uchar) (*str - '0'); tmp_value=tmp_value*10 + (ulong) (uchar) (*str - '0');
str++; str++;
...@@ -275,8 +277,8 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time, ...@@ -275,8 +277,8 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
date[i]=tmp_value; date[i]=tmp_value;
not_zero_date|= tmp_value; not_zero_date|= tmp_value;
/* Length-1 of next field */ /* Length of next field */
field_length= format_position[i+1] == 0 ? 3 : 1; field_length= format_position[i+1] == 0 ? 4 : 2;
if ((last_field_pos= str) == end) if ((last_field_pos= str) == end)
{ {
...@@ -294,7 +296,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time, ...@@ -294,7 +296,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
if (*str == '.') /* Followed by part seconds */ if (*str == '.') /* Followed by part seconds */
{ {
str++; str++;
field_length= 5; /* 5 digits after first (=6) */ field_length= 6; /* 6 digits */
} }
continue; continue;
......
...@@ -714,6 +714,12 @@ class Item_date_typecast :public Item_typecast_maybe_null ...@@ -714,6 +714,12 @@ class Item_date_typecast :public Item_typecast_maybe_null
{ {
return (new Field_date(maybe_null, name, t_arg, &my_charset_bin)); return (new Field_date(maybe_null, name, t_arg, &my_charset_bin));
} }
void fix_length_and_dec()
{
collation.set(&my_charset_bin);
max_length= 10;
maybe_null= 1;
}
}; };
......
...@@ -119,8 +119,6 @@ void ...@@ -119,8 +119,6 @@ void
st_select_lex_unit::init_prepare_fake_select_lex(THD *thd) st_select_lex_unit::init_prepare_fake_select_lex(THD *thd)
{ {
thd->lex->current_select= fake_select_lex; thd->lex->current_select= fake_select_lex;
fake_select_lex->ftfunc_list_alloc.empty();
fake_select_lex->ftfunc_list= &fake_select_lex->ftfunc_list_alloc;
fake_select_lex->table_list.link_in_list((byte *)&result_table_list, fake_select_lex->table_list.link_in_list((byte *)&result_table_list,
(byte **) (byte **)
&result_table_list.next_local); &result_table_list.next_local);
...@@ -301,7 +299,8 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, ...@@ -301,7 +299,8 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
/* /*
Force the temporary table to be a MyISAM table if we're going to use Force the temporary table to be a MyISAM table if we're going to use
fullext functions (MATCH ... AGAINST .. IN BOOLEAN MODE) when reading fullext functions (MATCH ... AGAINST .. IN BOOLEAN MODE) when reading
from it. from it (this should be removed in 5.2 when fulltext search is moved
out of MyISAM).
*/ */
if (global_parameters->ftfunc_list->elements) if (global_parameters->ftfunc_list->elements)
create_options= create_options | TMP_TABLE_FORCE_MYISAM; create_options= create_options | TMP_TABLE_FORCE_MYISAM;
......
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