summaryrefslogtreecommitdiff
path: root/mysql-test/t/sql_select_limit_func.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/t/sql_select_limit_func.test')
-rw-r--r--mysql-test/t/sql_select_limit_func.test209
1 files changed, 209 insertions, 0 deletions
diff --git a/mysql-test/t/sql_select_limit_func.test b/mysql-test/t/sql_select_limit_func.test
new file mode 100644
index 00000000000..ed582949aa0
--- /dev/null
+++ b/mysql-test/t/sql_select_limit_func.test
@@ -0,0 +1,209 @@
+############# mysql-test\t\sql_select_limit_func.test #####################
+# #
+# Variable Name: sql_select_limit #
+# Scope: GLOBAL, SESSION #
+# Access Type: Dynamic #
+# Data Type: NUMERIC #
+# Default Value: 4294967295 #
+# Values: 1-4294967295 #
+# #
+# #
+# Creation Date: 2008-02-25 #
+# Author: Sharique Abdullah #
+# #
+# Description: Test Cases of Dynamic System Variable "sql_select_limit" #
+# 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/set-option.html #
+# #
+###########################################################################
+
+--echo ** Setup **
+--echo
+#
+# Setup
+#
+
+SET @session_sql_select_limit = @@SESSION.sql_select_limit;
+SET @global_sql_select_limit = @@GLOBAL.sql_select_limit;
+
+#
+# Creating tables
+#
+
+CREATE TEMPORARY TABLE t1(a int PRIMARY KEY, b varchar(20));
+CREATE TEMPORARY TABLE t2(a int PRIMARY KEY, b varchar(20));
+CREATE TEMPORARY TABLE t3(a int PRIMARY KEY, b varchar(20));
+
+INSERT INTO t1 VALUES(1, 'val1');
+INSERT INTO t1 VALUES(2, 'val2');
+INSERT INTO t1 VALUES(3, 'val3');
+INSERT INTO t1 VALUES(4, 'val4');
+INSERT INTO t1 VALUES(5, 'val5');
+INSERT INTO t1 VALUES(6, 'val6');
+INSERT INTO t1 VALUES(7, 'val7');
+INSERT INTO t1 VALUES(8, 'val8');
+INSERT INTO t1 VALUES(9, 'val9');
+
+INSERT INTO t2 VALUES(5, 'val5');
+INSERT INTO t2 VALUES(6, 'val6');
+INSERT INTO t2 VALUES(7, 'val7');
+INSERT INTO t2 VALUES(8, 'val8');
+INSERT INTO t2 VALUES(9, 'val9');
+
+
+
+--echo '#-----------------------------FN_DYNVARS_165_01-----------------#'
+--echo
+--echo Value DEFAULT
+--echo
+#
+# Value DEFAULT
+#
+
+--enable_info
+
+SET SESSION sql_select_limit = DEFAULT;
+
+SELECT * FROM t1;
+--echo Expecting affected rows: 9
+
+SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a;
+--echo Expecting affected rows: 5
+
+
+--echo '#-----------------------------FN_DYNVARS_165_02---------------#'
+#
+# Small value
+#
+
+SET SESSION sql_select_limit = 2;
+
+SELECT * FROM t1;
+--echo Expecting affected rows: 2
+
+SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a;
+--echo Expecting affected rows: 2
+
+--echo '#-----------------------------FN_DYNVARS_165_03---------------#'
+#
+# Small value with LIMIT Clause
+#
+
+SET SESSION sql_select_limit = 2;
+
+SELECT * FROM t1 LIMIT 4;
+--echo Expecting affected rows: 4
+
+SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a LIMIT 3;
+--echo Expecting affected rows: 3
+
+--echo '#-----------------------------FN_DYNVARS_165_04----------------#'
+#
+# Small value with Store procedure
+#
+
+SET SESSION sql_select_limit = 2;
+
+delimiter |;
+
+CREATE PROCEDURE TestProc()
+BEGIN
+ SELECT * FROM t1;
+END|
+delimiter ;|
+
+call TestProc();
+--echo Expecting affected rows: 9
+
+DROP PROCEDURE TestProc;
+
+delimiter |;
+
+CREATE PROCEDURE TestProc()
+BEGIN
+ SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a;
+END|
+delimiter ;|
+
+call TestProc();
+--echo Expecting affected rows: 5
+
+DROP PROCEDURE TestProc;
+
+--echo '#-----------------------------FN_DYNVARS_165_05-----------------#'
+#
+# Small value with Non result producing SELECT statements
+#
+
+SET SESSION sql_select_limit = 2;
+
+CREATE TEMPORARY TABLE t4(a int PRIMARY KEY, b varchar(20)) SELECT * FROM t2;
+--echo Expecting Records: 5
+
+INSERT INTO t3 SELECT * FROM t1;
+--echo Expecting Records: 9
+
+--echo '#-----------------------------FN_DYNVARS_165_06---------------------#'
+#
+# Session data integrity check & GLOBAL Value check
+#
+--disable_info
+
+SET GLOBAL sql_select_limit = 2;
+
+--echo ** Connecting con_int2 using root **
+connect (con_int1,localhost,root,,);
+
+--echo ** Connection con_int1 **
+connection con_int1;
+SELECT @@SESSION.sql_select_limit;
+--echo 2 Expected
+
+SET SESSION sql_select_limit = 10;
+
+--echo ** Connecting con_int2 using root **
+connect (con_int2,localhost,root,,);
+
+--echo ** Connection con_int2 **
+connection con_int2;
+SELECT @@SESSION.sql_select_limit;
+--echo 2 Expected
+
+SET SESSION sql_select_limit = 12;
+
+--echo ** Connection con_int2 **
+connection con_int2;
+SELECT @@SESSION.sql_select_limit;
+--echo 12 Expected
+
+--echo ** Connection con_int1 **
+connection con_int1;
+SELECT @@SESSION.sql_select_limit;
+--echo 10 Expected
+
+SELECT @@GLOBAL.sql_select_limit;
+--echo 2 Expected
+
+--echo ** Connection default **
+connection default;
+
+--echo Disconnecting Connections con_int1, con_int2
+disconnect con_int1;
+disconnect con_int2;
+
+
+#
+# Cleanup
+#
+
+--disable_info
+
+SET @@SESSION.sql_select_limit = @session_sql_select_limit;
+SET @@GLOBAL.sql_select_limit = @global_sql_select_limit;
+
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE t4;