############# mysql-test\t\sql_big_tables_func.test ########################
#                                                                          #
# Variable Name: sql_big_tables                                            #
# Scope: SESSION                                                           #
# Access Type: Dynamic                                                     #
# Data Type: BOOLEAN                                                       #
# Default Value: 0 FALSE                                                   #
# Values:       1 TRUE, 0 FALSE                                            #
#                                                                          #
#                                                                          #
# Creation Date: 2008-02-25                                                #
# Author:  Sharique Abdullah                                               #
#                                                                          #
# Description: Test Cases of Dynamic System Variable "sql_big_tables"      #
#              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        #
#                                                                          #
############################################################################

# Due to difference in the result the ps-protocol is disabled
--disable_ps_protocol

--echo ** Setup **
--echo
#
# Setup
#

SET @old_big_tables = @@SESSION.sql_big_tables;

#
# Create tables
#

CREATE TABLE t1(a varchar(20), b varchar(20));

INSERT INTO t1 VALUES('aa','bb');
INSERT INTO t1 VALUES('aa','bb');
INSERT INTO t1 VALUES('aa','bb');
INSERT INTO t1 VALUES('aa','bb');
INSERT INTO t1 VALUES('aa','bb');

--echo '#--------------------FN_DYNVARS_155_01-------------------------#'
#
# TRUE mode
#

SET SESSION sql_big_tables = 1;

let $diskTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1);
let $totalTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1);

eval SET @diskTableCount = $diskTablesBig;
eval SET @tempTableCount = $totalTablesBig;

select count(a), b from t1 group by b;

let $newDiskTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1);
let $newTotalTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1);

eval SET @diskTableCount = $newDiskTablesBig - @diskTableCount;
eval SET @tempTableCount = $newTotalTablesBig - @tempTableCount;

SELECT @diskTableCount;
--echo 1 Expected
SELECT @tempTableCount;
--echo 1 Expected

--echo '#--------------------FN_DYNVARS_155_02-------------------------#'
#
# FALSE mode
#

SET SESSION sql_big_tables = 0;

let $diskTables = query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1);
let $totalTables = query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1);

eval SET @diskTableCount = $diskTables;
eval SET @tempTableCount = $totalTables;

SELECT * FROM (SELECT ta.b as a, tb.a as b FROM t1 as ta INNER JOIN t1 as tb ON ta.a = tb.a) sub;

let $newDiskTables= query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1);
let $newTotalTables= query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1);

eval SET @diskTableCount = $newDiskTables - @diskTableCount;
eval SET @tempTableCount = $newTotalTables - @tempTableCount;

SELECT @diskTableCount;
--echo 0 Expected
SELECT @tempTableCount;
--echo 1 Expected

--echo '#--------------------FN_DYNVARS_155_03-------------------------#'
#
# Session data integrity check
#
--echo ** Connecting con_int1 using root **
connect (con_int1,localhost,root,,);
--echo ** Connection con_int1 **
connection con_int1;

SELECT @@SESSION.sql_big_tables;
--echo 0 / FALSE Expected;
SET SESSION sql_big_tables = FALSE;

--echo ** Connecting con_int2 using root **
connect (con_int2,localhost,root,,);
--echo ** Connection con_int2 **
connection con_int2;

SELECT @@SESSION.sql_big_tables;
--echo 0 / FALSE Expected;

SET SESSION sql_big_tables = TRUE;

--echo ** Connection con_int1 **
connection con_int1;
SELECT @@SESSION.sql_big_tables;
--echo 0 / FALSE Expected;

--echo ** Connection con_int2 **
connection con_int2;
SELECT @@SESSION.sql_big_tables;
--echo 1 / TRUE Expected;

--echo ** Connection default **
connection default;
--echo Disconnecting Connections con_int1, con_int2
disconnect con_int1;
disconnect con_int2;

#
# Cleanup
#

SET SESSION sql_big_tables = @old_big_tables;

DROP TABLE t1;

--enable_ps_protocol

