mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
Fix for Bug#40644 main.group_concat_max_len_func random failures
+ minor improvements
This commit is contained in:
parent
42607435af
commit
58fddfccdd
2 changed files with 87 additions and 68 deletions
|
@ -1,31 +1,41 @@
|
|||
SET @save = @@global.group_concat_max_len;
|
||||
drop table if exists t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
## Creating new table t1 ##
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT NOT NULL auto_increment,
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (id),
|
||||
rollno int NOT NULL,
|
||||
rollno INT NOT NULL,
|
||||
name VARCHAR(30)
|
||||
);
|
||||
'#--------------------FN_DYNVARS_034_01-------------------------#'
|
||||
## Setting initial value of variable to 4 ##
|
||||
## Setting initial value of variable to 4 ##
|
||||
SET @@global.group_concat_max_len = 4;
|
||||
## Inserting some rows in table ##
|
||||
INSERT into t1(rollno, name) values(1, 'Record_1');
|
||||
INSERT into t1(rollno, name) values(2, 'Record_2');
|
||||
INSERT into t1(rollno, name) values(1, 'Record_3');
|
||||
INSERT into t1(rollno, name) values(3, 'Record_4');
|
||||
INSERT into t1(rollno, name) values(1, 'Record_5');
|
||||
INSERT into t1(rollno, name) values(3, 'Record_6');
|
||||
INSERT into t1(rollno, name) values(4, 'Record_7');
|
||||
INSERT into t1(rollno, name) values(4, 'Record_8');
|
||||
## Creating two new connections ##
|
||||
## Inserting some rows in table ##
|
||||
INSERT INTO t1(rollno, name) VALUES(1, 'Record_1');
|
||||
INSERT INTO t1(rollno, name) VALUES(2, 'Record_2');
|
||||
INSERT INTO t1(rollno, name) VALUES(1, 'Record_3');
|
||||
INSERT INTO t1(rollno, name) VALUES(3, 'Record_4');
|
||||
INSERT INTO t1(rollno, name) VALUES(1, 'Record_5');
|
||||
INSERT INTO t1(rollno, name) VALUES(3, 'Record_6');
|
||||
INSERT INTO t1(rollno, name) VALUES(4, 'Record_7');
|
||||
INSERT INTO t1(rollno, name) VALUES(4, 'Record_8');
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
id rollno name
|
||||
1 1 Record_1
|
||||
2 2 Record_2
|
||||
3 1 Record_3
|
||||
4 3 Record_4
|
||||
5 1 Record_5
|
||||
6 3 Record_6
|
||||
7 4 Record_7
|
||||
8 4 Record_8
|
||||
## Creating two new connections ##
|
||||
'#--------------------FN_DYNVARS_034_02-------------------------#'
|
||||
## Connecting with test_con1 ##
|
||||
## Accessing data and using group_concat on column whose value is greater than 4 ##
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
id rollno group_concat(name)
|
||||
## Accessing data and using group_concat on column whose value is greater than 4 ##
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
id rollno GROUP_CONCAT(name)
|
||||
1 1 Reco
|
||||
2 2 Reco
|
||||
4 3 Reco
|
||||
|
@ -33,10 +43,10 @@ id rollno group_concat(name)
|
|||
Warnings:
|
||||
Warning 1260 4 line(s) were cut by GROUP_CONCAT()
|
||||
## Changing session value of variable and verifying its behavior, ##
|
||||
## warning should come here ##
|
||||
## warning should come here ##
|
||||
SET @@session.group_concat_max_len = 10;
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
id rollno group_concat(name)
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
id rollno GROUP_CONCAT(name)
|
||||
1 1 Record_1,R
|
||||
2 2 Record_2
|
||||
4 3 Record_4,R
|
||||
|
@ -44,18 +54,18 @@ id rollno group_concat(name)
|
|||
Warnings:
|
||||
Warning 1260 3 line(s) were cut by GROUP_CONCAT()
|
||||
'#--------------------FN_DYNVARS_034_03-------------------------#'
|
||||
## Connecting with new connection test_con2 ##
|
||||
## Verifying initial value of variable. It should be 4 ##
|
||||
## Connecting with new connection test_con2 ##
|
||||
## Verifying initial value of variable. It should be 4 ##
|
||||
SELECT @@session.group_concat_max_len = 4;
|
||||
@@session.group_concat_max_len = 4
|
||||
1
|
||||
## Setting session value of variable to 20 and verifying variable is concating ##
|
||||
## column's value to 20 or not ##
|
||||
## Setting session value of variable to 20 and verifying variable is concating ##
|
||||
## column's value to 20 or not ##
|
||||
SET @@session.group_concat_max_len = 20;
|
||||
## Verifying value of name column, it should not me more than 20 characters ##
|
||||
## Warning should come here ##
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
id rollno group_concat(name)
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
id rollno GROUP_CONCAT(name)
|
||||
1 1 Record_1,Record_3,Re
|
||||
2 2 Record_2
|
||||
4 3 Record_4,Record_6
|
||||
|
@ -63,17 +73,17 @@ id rollno group_concat(name)
|
|||
Warnings:
|
||||
Warning 1260 1 line(s) were cut by GROUP_CONCAT()
|
||||
'#--------------------FN_DYNVARS_034_04-------------------------#'
|
||||
## Setting session value of variable to 26. No warning should appear here ##
|
||||
## because the value after concatination is less than 30 ##
|
||||
## Setting session value of variable to 26. No warning should appear here ##
|
||||
## because the value after concatination is less than 30 ##
|
||||
SET @@session.group_concat_max_len = 26;
|
||||
## Verifying value of name column, it should not give warning now ##
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
id rollno group_concat(name)
|
||||
## Verifying value of name column, it should not give warning now ##
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
id rollno GROUP_CONCAT(name)
|
||||
1 1 Record_1,Record_3,Record_5
|
||||
2 2 Record_2
|
||||
4 3 Record_4,Record_6
|
||||
7 4 Record_7,Record_8
|
||||
## Dropping table t1 ##
|
||||
DROP table t1;
|
||||
DROP TABLE t1;
|
||||
## Disconnecting both the connection ##
|
||||
SET @@global.group_concat_max_len = @save;
|
||||
|
|
|
@ -11,18 +11,23 @@
|
|||
# Creation Date: 2008-03-07 #
|
||||
# Author: Salman Rawala #
|
||||
# #
|
||||
# Last modification: #
|
||||
# 2008-11-14 mleich Fix Bug#40644 main.group_concat_max_len_func random #
|
||||
# failures #
|
||||
# + minor improvements #
|
||||
# #
|
||||
# Description: Test Cases of Dynamic System Variable group_concat_max_len #
|
||||
# that checks the functionality of this variable #
|
||||
# #
|
||||
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
|
||||
# server-system-variables.html #
|
||||
# Reference: #
|
||||
# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html #
|
||||
# #
|
||||
###############################################################################
|
||||
|
||||
SET @save = @@global.group_concat_max_len;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
#########################
|
||||
|
@ -32,34 +37,38 @@ drop table if exists t1;
|
|||
--echo ## Creating new table t1 ##
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT NOT NULL auto_increment,
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (id),
|
||||
rollno int NOT NULL,
|
||||
rollno INT NOT NULL,
|
||||
name VARCHAR(30)
|
||||
);
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_034_01-------------------------#'
|
||||
########################################################################
|
||||
# Setting initial value of group_concat_max_len, inserting some rows
|
||||
# & creating 2 new connections
|
||||
# & creating 2 new connections
|
||||
########################################################################
|
||||
|
||||
--echo ## Setting initial value of variable to 4 ##
|
||||
--echo ## Setting initial value of variable to 4 ##
|
||||
SET @@global.group_concat_max_len = 4;
|
||||
|
||||
--echo ## Inserting some rows in table ##
|
||||
INSERT into t1(rollno, name) values(1, 'Record_1');
|
||||
INSERT into t1(rollno, name) values(2, 'Record_2');
|
||||
INSERT into t1(rollno, name) values(1, 'Record_3');
|
||||
INSERT into t1(rollno, name) values(3, 'Record_4');
|
||||
INSERT into t1(rollno, name) values(1, 'Record_5');
|
||||
INSERT into t1(rollno, name) values(3, 'Record_6');
|
||||
INSERT into t1(rollno, name) values(4, 'Record_7');
|
||||
INSERT into t1(rollno, name) values(4, 'Record_8');
|
||||
--echo ## Inserting some rows in table ##
|
||||
INSERT INTO t1(rollno, name) VALUES(1, 'Record_1');
|
||||
INSERT INTO t1(rollno, name) VALUES(2, 'Record_2');
|
||||
INSERT INTO t1(rollno, name) VALUES(1, 'Record_3');
|
||||
INSERT INTO t1(rollno, name) VALUES(3, 'Record_4');
|
||||
INSERT INTO t1(rollno, name) VALUES(1, 'Record_5');
|
||||
INSERT INTO t1(rollno, name) VALUES(3, 'Record_6');
|
||||
INSERT INTO t1(rollno, name) VALUES(4, 'Record_7');
|
||||
INSERT INTO t1(rollno, name) VALUES(4, 'Record_8');
|
||||
# The following "auxiliary" select ensures that all records are on disk
|
||||
# = result sets got by parallel sessions cannot suffer from effects
|
||||
# caused by the MyISAM feature "concurrent_inserts".
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
|
||||
--echo ## Creating two new connections ##
|
||||
CONNECT (test_con1,localhost,root,,);
|
||||
CONNECT (test_con2,localhost,root,,);
|
||||
--echo ## Creating two new connections ##
|
||||
connect (test_con1,localhost,root,,);
|
||||
connect (test_con2,localhost,root,,);
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_034_02-------------------------#'
|
||||
|
@ -68,16 +77,16 @@ CONNECT (test_con2,localhost,root,,);
|
|||
###############################################################################
|
||||
|
||||
--echo ## Connecting with test_con1 ##
|
||||
CONNECTION test_con1;
|
||||
connection test_con1;
|
||||
|
||||
--echo ## Accessing data and using group_concat on column whose value is greater than 4 ##
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
--echo ## Accessing data and using group_concat on column whose value is greater than 4 ##
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
|
||||
--echo ## Changing session value of variable and verifying its behavior, ##
|
||||
--echo ## warning should come here ##
|
||||
--echo ## warning should come here ##
|
||||
|
||||
SET @@session.group_concat_max_len = 10;
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_034_03-------------------------#'
|
||||
|
@ -85,19 +94,19 @@ SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
|||
# Verifying behavior of variable by increasing session value of variable #
|
||||
##############################################################################
|
||||
|
||||
--echo ## Connecting with new connection test_con2 ##
|
||||
--echo ## Connecting with new connection test_con2 ##
|
||||
connection test_con2;
|
||||
|
||||
--echo ## Verifying initial value of variable. It should be 4 ##
|
||||
--echo ## Verifying initial value of variable. It should be 4 ##
|
||||
SELECT @@session.group_concat_max_len = 4;
|
||||
|
||||
--echo ## Setting session value of variable to 20 and verifying variable is concating ##
|
||||
--echo ## column's value to 20 or not ##
|
||||
--echo ## Setting session value of variable to 20 and verifying variable is concating ##
|
||||
--echo ## column's value to 20 or not ##
|
||||
SET @@session.group_concat_max_len = 20;
|
||||
|
||||
--echo ## Verifying value of name column, it should not me more than 20 characters ##
|
||||
--echo ## Warning should come here ##
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_034_04-------------------------#'
|
||||
|
@ -106,12 +115,12 @@ SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
|||
# greater than the maximum concat length of name column #
|
||||
###############################################################################
|
||||
|
||||
--echo ## Setting session value of variable to 26. No warning should appear here ##
|
||||
--echo ## because the value after concatination is less than 30 ##
|
||||
--echo ## Setting session value of variable to 26. No warning should appear here ##
|
||||
--echo ## because the value after concatination is less than 30 ##
|
||||
SET @@session.group_concat_max_len = 26;
|
||||
|
||||
--echo ## Verifying value of name column, it should not give warning now ##
|
||||
SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
||||
--echo ## Verifying value of name column, it should not give warning now ##
|
||||
SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno;
|
||||
|
||||
|
||||
############################################################
|
||||
|
@ -119,11 +128,11 @@ SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno;
|
|||
############################################################
|
||||
|
||||
--echo ## Dropping table t1 ##
|
||||
DROP table t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo ## Disconnecting both the connection ##
|
||||
DISCONNECT test_con2;
|
||||
DISCONNECT test_con1;
|
||||
disconnect test_con2;
|
||||
disconnect test_con1;
|
||||
|
||||
connection default;
|
||||
|
||||
|
|
Loading…
Reference in a new issue