mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	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
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # 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;
 |