############# mysql-test\t\max_sort_length_func.test ###########################
#                                                                              #
# Variable Name: sql_warnings                                                  #
# Scope: SESSION                                                               #
# Access Type: Dynamic                                                         #
# Data Type: NUMERIC                                                           #
# Default Value: 1024                                                          #
# Values:      4-8388608                                                       #
#                                                                              #
#                                                                              #
# Creation Date: 2008-03-02                                                    #
# Author:  Sharique Abdullah                                                   #
#                                                                              #
# Description: Test Cases of Dynamic System Variable max_sort_length           #
#              that checks behavior of this variable in the following ways     #
#              * Functionality based on different values                       #
#                                                                              #
# Reference:                                                                   #
#   http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html        #
#                                                                              #
################################################################################

#
# Setup
#

SET @start_value= @@global.max_sort_length;

SET @session_max_sort_length = @@Session.max_sort_length;


--disable_warnings
DROP TABLE IF EXISTS t;
--enable_warnings

#########################
#   Creating new table  #
#########################


--echo ** creating tables **
CREATE TABLE t
(
id INT AUTO_INCREMENT PRIMARY KEY,
c TEXT(30)
);

CREATE TABLE t1
(
id INT AUTO_INCREMENT PRIMARY KEY,
c BLOB(30)
);

CREATE TABLE t2
(
id INT AUTO_INCREMENT PRIMARY KEY,
c TEXT(30)
);



--echo '#--------------------FN_DYNVARS_098_01-------------------------#'
##########################################################
#    Test behavior of variable on new connection # 01    #
##########################################################


--echo ** Connecting test_con1 using username 'root' **
connect (test_con1,localhost,root,,);
--echo ** Connection test_con1 **
connection test_con1;

# Value of session & global vairable here should be 10
SELECT @@global.max_sort_length = 10;
SELECT @@session.max_sort_length = 10;

# Setting global value of variable and inserting data in table
--echo ** Setting value to 30 and inserting data **
SET @@global.max_sort_length = 30;
SELECT @@global.max_sort_length;
INSERT INTO t set c = repeat('x',29);
INSERT INTO t set c = concat(repeat('x',28),'r','x');
INSERT INTO t set c = concat(repeat('x',28),'s','y');
INSERT INTO t set c = concat(repeat('x',28),'g','w');
SELECT c from t ORDER BY c, id;
--echo ** Results should be sorted **

# Setting session value of variable and inserting data in table
SET @@session.max_sort_length = 29;
SELECT @@session.max_sort_length;
INSERT INTO t set c = repeat('x',29);
INSERT INTO t set c = concat(repeat('x',28),'r','x');
INSERT INTO t set c = concat(repeat('x',28),'s','y');
INSERT INTO t set c = concat(repeat('x',28),'g','w');
SELECT c from t ORDER BY c, id;
--echo ** Results should be sorted **

--echo '#--------------------FN_DYNVARS_098_02-------------------------#'
##########################################################
#    Test behavior of variable on new connection # 02    #
##########################################################

--echo ** Connecting test_con2 using username 'root' **
connect (test_con2,localhost,root,,);
--echo ** Connection test_con2 **
connection test_con2;


## Setting global value of variable and inserting data in table
SET @@global.max_sort_length = 30;
SELECT @@global.max_sort_length;
INSERT INTO t set c = repeat('x',29);
INSERT INTO t set c = concat(repeat('x',28),'r','x');
INSERT INTO t set c = concat(repeat('x',28),'s','y');
INSERT INTO t set c = concat(repeat('x',28),'g','w');
SELECT c from t ORDER BY c, id;

--echo ** Results should be sorted **

# Setting session value of variable and inserting data in table
SET @@session.max_sort_length = 20;
SELECT @@session.max_sort_length;
INSERT INTO t set c = repeat('x',29);
INSERT INTO t set c = concat(repeat('x',28),'r','x');
INSERT INTO t set c = concat(repeat('x',28),'s','y');
INSERT INTO t set c = concat(repeat('x',28),'g','w');
SELECT c from t ORDER BY c, id;

--echo ** Results should not be sorted **

--echo '#--------------------FN_DYNVARS_098_03-------------------------#'
#########################################################
#Check if sorting is applied with the max_sort_length=20#
#########################################################

###########################################
#   Setting new value for max_sort_length #
###########################################

SET max_sort_length=20;

###################################
#   Inserting values in  table t  #
###################################

INSERT INTO t set c = repeat('x',29);
INSERT INTO t set c = concat(repeat('x',28),'r','x');
INSERT INTO t set c = concat(repeat('x',28),'s','y');
INSERT INTO t set c = concat(repeat('x',28),'g','w');

SELECT c from t ORDER BY c, id;
--echo ** Results should not be sorted **

RESET QUERY CACHE;


--echo '#--------------------FN_DYNVARS_098_04-------------------------#'
#########################################################
#Check if sorting is applied with the max_sort_length=29#
#########################################################

SET max_sort_length=29;
SELECT c from t ORDER BY c, id;
--echo ** Results should be sorted **

--echo '#--------------------FN_DYNVARS_098_05-------------------------#'
#########################################################
#Check if sorting is applied with the max_sort_length=30#
#########################################################

SET max_sort_length=30;
SELECT c from t ORDER BY c, id;
--echo ** Results should be sorted **

--echo '#--------------------FN_DYNVARS_098_06-------------------------#'
##############################################################
#Check if sorting is applied with the max_sort_length=Default#
##############################################################


SET max_sort_length=default;
SELECT c from t ORDER BY c, id;
--echo ** Results should be sorted **


--echo '#--------------------FN_DYNVARS_098_07-------------------------#'
###########################################
#Check if sorting is applied on BLOB type #
###########################################
--echo Testing type BLOB
# Setting global value of variable and inserting data in table
SET @@global.max_sort_length = 30;
SELECT @@global.max_sort_length;
INSERT INTO t1 set c = repeat('x',29);
INSERT INTO t1 set c = concat(repeat('x',28),'r','x');
INSERT INTO t1 set c = concat(repeat('x',28),'s','y');
INSERT INTO t1 set c = concat(repeat('x',28),'g','w');
SELECT c from t1 ORDER BY c, id;
--echo ** Results should be sorted **

# Setting session value of variable and inserting data in table
SET @@session.max_sort_length = 20;
SELECT @@session.max_sort_length;
INSERT INTO t1 set c = repeat('x',29);
INSERT INTO t1 set c = concat(repeat('x',28),'r','x');
INSERT INTO t1 set c = concat(repeat('x',28),'s','y');
INSERT INTO t1 set c = concat(repeat('x',28),'g','w');
SELECT c from t1 ORDER BY c, id;
--echo ** Results should not be sorted **

--echo '#--------------------FN_DYNVARS_098_08-------------------------#'
###########################################
#Check if sorting is applied on CHAR type #
###########################################
--echo Testing type CHAR
# Setting global value of variable and inserting data in table
SET @@global.max_sort_length = 30;
SELECT @@global.max_sort_length;
INSERT INTO t2 set c = repeat('x',29);
INSERT INTO t2 set c = concat(repeat('x',28),'r','x');
INSERT INTO t2 set c = concat(repeat('x',28),'s','y');
INSERT INTO t2 set c = concat(repeat('x',28),'g','w');
SELECT c from t2 ORDER BY c, id;
--echo ** Results should not be sorted **

# Setting session value of variable and inserting data in table
SET @@session.max_sort_length = 20;
SELECT @@session.max_sort_length;
INSERT INTO t2 set c = repeat('x',29);
INSERT INTO t2 set c = concat(repeat('x',28),'r','x');
INSERT INTO t2 set c = concat(repeat('x',28),'s','y');
INSERT INTO t2 set c = concat(repeat('x',28),'g','w');
SELECT c from t2 ORDER BY c, id;
--echo ** Results should not be sorted **


#
# Cleanup
#

--echo ** Connection default **
connection default;

--echo ** Disconnecting test_con1, test_con2 **
disconnect test_con1;
disconnect test_con2;

SET @@SESSION.max_sort_length = @session_max_sort_length;

--disable_warnings
DROP TABLE IF EXISTS t;
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
--enable_warnings

SET @@global.max_sort_length= @start_value;

