mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			184 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| -- source include/have_ucs2.inc
 | ||
| 
 | ||
| delimiter |;
 | ||
| 
 | ||
| #
 | ||
| # BUG#17615: problem with character set
 | ||
| #
 | ||
| --disable_warnings
 | ||
| drop function if exists bug17615|
 | ||
| --enable_warnings
 | ||
| 
 | ||
| create table t3 (a varchar(256) unicode)|
 | ||
| 
 | ||
| create function bug17615() returns varchar(256) unicode
 | ||
| begin
 | ||
|   declare tmp_res varchar(256) unicode;
 | ||
|   set tmp_res= 'foo string';
 | ||
|   return tmp_res;
 | ||
| end|
 | ||
| 
 | ||
| insert into t3 values(bug17615())|
 | ||
| select * from t3|
 | ||
| 
 | ||
| drop function bug17615|
 | ||
| drop table t3|
 | ||
| 
 | ||
| 
 | ||
| #
 | ||
| # Testing COLLATE clause in
 | ||
| # - IN parameter
 | ||
| # - RETURNS
 | ||
| # - DELCARE
 | ||
| #
 | ||
| 
 | ||
| CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci)
 | ||
|   RETURNS VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_danish_ci
 | ||
| BEGIN
 | ||
|   DECLARE f2 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_swedish_ci;
 | ||
|   DECLARE f3 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_bin;
 | ||
|   SET f1= concat(collation(f1), ' ', collation(f2), ' ', collation(f3));
 | ||
|   RETURN f1;
 | ||
| END|
 | ||
| SELECT f('a')|
 | ||
| SELECT collation(f('a'))|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| #
 | ||
| # Testing keywords UNICODE + BINARY
 | ||
| #
 | ||
| CREATE FUNCTION f()
 | ||
|   RETURNS VARCHAR(64) UNICODE BINARY
 | ||
| BEGIN
 | ||
|   RETURN '';
 | ||
| END|
 | ||
| SHOW CREATE FUNCTION f|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| CREATE FUNCTION f()
 | ||
|   RETURNS VARCHAR(64) BINARY UNICODE
 | ||
| BEGIN
 | ||
|   RETURN '';
 | ||
| END|
 | ||
| SHOW CREATE FUNCTION f|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| 
 | ||
| #
 | ||
| # Testing keywords ASCII + BINARY
 | ||
| #
 | ||
| CREATE FUNCTION f()
 | ||
|   RETURNS VARCHAR(64) ASCII BINARY
 | ||
| BEGIN
 | ||
|   RETURN '';
 | ||
| END|
 | ||
| SHOW CREATE FUNCTION f|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| CREATE FUNCTION f()
 | ||
|   RETURNS VARCHAR(64) BINARY ASCII
 | ||
| BEGIN
 | ||
|   RETURN '';
 | ||
| END|
 | ||
| SHOW CREATE FUNCTION f|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| #
 | ||
| # Testing COLLATE in OUT parameter
 | ||
| #
 | ||
| 
 | ||
| CREATE PROCEDURE p1(IN  f1 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_czech_ci,
 | ||
|                     OUT f2 VARCHAR(64) CHARACTER SET ucs2 COLLATE ucs2_polish_ci)
 | ||
| BEGIN
 | ||
|   SET f2= f1;
 | ||
|   SET f2= concat(collation(f1), ' ', collation(f2));
 | ||
| END|
 | ||
| 
 | ||
| 
 | ||
| CREATE FUNCTION f1()
 | ||
|   RETURNS VARCHAR(64) CHARACTER SET ucs2
 | ||
| BEGIN
 | ||
|   DECLARE f1 VARCHAR(64) CHARACTER SET ucs2;
 | ||
|   DECLARE f2 VARCHAR(64) CHARACTER SET ucs2;
 | ||
|   SET f1='str';
 | ||
|   CALL p1(f1, f2);
 | ||
|   RETURN f2;
 | ||
| END|
 | ||
| 
 | ||
| 
 | ||
| SELECT f1()|
 | ||
| DROP PROCEDURE p1|
 | ||
| DROP FUNCTION f1|
 | ||
| 
 | ||
| 
 | ||
| #
 | ||
| # COLLATE with no CHARACTER SET in IN param
 | ||
| #
 | ||
| CREATE FUNCTION f(f1 VARCHAR(64) COLLATE ucs2_unicode_ci)
 | ||
|   RETURNS VARCHAR(64) CHARACTER SET ucs2
 | ||
| BEGIN
 | ||
|   RETURN 'str';
 | ||
| END|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| 
 | ||
| #
 | ||
| # COLLATE with no CHARACTER SET in RETURNS
 | ||
| #
 | ||
| CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
 | ||
|   RETURNS VARCHAR(64) COLLATE ucs2_unicode_ci
 | ||
| BEGIN
 | ||
|   RETURN 'str';
 | ||
| END|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| 
 | ||
| #
 | ||
| # COLLATE with no CHARACTER SET in DECLARE
 | ||
| #
 | ||
| CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
 | ||
|   RETURNS VARCHAR(64) CHARACTER SET ucs2
 | ||
| BEGIN
 | ||
|   DECLARE f2 VARCHAR(64) COLLATE ucs2_unicode_ci;
 | ||
|   RETURN 'str';
 | ||
| END|
 | ||
| DROP FUNCTION f|
 | ||
| 
 | ||
| 
 | ||
| delimiter ;|
 | ||
| 
 | ||
| #
 | ||
| # Bug#48766 SHOW CREATE FUNCTION returns extra data in return clause
 | ||
| #
 | ||
| SET NAMES utf8;
 | ||
| #
 | ||
| # Test that Latin letters are not prepended with extra '\0'.
 | ||
| #
 | ||
| CREATE FUNCTION bug48766 ()
 | ||
|   RETURNS ENUM( 'w' ) CHARACTER SET ucs2
 | ||
|   RETURN 0;
 | ||
| SHOW CREATE FUNCTION bug48766;
 | ||
| SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
 | ||
| WHERE ROUTINE_NAME='bug48766';
 | ||
| DROP FUNCTION bug48766;
 | ||
| #
 | ||
| # Test non-Latin characters
 | ||
| #
 | ||
| CREATE FUNCTION bug48766 ()
 | ||
|   RETURNS ENUM('а','б','в','г') CHARACTER SET ucs2
 | ||
|   RETURN 0;
 | ||
| SHOW CREATE FUNCTION bug48766;
 | ||
| SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
 | ||
| WHERE ROUTINE_NAME='bug48766';
 | ||
| 
 | ||
| DROP FUNCTION bug48766;
 | ||
| 
 | ||
| #
 | ||
| #
 | ||
| #
 | ||
| call mtr.add_suppression('invalid value in column mysql.proc.');
 | ||
| set collation_connection=ucs2_general_ci;
 | ||
| insert into mysql.proc (db, name, type, specific_name, language, sql_data_access, is_deterministic, security_type, param_list, returns, body, definer, created, modified, sql_mode, comment, character_set_client, collation_connection, db_collation, body_utf8 ) values ( 'a', 'a', 'function', 'bug14233_1', 'sql', 'reads_sql_data', 'no', 'definer', '', 'int(10)', 'select * from mysql.user', 'root@localhost', now(), '0000-00-00 00:00:00', '', '', '', '', '', 'select * from mysql.user' );
 | ||
| select routine_name from information_schema.routines where routine_name='a';
 | ||
| set collation_connection=default;
 | ||
| delete from mysql.proc where name='a';
 | 
