diff options
-rw-r--r-- | mysql-test/r/ctype_ucs.result | 8 | ||||
-rw-r--r-- | mysql-test/r/func_gconcat.result | 5 | ||||
-rw-r--r-- | mysql-test/r/func_time.result | 36 | ||||
-rw-r--r-- | mysql-test/r/information_schema.result | 8 | ||||
-rw-r--r-- | mysql-test/t/ctype_ucs.test | 8 | ||||
-rw-r--r-- | mysql-test/t/func_gconcat.test | 8 | ||||
-rw-r--r-- | mysql-test/t/func_time.test | 18 | ||||
-rw-r--r-- | mysql-test/t/information_schema.test | 9 | ||||
-rw-r--r-- | sql/item_sum.cc | 5 | ||||
-rw-r--r-- | sql/item_timefunc.cc | 2 | ||||
-rw-r--r-- | support-files/mysql.server.sh | 12 |
11 files changed, 98 insertions, 21 deletions
diff --git a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result index d11d25f9b35..6182bd0f598 100644 --- a/mysql-test/r/ctype_ucs.result +++ b/mysql-test/r/ctype_ucs.result @@ -719,3 +719,11 @@ lily river drop table t1; deallocate prepare stmt; +create table t1(a blob, b text charset utf8, c text charset ucs2); +select data_type, character_octet_length, character_maximum_length +from information_schema.columns where table_name='t1'; +data_type character_octet_length character_maximum_length +blob 65535 65535 +text 65535 65535 +text 65535 32767 +drop table t1; diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result index f1c9f8b9f76..7889f8953f4 100644 --- a/mysql-test/r/func_gconcat.result +++ b/mysql-test/r/func_gconcat.result @@ -626,3 +626,8 @@ latin1 latin1 drop table t1, t2, t3; set names default; +create table t1 (c1 varchar(10), c2 int); +select charset(group_concat(c1 order by c2)) from t1; +charset(group_concat(c1 order by c2)) +latin1 +drop table t1; diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index 64dafa132b4..5d40a0ed01f 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -360,6 +360,42 @@ extract(SECOND FROM "1999-01-02 10:11:12") select extract(MONTH FROM "2001-02-00"); extract(MONTH FROM "2001-02-00") 2 +SELECT EXTRACT(QUARTER FROM '2004-01-15') AS quarter; +quarter +1 +SELECT EXTRACT(QUARTER FROM '2004-02-15') AS quarter; +quarter +1 +SELECT EXTRACT(QUARTER FROM '2004-03-15') AS quarter; +quarter +1 +SELECT EXTRACT(QUARTER FROM '2004-04-15') AS quarter; +quarter +2 +SELECT EXTRACT(QUARTER FROM '2004-05-15') AS quarter; +quarter +2 +SELECT EXTRACT(QUARTER FROM '2004-06-15') AS quarter; +quarter +2 +SELECT EXTRACT(QUARTER FROM '2004-07-15') AS quarter; +quarter +3 +SELECT EXTRACT(QUARTER FROM '2004-08-15') AS quarter; +quarter +3 +SELECT EXTRACT(QUARTER FROM '2004-09-15') AS quarter; +quarter +3 +SELECT EXTRACT(QUARTER FROM '2004-10-15') AS quarter; +quarter +4 +SELECT EXTRACT(QUARTER FROM '2004-11-15') AS quarter; +quarter +4 +SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter; +quarter +4 SELECT "1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND; "1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND 1968-01-20 03:14:08 diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 770d9265830..d5fb046d319 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1041,14 +1041,6 @@ select 1 from (select 1 from test.t1) a; 1 use test; drop table t1; -create table t1(a blob, b text charset utf8, c text charset ucs2); -select data_type, character_octet_length, character_maximum_length -from information_schema.columns where table_name='t1'; -data_type character_octet_length character_maximum_length -blob 65535 65535 -text 65535 65535 -text 65535 32767 -drop table t1; create table t1 (f1 int(11)); create view v1 as select * from t1; drop table t1; diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test index d4ea8dd57ad..af46b9c385a 100644 --- a/mysql-test/t/ctype_ucs.test +++ b/mysql-test/t/ctype_ucs.test @@ -455,3 +455,11 @@ execute stmt using @param1; select utext from t1 where utext like '%%'; drop table t1; deallocate prepare stmt; + +# +# Bug #14290: character_maximum_length for text fields +# +create table t1(a blob, b text charset utf8, c text charset ucs2); +select data_type, character_octet_length, character_maximum_length + from information_schema.columns where table_name='t1'; +drop table t1; diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test index 1b88ed90fa3..aa28c9d5f52 100644 --- a/mysql-test/t/func_gconcat.test +++ b/mysql-test/t/func_gconcat.test @@ -414,3 +414,11 @@ select charset(a) from t2; select charset(a) from t3; drop table t1, t2, t3; set names default; + +# +# Bug#18281 group_concat changes charset to binary +# +create table t1 (c1 varchar(10), c2 int); +select charset(group_concat(c1 order by c2)) from t1; +drop table t1; + diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 3a2eea59bed..c98c1c94609 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -140,6 +140,24 @@ select extract(SECOND FROM "1999-01-02 10:11:12"); select extract(MONTH FROM "2001-02-00"); # +# test EXTRACT QUARTER (Bug #18100) +# + +SELECT EXTRACT(QUARTER FROM '2004-01-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-02-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-03-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-04-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-05-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-06-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-07-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-08-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-09-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-10-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-11-15') AS quarter; +SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter; + + +# # Test big intervals (Bug #3498) # SELECT "1900-01-01 00:00:00" + INTERVAL 2147483648 SECOND; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 6957dcf3b6a..47f262a9d59 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -739,15 +739,6 @@ use test; drop table t1; # -# Bug #14290: character_maximum_length for text fields -# - -create table t1(a blob, b text charset utf8, c text charset ucs2); -select data_type, character_octet_length, character_maximum_length - from information_schema.columns where table_name='t1'; -drop table t1; - -# # Bug#14476 `information_schema`.`TABLES`.`TABLE_TYPE` with empty value # create table t1 (f1 int(11)); diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 1cd1741cea6..8826144266e 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -3226,7 +3226,10 @@ Item_func_group_concat::fix_fields(THD *thd, Item **ref) } if (agg_item_charsets(collation, func_name(), - args, arg_count, MY_COLL_ALLOW_CONV)) + args, + /* skip charset aggregation for order columns */ + arg_count - arg_count_order, + MY_COLL_ALLOW_CONV)) return 1; result.set_charset(collation.collation); diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 63a7f1f130b..e139eba385e 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -2213,7 +2213,7 @@ longlong Item_extract::val_int() switch (int_type) { case INTERVAL_YEAR: return ltime.year; case INTERVAL_YEAR_MONTH: return ltime.year*100L+ltime.month; - case INTERVAL_QUARTER: return ltime.month/3 + 1; + case INTERVAL_QUARTER: return (ltime.month+2)/3; case INTERVAL_MONTH: return ltime.month; case INTERVAL_WEEK: { diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index 1892e8b4a46..bf17375c0eb 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -72,6 +72,10 @@ else libexecdir="$basedir/libexec" fi +# datadir_set is used to determine if datadir was set (and so should be +# *not* set inside of the --basedir= handler.) +datadir_set= + # # Use LSB init script functions for printing messages, if possible # @@ -105,11 +109,15 @@ parse_server_arguments() { case "$arg" in --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` bindir="$basedir/bin" - datadir="$basedir/data" + if test -z "$datadir_set"; then + datadir="$basedir/data" + fi sbindir="$basedir/sbin" libexecdir="$basedir/libexec" ;; - --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; + --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` + datadir_set=1 + ;; --user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; --pid-file=*) server_pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; --use-mysqld_safe) use_mysqld_safe=1;; |