mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	bug#44766: valgrind error when using convert() in a subquery Problem: input and output buffers may be the same converting a string to some charset. That may lead to wrong results/valgrind warnings. Fix: use different buffers.
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| DROP TABLE IF EXISTS t1;
 | |
| CREATE TABLE t1 ( number INT NOT NULL, alpha CHAR(6) NOT NULL );
 | |
| INSERT INTO t1 VALUES (1413006,'idlfmv'),
 | |
| (1413065,'smpsfz'),(1413127,'sljrhx'),(1413304,'qerfnd');
 | |
| SELECT number, alpha, CONCAT_WS('<---->',number,alpha) AS new
 | |
| FROM t1 GROUP BY number;
 | |
| number	alpha	new
 | |
| 1413006	idlfmv	1413006<---->idlfmv
 | |
| 1413065	smpsfz	1413065<---->smpsfz
 | |
| 1413127	sljrhx	1413127<---->sljrhx
 | |
| 1413304	qerfnd	1413304<---->qerfnd
 | |
| SELECT CONCAT_WS('<---->',number,alpha) AS new
 | |
| FROM t1 GROUP BY new LIMIT 1;
 | |
| new
 | |
| 1413006<---->idlfmv
 | |
| SELECT number, alpha, CONCAT_WS('<->',number,alpha) AS new
 | |
| FROM t1 GROUP BY new LIMIT 1;
 | |
| number	alpha	new
 | |
| 1413006	idlfmv	1413006<->idlfmv
 | |
| SELECT number, alpha, CONCAT_WS('-',number,alpha,alpha,alpha,alpha,alpha,alpha,alpha) AS new
 | |
| FROM t1 GROUP BY new LIMIT 1;
 | |
| number	alpha	new
 | |
| 1413006	idlfmv	1413006-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv
 | |
| SELECT number, alpha, CONCAT_WS('<------------------>',number,alpha) AS new
 | |
| FROM t1 GROUP BY new LIMIT 1;
 | |
| number	alpha	new
 | |
| 1413006	idlfmv	1413006<------------------>idlfmv
 | |
| drop table t1;
 | |
| create table t1 (a char(4), b double, c date, d tinyint(4));
 | |
| insert into t1 values ('AAAA', 105, '2003-03-01', 1);
 | |
| select * from t1 where concat(A,C,B,D) = 'AAAA2003-03-011051';
 | |
| a	b	c	d
 | |
| AAAA	105	2003-03-01	1
 | |
| drop table t1;
 | |
| select 'a' union select concat('a', -4);
 | |
| a
 | |
| a
 | |
| a-4
 | |
| select 'a' union select concat('a', -4.5);
 | |
| a
 | |
| a
 | |
| a-4.5
 | |
| select 'a' union select concat('a', -(4 + 1));
 | |
| a
 | |
| a
 | |
| a-5
 | |
| select 'a' union select concat('a', 4 - 5);
 | |
| a
 | |
| a
 | |
| a-1
 | |
| select 'a' union select concat('a', -'3');
 | |
| a
 | |
| a
 | |
| a-3
 | |
| select 'a' union select concat('a', -concat('3',4));
 | |
| a
 | |
| a
 | |
| a-34
 | |
| select 'a' union select concat('a', -0);
 | |
| a
 | |
| a
 | |
| a0
 | |
| select 'a' union select concat('a', -0.0);
 | |
| a
 | |
| a
 | |
| a0.0
 | |
| select 'a' union select concat('a', -0.0000);
 | |
| a
 | |
| a
 | |
| a0.0000
 | |
| select concat((select x from (select 'a' as x) as t1 ),
 | |
| (select y from (select 'b' as y) as t2 )) from (select 1 union select 2 )
 | |
| as t3;
 | |
| concat((select x from (select 'a' as x) as t1 ),
 | |
| (select y from (select 'b' as y) as t2 ))
 | |
| ab
 | |
| ab
 | |
| create table t1(f1 varchar(6)) charset=utf8;
 | |
| insert into t1 values ("123456");
 | |
| select concat(f1, 2) a from t1 union select 'x' a from t1;
 | |
| a
 | |
| 1234562
 | |
| x
 | |
| drop table t1;
 | |
| CREATE TABLE t1 (c1 varchar(100), c2 varchar(100));
 | |
| INSERT INTO t1 VALUES ('',''), ('','First'), ('Random','Random');
 | |
| SELECT * FROM t1 WHERE CONCAT(c1,' ',c2) REGEXP 'First.*';
 | |
| c1	c2
 | |
| 	First
 | |
| DROP TABLE t1;
 | |
| # End of 5.0 tests
 | |
| #
 | |
| # Bug #44743: Join in combination with concat does not always work
 | |
| #
 | |
| CREATE TABLE t1 (
 | |
| a VARCHAR(100) NOT NULL DEFAULT '0',
 | |
| b VARCHAR(2) NOT NULL DEFAULT '',
 | |
| c VARCHAR(2) NOT NULL DEFAULT '',
 | |
| d TEXT NOT NULL,
 | |
| PRIMARY KEY (a, b, c),
 | |
| KEY (a)
 | |
| ) DEFAULT CHARSET=utf8;
 | |
| INSERT INTO t1 VALUES ('gui_A', 'a', 'b', 'str1'),
 | |
| ('gui_AB', 'a', 'b', 'str2'), ('gui_ABC', 'a', 'b', 'str3');
 | |
| CREATE TABLE t2 (
 | |
| a VARCHAR(100) NOT NULL DEFAULT '',
 | |
| PRIMARY KEY (a)
 | |
| ) DEFAULT CHARSET=latin1;
 | |
| INSERT INTO t2 VALUES ('A'), ('AB'), ('ABC');
 | |
| SELECT CONCAT('gui_', t2.a), t1.d FROM t2 
 | |
| LEFT JOIN t1 ON t1.a = CONCAT('gui_', t2.a) AND t1.b = 'a' AND t1.c = 'b';
 | |
| CONCAT('gui_', t2.a)	d
 | |
| gui_A	str1
 | |
| gui_AB	str2
 | |
| gui_ABC	str3
 | |
| EXPLAIN SELECT CONCAT('gui_', t2.a), t1.d FROM t2 
 | |
| LEFT JOIN t1 ON t1.a = CONCAT('gui_', t2.a) AND t1.b = 'a' AND t1.c = 'b';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t2	index	NULL	PRIMARY	102	NULL	3	Using index
 | |
| 1	SIMPLE	t1	eq_ref	PRIMARY,a	PRIMARY	318	func,const,const	1	
 | |
| DROP TABLE t1, t2;
 | |
| # End of 5.1 tests
 |