############## mysql-test\t\auto_commit_func.test #############################
#                                                                              #
# Variable Name: autocommit                                                    #
# Scope: SESSION                                                               #
# Access Type: Dynamic                                                         #
# Data Type: Boolean                                                           #
# Default Value: NA                                                            #
# Range: NA                                                                    #
#                                                                              #
#                                                                              #
# Creation Date: 2008-03-07                                                    #
# Author:  Salman Rawala                                                       #
#                                                                              #
# Description: Test Cases of Dynamic System Variable "autocommit"              #
#              that checks functionality of this variable                      #
#                                                                              #
# Reference: (Not Mentioned on website)                                        #
#                                                                              #
################################################################################

--source include/have_innodb.inc

--disable_warnings
drop table if exists t1;
--enable_warnings

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

--echo ## Creating new table ##
CREATE TABLE t1
(
id INT NOT NULL auto_increment,
PRIMARY KEY (id),
name varchar(30)
) ENGINE = INNODB;

--echo '#--------------------FN_DYNVARS_003_01-------------------------#'
#####################################################
#    Setting initial value of auto_commit to zero   # 
#####################################################

--echo ## Setting variable's value to 0 i.e false ##
SET @@autocommit = 0;


--echo '#--------------------FN_DYNVARS_003_02-------------------------#'
######################################################################
#    Creating 2 different connections & testing behavior of autocommit
#    after updating record in 1st connection
######################################################################

--echo ## Creating new connection ## 
CONNECT (test_con1,localhost,root,,);
CONNECTION test_con1;

--echo ## Checking value of variable after opening new connection ##

SELECT @@autocommit;

--echo ## Setting value of variable to zero and inserting some rows ## 
SET @@autocommit = 0;

INSERT into t1(name) values('Record_1');
INSERT into t1(name) values('Record_2');
SELECT * from t1;

--echo ## Creating another connection and verifying records in table ## 

--echo ## New Connection test_con2 ##
CONNECT (test_con2,localhost,root,,);
CONNECTION test_con2;
SELECT * from t1;


--echo '#--------------------FN_DYNVARS_003_03-------------------------#'
######################################################################
#    Creating 2 different connections & testing behavior of autocommit
#    after updating record in 1st connection and using COMMIT in first
#    connection
######################################################################

--echo ## Verifying behavior of variable by commiting rows in test_con1 ##
--echo ## Connecting with connection # 01 ## 
CONNECTION test_con1;
SELECT * from t1;
COMMIT;


--echo ## New Connection test_con2 ##
--echo ## Now verifying records in table from connection # 02 ## 
CONNECTION test_con2;
SELECT * from t1;

--echo '#--------------------FN_DYNVARS_003_04-------------------------#'
######################################################################
#    Creating 2 different connections & testing behavior of autocommit
#    after updating record in 1st connection and using ROLLBACK in 
#    first connection
######################################################################

--echo ## Connecting to connection # 01 ##
CONNECTION test_con1;
SELECT * from t1;

--echo ## Updating value of first row ##
UPDATE t1 set name = 'Record_12' where name = 'Record_1';
SELECT * from t1;

--echo ## Connecting to connecting # 02 and verifying effect of update query ##
CONNECTION test_con2;
SELECT * from t1;

--echo ## Now connecting with connection # 01 and using ROLLBACK after it ##
CONNECTION test_con1;
ROLLBACK;
SELECT * from t1;



--echo '#--------------------FN_DYNVARS_003_05-------------------------#'
######################################################################
#    Creating 2 different connections & testing behavior of autocommit
#    after updating records in 1st connection and setting AUTOCOMMIT 
#    to 1 in second connection
######################################################################


--echo ## Connecting with connection # 01 ## 
CONNECTION test_con1;
INSERT into t1(name) values('Record_3');


--echo ## Connection test_con2 ##
--echo ## Now verifying records in table from connection # 02 and changing value  ## 
--echo ## of autocommit to true ## 
CONNECTION test_con2;
SELECT * from t1;
SET @@autocommit = 1;
INSERT into t1(name) values('Record_4');
INSERT into t1(name) values('Record_5');
SELECT * from t1;

--echo ## Connecting with connection # 01 and inserting few records ## 
CONNECTION test_con1;
SELECT * from t1;
INSERT into t1(name) values('Record_6');
SELECT * from t1;

--echo ## Now verifying the effect of these new records in second connection ## 
CONNECTION test_con2;
SELECT * from t1;

--echo ## Commit changes
CONNECTION test_con1;
COMMIT;

--echo ## Dropping table t1 ##
DROP table t1;

--echo ## Disconnecting both connections ##
DISCONNECT test_con1;
DISCONNECT test_con2;



