############## mysql-test\t\binlog_expire_logs_seconds_basic.test ################
#                                                                                #
# Variable Name: binlog_expire_logs_seconds                                      #
# Scope: GLOBAL                                                                  #
# Access Type: Dynamic                                                           #
# Data Type: numeric                                                             #
# Default Value:0                                                                #
# Range:  0- (2^32 -1)                                                           #
#                                                                                #
#                                                                                #
# Creation Date: 2017-11-28                                                      #
# Author: Neha kumari                                                            #
#                                                                                #
# Description: Test Cases of Dynamic System Variable                             #
#              binlog_expire_logs_seconds that checks the behavior of this       #
#              variable in the following ways                                    #
#              * Default Value                                                   #
#              * Valid & Invalid values                                          #
#              * Scope & Access method                                           #
#              * Data Integrity                                                  #
#                                                                                #
# Reference: https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#
#                                                                                #
##################################################################################

--source include/load_sysvars.inc

########################################################################
#               START OF binlog_expire_logs_seconds TESTS              #
########################################################################

SET @start_value_sec = @@global.binlog_expire_logs_seconds;
SELECT @start_value_sec;
########################################################################
#      Display the DEFAULT value of binlog_expire_logs_seconds         #
########################################################################

SET @@global.binlog_expire_logs_seconds = DEFAULT;
SELECT @@global.binlog_expire_logs_seconds;

###############################################
#     Verify default value of variable        #
###############################################

SET @@global.binlog_expire_logs_seconds = @start_value_sec;
SELECT @@global.binlog_expire_logs_seconds = 0;

##################################################################################
#        Change the value of binlog_expire_logs_seconds to a valid value         #
##################################################################################

SET @@global.binlog_expire_logs_seconds = 0;
SELECT @@global.binlog_expire_logs_seconds;
SET @@global.binlog_expire_logs_seconds = 99;
SELECT @@global.binlog_expire_logs_seconds;
SET @@global.binlog_expire_logs_seconds = 10;
SELECT @@global.binlog_expire_logs_seconds;
SET @@global.binlog_expire_logs_seconds = 21;
SELECT @@global.binlog_expire_logs_seconds;

#####################################################################################
#         Change the value of binlog_expire_logs_seconds to invalid value           #
#####################################################################################

SET @@global.binlog_expire_logs_seconds = -1;
SELECT @@global.binlog_expire_logs_seconds;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.binlog_expire_logs_seconds = 10000.01;
SELECT @@global.binlog_expire_logs_seconds;
SET @@global.binlog_expire_logs_seconds = -1024;
SELECT @@global.binlog_expire_logs_seconds;
SET @@global.binlog_expire_logs_seconds = 42949672950;
SELECT @@global.binlog_expire_logs_seconds;
SET @@global.binlog_expire_logs_seconds = 8734635;
SELECT @@global.binlog_expire_logs_seconds;

--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.binlog_expire_logs_seconds = ON;
SELECT @@global.binlog_expire_logs_seconds;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.binlog_expire_logs_seconds = 'test';
SELECT @@global.binlog_expire_logs_seconds;

#####################################################################################
#       Test if accessing session binlog_expire_logs_seconds gives error            #
#####################################################################################

--Error ER_GLOBAL_VARIABLE
SET @@session.binlog_expire_logs_seconds = 0;
SELECT @@binlog_expire_logs_seconds;

##############################################################################
# Check if the value in GLOBAL & SESSION Tables matches values in variable   #
##############################################################################

--disable_warnings
SELECT @@global.binlog_expire_logs_seconds = VARIABLE_VALUE
FROM information_schema.global_variables
WHERE VARIABLE_NAME='binlog_expire_logs_seconds';

SELECT @@binlog_expire_logs_seconds = VARIABLE_VALUE
FROM information_schema.session_variables
WHERE VARIABLE_NAME='binlog_expire_logs_seconds';
--enable_warnings

###################################################################
#      Check if TRUE and FALSE values can be used on variable     #
###################################################################

SET @@global.binlog_expire_logs_seconds = TRUE;
SELECT @@global.binlog_expire_logs_seconds;
SET @@global.binlog_expire_logs_seconds = FALSE;
SELECT @@global.binlog_expire_logs_seconds;


####################################################################################
#   Check if binlog_expire_logs_seconds can be accessed with and without @@ sign   #
####################################################################################
SET @@global.binlog_expire_logs_seconds = 1;
SELECT @@binlog_expire_logs_seconds = @@global.binlog_expire_logs_seconds;

--Error ER_GLOBAL_VARIABLE
SET binlog_expire_logs_seconds = 1;
SELECT @@binlog_expire_logs_seconds;
--Error ER_UNKNOWN_TABLE
SELECT local.binlog_expire_logs_seconds;
--Error ER_UNKNOWN_TABLE
SELECT global.binlog_expire_logs_seconds;
--Error ER_BAD_FIELD_ERROR
SELECT binlog_expire_logs_seconds = @@session.binlog_expire_logs_seconds;

##############################
#   Restore initial value    #
##############################

SET @@global.binlog_expire_logs_seconds = @start_value_sec;
SELECT @@global.binlog_expire_logs_seconds;
