summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sergefp@mysql.com>2005-08-07 21:30:46 +0000
committerunknown <sergefp@mysql.com>2005-08-07 21:30:46 +0000
commitf34d542c68068c2912888e967a2d55a2df9a1f0f (patch)
treedbcbb5a0eddba715a96d562797fc5f8adb73fe61
parentd7086c4a0cc5d6240b1a0ad2b4eb83a935fadd1e (diff)
parentb9e04cf1efa45a717832cd2500502edb4c318858 (diff)
downloadmariadb-git-f34d542c68068c2912888e967a2d55a2df9a1f0f.tar.gz
Manual merge
BitKeeper/deleted/.del-not_windows.inc: Delete: mysql-test/include/not_windows.inc mysql-test/r/fulltext_order_by.result: Auto merged mysql-test/r/type_datetime.result: Auto merged mysql-test/t/fulltext_order_by.test: Auto merged mysql-test/t/query_cache.test: Auto merged mysql-test/t/rpl_flush_tables.test: Auto merged sql-common/my_time.c: Auto merged sql/item_timefunc.h: Auto merged sql/sql_union.cc: Auto merged
-rw-r--r--mysql-test/include/not_windows.inc4
-rw-r--r--mysql-test/r/fulltext_order_by.result4
-rw-r--r--mysql-test/r/group_by.result7
-rw-r--r--mysql-test/r/type_datetime.result10
-rw-r--r--mysql-test/t/fulltext_order_by.test5
-rw-r--r--mysql-test/t/group_by.test10
-rw-r--r--mysql-test/t/packet.test3
-rw-r--r--mysql-test/t/query_cache.test6
-rw-r--r--mysql-test/t/rpl_flush_tables.test5
-rw-r--r--mysql-test/t/type_datetime.test10
-rw-r--r--sql-common/my_time.c12
-rw-r--r--sql/item_timefunc.h6
-rw-r--r--sql/sql_union.cc5
13 files changed, 73 insertions, 14 deletions
diff --git a/mysql-test/include/not_windows.inc b/mysql-test/include/not_windows.inc
index 0db231ddb81..54e9e0e817a 100644
--- a/mysql-test/include/not_windows.inc
+++ b/mysql-test/include/not_windows.inc
@@ -1,4 +1,4 @@
--require r/true.require
---disable_query_log;
+disable_query_log;
select convert(@@version_compile_os using latin1) NOT IN ("Win32","Win64","Windows") as "TRUE";
---enable_query_log;
+enable_query_log;
diff --git a/mysql-test/r/fulltext_order_by.result b/mysql-test/r/fulltext_order_by.result
index adcceea408e..2c421826bb4 100644
--- a/mysql-test/r/fulltext_order_by.result
+++ b/mysql-test/r/fulltext_order_by.result
@@ -163,6 +163,10 @@ text id betreff
(select b.id, b.betreff from t3 b)
order by match(betreff) against ('+abc' in boolean mode) desc;
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
order by match(betreff) against ('+abc' in boolean mode) desc;
id betreff
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result
index 64446e63e6f..f7742178cbe 100644
--- a/mysql-test/r/group_by.result
+++ b/mysql-test/r/group_by.result
@@ -756,6 +756,13 @@ INSERT INTO t1 VALUES (1);
SELECT n+1 AS n FROM t1 GROUP BY n;
n
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:
Warning 1052 Column 'n' in group statement is ambiguous
DROP TABLE t1;
diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result
index 33c7e837997..788478de77e 100644
--- a/mysql-test/r/type_datetime.result
+++ b/mysql-test/r/type_datetime.result
@@ -153,3 +153,13 @@ dt
0000-00-00 00:00:00
0000-00-00 00:00:00
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;
diff --git a/mysql-test/t/fulltext_order_by.test b/mysql-test/t/fulltext_order_by.test
index dcda00fecba..444f1b0510c 100644
--- a/mysql-test/t/fulltext_order_by.test
+++ b/mysql-test/t/fulltext_order_by.test
@@ -138,6 +138,11 @@ order by
(select b.id, b.betreff from t3 b)
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
order by match(betreff) against ('+abc' in boolean mode) desc;
diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test
index bfbdd098426..434c2662614 100644
--- a/mysql-test/t/group_by.test
+++ b/mysql-test/t/group_by.test
@@ -576,6 +576,16 @@ INSERT INTO t1 VALUES ('trans1'), ('trans2');
CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL);
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
FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment;
diff --git a/mysql-test/t/packet.test b/mysql-test/t/packet.test
index 04122b42b44..4de284b7824 100644
--- a/mysql-test/t/packet.test
+++ b/mysql-test/t/packet.test
@@ -1,5 +1,8 @@
# Embedded server doesn't support external clients
--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
diff --git a/mysql-test/t/query_cache.test b/mysql-test/t/query_cache.test
index 326fd775549..822c27fe40d 100644
--- a/mysql-test/t/query_cache.test
+++ b/mysql-test/t/query_cache.test
@@ -709,9 +709,9 @@ CREATE TABLE t1 (
INSERT INTO t1 VALUES ('20050326');
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 '20050328 0:0:0';
-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 invalid';
+SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid';
show status like "Qcache_queries_in_cache";
show status like "Qcache_inserts";
show status like "Qcache_hits";
diff --git a/mysql-test/t/rpl_flush_tables.test b/mysql-test/t/rpl_flush_tables.test
index eff0a79bc45..48fda818890 100644
--- a/mysql-test/t/rpl_flush_tables.test
+++ b/mysql-test/t/rpl_flush_tables.test
@@ -3,7 +3,10 @@
# RENAME TABLE work with MERGE tables on the slave.
# 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);
insert into t1 values (10);
diff --git a/mysql-test/t/type_datetime.test b/mysql-test/t/type_datetime.test
index f60bc5adb16..ca70e35d3cd 100644
--- a/mysql-test/t/type_datetime.test
+++ b/mysql-test/t/type_datetime.test
@@ -102,4 +102,14 @@ insert into t1 values ("00-00-00"), ("00-00-00 00:00:00");
select * from 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
diff --git a/sql-common/my_time.c b/sql-common/my_time.c
index ed02021011b..95ac779e0cd 100644
--- a/sql-common/my_time.c
+++ b/sql-common/my_time.c
@@ -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) */
year_length= (digits == 4 || digits == 8 || digits >= 14) ? 4 : 2;
- field_length=year_length-1;
+ field_length= year_length;
is_internal_format= 1;
format_position= internal_format_positions;
}
@@ -237,6 +237,8 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
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,
const char *start= str;
ulong tmp_value= (uint) (uchar) (*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');
str++;
@@ -275,8 +277,8 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
date[i]=tmp_value;
not_zero_date|= tmp_value;
- /* Length-1 of next field */
- field_length= format_position[i+1] == 0 ? 3 : 1;
+ /* Length of next field */
+ field_length= format_position[i+1] == 0 ? 4 : 2;
if ((last_field_pos= str) == end)
{
@@ -294,7 +296,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
if (*str == '.') /* Followed by part seconds */
{
str++;
- field_length= 5; /* 5 digits after first (=6) */
+ field_length= 6; /* 6 digits */
}
continue;
diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h
index 107d12e6da2..e79bc25030b 100644
--- a/sql/item_timefunc.h
+++ b/sql/item_timefunc.h
@@ -714,6 +714,12 @@ public:
{
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;
+ }
};
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index ed77de87fe4..b394e92e742 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -119,8 +119,6 @@ void
st_select_lex_unit::init_prepare_fake_select_lex(THD *thd)
{
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,
(byte **)
&result_table_list.next_local);
@@ -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
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)
create_options= create_options | TMP_TABLE_FORCE_MYISAM;