mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
a07e48eca0
Added more DBUG statements Ensure that we are comparing end space with BINARY strings Use 'any_db' instead of '' to mean any database. (For HANDLER command) Only strip ' ' when comparing CHAR, not other space-like characters (like \t) BitKeeper/deleted/.del-ctype_tis620.result-old~3578ceb0b8284685: Delete: mysql-test/r/ctype_tis620.result-old BitKeeper/deleted/.del-ctype_tis620.test-old~ffb1bbd2935d1aba: Delete: mysql-test/t/ctype_tis620.test-old client/mysqlbinlog.cc: Added DBUG statements Added call of my_end() to free all used memory on exit heap/hp_info.c: After merge fixes heap/hp_open.c: After merge fixes include/heap.h: After merge fixes include/m_ctype.h: Use pchar instead of 'int' for character parameters. Added 'my_binary_compare()' include/m_string.h: Fixed wrong define innobase/ibuf/ibuf0ibuf.c: After merge fixes innobase/srv/srv0start.c: After merge fixes mysql-test/r/alter_table.result: Fixed results after merge mysql-test/r/auto_increment.result: Fixed results after merge mysql-test/r/bdb.result: Fixed results after merge mysql-test/r/binary.result: Fixed results after merge mysql-test/r/create.result: Fixed results after merge mysql-test/r/ctype_mb.result: Fixed results after merge mysql-test/r/ctype_tis620.result: Fixed results after merge mysql-test/r/ctype_utf8.result: Fixed results after merge mysql-test/r/delete.result: Fixed results after merge mysql-test/r/func_compress.result: Fixed results after merge mysql-test/r/func_gconcat.result: Fixed results after merge mysql-test/r/func_group.result: Fixed results after merge mysql-test/r/func_str.result: Fixed results after merge mysql-test/r/innodb.result: Fixed results after merge mysql-test/r/insert.result: Fixed results after merge mysql-test/r/insert_select.result: Fixed results after merge mysql-test/r/key.result: Fixed results after merge mysql-test/r/loaddata.result: Fixed results after merge mysql-test/r/lock.result: Fixed results after merge mysql-test/r/myisam.result: Fixed results after merge mysql-test/r/null.result: Fixed results after merge mysql-test/r/null_key.result: Fixed results after merge mysql-test/r/order_by.result: Fixed results after merge mysql-test/r/query_cache.result: Fixed results after merge mysql-test/r/range.result: Fixed results after merge mysql-test/r/rpl_multi_delete.result: Fixed results after merge mysql-test/r/rpl_until.result: Fixed results after merge mysql-test/r/subselect.result: Fixed results after merge mysql-test/r/subselect_innodb.result: Fixed results after merge mysql-test/r/type_blob.result: Fixed results after merge mysql-test/r/type_datetime.result: Fixed results after merge mysql-test/r/type_decimal.result: Fixed results after merge mysql-test/r/type_enum.result: Fixed results after merge mysql-test/r/type_float.result: Fixed results after merge mysql-test/r/type_ranges.result: Fixed results after merge mysql-test/r/type_time.result: Fixed results after merge mysql-test/r/type_timestamp.result: Fixed results after merge mysql-test/r/type_uint.result: Fixed results after merge mysql-test/r/type_year.result: Fixed results after merge mysql-test/r/variables.result: Fixed results after merge mysql-test/r/warnings.result: Fixed results after merge mysql-test/t/case.test: Fixed shifted error messages mysql-test/t/create.test: Fixed shifted error messages mysql-test/t/ctype_collate.test: Fixed shifted error messages mysql-test/t/ctype_tis620.test: Merge with 4.0 ctype_tis620 test mysql-test/t/delete.test: Fixed shifted error messages mysql-test/t/derived.test: Fixed shifted error messages mysql-test/t/fulltext.test: Fixed shifted error messages mysql-test/t/func_in.test: Fixed shifted error messages mysql-test/t/func_str.test: Fixed shifted error messages mysql-test/t/func_test.test: Fixed shifted error messages mysql-test/t/grant.test: Fixed shifted error messages mysql-test/t/innodb.test: Change to 4.1 syntax mysql-test/t/key_cache.test: Fixed shifted error messages mysql-test/t/myisam.test: New test of blob and end space mysql-test/t/row.test: Fixed shifted error messages mysql-test/t/rpl_until.test: Fixed shifted error messages mysql-test/t/subselect.test: Fixed shifted error messages mysql-test/t/subselect_innodb.test: Fix test to take into account foreign key constraints mysql-test/t/union.test: Fixed shifted error messages mysql-test/t/user_var.test: Fixed shifted error messages mysql-test/t/variables.test: Fixed shifted error messages mysys/my_handler.c: Merge with 4.0 code sql/ha_heap.cc: After merge fixes sql/handler.cc: After merge fixes sql/item.cc: After merge fixes sql/item_cmpfunc.cc: Ensure that we are comparing end space with BINARY strings sql/item_cmpfunc.h: Ensure that we are comparing end space with BINARY strings sql/log_event.cc: More DBUG statements Ensure that we use all options to LOAD DATA in replication sql/opt_range.cc: After merge fixes sql/sql_db.cc: After merge fixes sql/sql_handler.cc: After merge fixes Use 'any_db' instead of '' to mean 'no database comparison' sql/sql_parse.cc: After merge fixes sql/sql_select.cc: After merge fixes Added function comment for setup_group() sql/sql_string.cc: Added stringcmp() for binary comparison. Added function comments for sortcmp() and stringcmp() sql/sql_string.h: Added stringcmp() sql/sql_table.cc: After merge fixes sql/sql_update.cc: After merge fixes sql/sql_yacc.yy: Use 'any_db' instead of '' to mean any database. Using "" causes a 'wrong db name' error. strings/ctype-big5.c: Strip only end space, not other space characters. strings/ctype-bin.c: Removed some not needed functions. Added function comments Don't remove end space in comparisons Change my_wildcmp_bin() to be 'identical' with other similar code strings/ctype-czech.c: Strip only end space, not other space characters. strings/ctype-gbk.c: Strip only end space, not other space characters. strings/ctype-latin1.c: Strip only end space, not other space characters. strings/ctype-mb.c: Strip only end space, not other space characters. strings/ctype-simple.c: Strip only end space, not other space characters. strings/ctype-sjis.c: Strip only end space, not other space characters. strings/ctype-tis620.c: Added usage of my_instr_simple. This needs to be cleaned up! strings/ctype-utf8.c: Strip only end space, not other space characters. strings/ctype-win1250ch.c: Strip only end space, not other space characters. Fixed indentation strings/strto.c: Code cleanup
109 lines
3.9 KiB
Text
109 lines
3.9 KiB
Text
#
|
|
# Testing of CASE
|
|
#
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
select CASE "b" when "a" then 1 when "b" then 2 END;
|
|
select CASE "c" when "a" then 1 when "b" then 2 END;
|
|
select CASE "c" when "a" then 1 when "b" then 2 ELSE 3 END;
|
|
select CASE BINARY "b" when "a" then 1 when "B" then 2 WHEN "b" then "ok" END;
|
|
select CASE "b" when "a" then 1 when binary "B" then 2 WHEN "b" then "ok" END;
|
|
select CASE concat("a","b") when concat("ab","") then "a" when "b" then "b" end;
|
|
select CASE when 1=0 then "true" else "false" END;
|
|
select CASE 1 when 1 then "one" WHEN 2 then "two" ELSE "more" END;
|
|
explain extended select CASE 1 when 1 then "one" WHEN 2 then "two" ELSE "more" END;
|
|
select CASE 2.0 when 1 then "one" WHEN 2.0 then "two" ELSE "more" END;
|
|
select (CASE "two" when "one" then "1" WHEN "two" then "2" END) | 0;
|
|
select (CASE "two" when "one" then 1.00 WHEN "two" then 2.00 END) +0.0;
|
|
select case 1/0 when "a" then "true" else "false" END;
|
|
select case 1/0 when "a" then "true" END;
|
|
select (case 1/0 when "a" then "true" END) | 0;
|
|
select (case 1/0 when "a" then "true" END) + 0.0;
|
|
select case when 1>0 then "TRUE" else "FALSE" END;
|
|
select case when 1<0 then "TRUE" else "FALSE" END;
|
|
|
|
#
|
|
# Test bug when using GROUP BY on CASE
|
|
#
|
|
create table t1 (a int);
|
|
insert into t1 values(1),(2),(3),(4);
|
|
select case a when 1 then 2 when 2 then 3 else 0 end as fcase, count(*) from t1 group by fcase;
|
|
explain extended select case a when 1 then 2 when 2 then 3 else 0 end as fcase, count(*) from t1 group by fcase;
|
|
select case a when 1 then "one" when 2 then "two" else "nothing" end as fcase, count(*) from t1 group by fcase;
|
|
drop table t1;
|
|
|
|
#
|
|
# Test MAX(CASE ... ) that can return null
|
|
#
|
|
|
|
create table t1 (row int not null, col int not null, val varchar(255) not null);
|
|
insert into t1 values (1,1,'orange'),(1,2,'large'),(2,1,'yellow'),(2,2,'medium'),(3,1,'green'),(3,2,'small');
|
|
select max(case col when 1 then val else null end) as color from t1 group by row;
|
|
drop table t1;
|
|
|
|
SET NAMES latin1;
|
|
|
|
#
|
|
# CASE and argument types/collations aggregation into result
|
|
#
|
|
CREATE TABLE t1 SELECT
|
|
CASE WHEN 1 THEN _latin1'a' COLLATE latin1_danish_ci ELSE _latin1'a' END AS c1,
|
|
CASE WHEN 1 THEN _latin1'a' ELSE _latin1'a' COLLATE latin1_danish_ci END AS c2,
|
|
CASE WHEN 1 THEN 'a' ELSE 1 END AS c3,
|
|
CASE WHEN 1 THEN 1 ELSE 'a' END AS c4,
|
|
CASE WHEN 1 THEN 'a' ELSE 1.0 END AS c5,
|
|
CASE WHEN 1 THEN 1.0 ELSE 'a' END AS c6,
|
|
CASE WHEN 1 THEN 1 ELSE 1.0 END AS c7,
|
|
CASE WHEN 1 THEN 1.0 ELSE 1 END AS c8,
|
|
CASE WHEN 1 THEN 1.0 END AS c9
|
|
;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--error 1267
|
|
SELECT CASE
|
|
WHEN 1
|
|
THEN _latin1'a' COLLATE latin1_danish_ci
|
|
ELSE _latin1'a' COLLATE latin1_swedish_ci
|
|
END;
|
|
|
|
--error 1270
|
|
SELECT CASE _latin1'a' COLLATE latin1_general_ci
|
|
WHEN _latin1'a' COLLATE latin1_danish_ci THEN 1
|
|
WHEN _latin1'a' COLLATE latin1_swedish_ci THEN 2
|
|
END;
|
|
|
|
SELECT
|
|
CASE _latin1'a' COLLATE latin1_general_ci WHEN _latin1'A' THEN '1' ELSE 2 END,
|
|
CASE _latin1'a' COLLATE latin1_bin WHEN _latin1'A' THEN '1' ELSE 2 END,
|
|
CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_swedish_ci THEN '1' ELSE 2 END,
|
|
CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_bin THEN '1' ELSE 2 END
|
|
;
|
|
|
|
#
|
|
# COALESCE is a CASE abbrevation:
|
|
#
|
|
# COALESCE(v1,v2) == CASE WHEN v1 IS NOT NULL THEN v1 ELSE v2 END
|
|
#
|
|
# COALESCE(V1, V2, . . . ,Vn ) =
|
|
# CASE WHEN V1 IS NOT NULL THEN V1 ELSE COALESCE (V2, . . . ,Vn) END
|
|
#
|
|
# Check COALESCE argument types aggregation
|
|
|
|
--error 1267
|
|
CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a');
|
|
--error 1267
|
|
CREATE TABLE t1 SELECT COALESCE('a' COLLATE latin1_swedish_ci,'b' COLLATE latin1_bin);
|
|
CREATE TABLE t1 SELECT
|
|
COALESCE(1), COALESCE(1.0),COALESCE('a'),
|
|
COALESCE(1,1.0), COALESCE(1,'1'),COALESCE(1.1,'1'),
|
|
COALESCE('a' COLLATE latin1_bin,'b');
|
|
explain extended SELECT
|
|
COALESCE(1), COALESCE(1.0),COALESCE('a'),
|
|
COALESCE(1,1.0), COALESCE(1,'1'),COALESCE(1.1,'1'),
|
|
COALESCE('a' COLLATE latin1_bin,'b');
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|