Commit b03c1541 authored by Hemant Kumar's avatar Hemant Kumar

Bug#12872804 - 62155: BINLOG.BINLOG_STM_UNSAFE_WARNING FAILS WHEN RUN WITH --REPEAT=2

Fixed the testcase using timestamp logic while doing grep from the error file.
parent 251fa88a
...@@ -34,13 +34,13 @@ USE test; ...@@ -34,13 +34,13 @@ USE test;
# #
SET @old_log_warnings = @@log_warnings; SET @old_log_warnings = @@log_warnings;
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(10)); CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(15));
SET GLOBAL LOG_WARNINGS = 0; SET GLOBAL LOG_WARNINGS = 0;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265'); INSERT INTO t1 VALUES(UUID(), 'timestamp');
Warnings: Warnings:
Note 1592 Statement may not be safe to log in statement format. Note 1592 Statement may not be safe to log in statement format.
SET GLOBAL LOG_WARNINGS = 1; SET GLOBAL LOG_WARNINGS = 1;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265'); INSERT INTO t1 VALUES(UUID(), 'timestamp');
Warnings: Warnings:
Note 1592 Statement may not be safe to log in statement format. Note 1592 Statement may not be safe to log in statement format.
DROP TABLE t1; DROP TABLE t1;
......
...@@ -80,22 +80,33 @@ eval USE $old_db; ...@@ -80,22 +80,33 @@ eval USE $old_db;
--echo # Bug#46265: Can not disable warning about unsafe statements for binary logging --echo # Bug#46265: Can not disable warning about unsafe statements for binary logging
--echo # --echo #
# Here introducing a sleep of one Second, just to make sure
# that when this test executes with "--repeat" option,
# the timestamp value is different and hence the Occcurrence count is one.
--sleep 1
SET @old_log_warnings = @@log_warnings; SET @old_log_warnings = @@log_warnings;
--disable_warnings --disable_warnings
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
--enable_warnings --enable_warnings
CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(10)); let BINLOG_COUNTER1= `select CONVERT(NOW(),UNSIGNED) as timestmap from dual`;
CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(15));
SET GLOBAL LOG_WARNINGS = 0; SET GLOBAL LOG_WARNINGS = 0;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265'); # Replacing the result file content here.
# Instead of writing $BINLOG_COUNTER1 value to result file, writing a fixed string timestamp to it.
--replace_result $BINLOG_COUNTER1 timestamp
eval INSERT INTO t1 VALUES(UUID(), '$BINLOG_COUNTER1');
SET GLOBAL LOG_WARNINGS = 1; SET GLOBAL LOG_WARNINGS = 1;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265'); --replace_result $BINLOG_COUNTER1 timestamp
eval INSERT INTO t1 VALUES(UUID(), '$BINLOG_COUNTER1');
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL log_warnings = @old_log_warnings; SET GLOBAL log_warnings = @old_log_warnings;
let $log_error_= `SELECT @@GLOBAL.log_error`; let $log_error_= `SELECT @@GLOBAL.log_error`;
if(!`select LENGTH('$log_error_')`) if(!$log_error_)
{ {
# MySQL Server on windows is started with --console and thus # MySQL Server on windows is started with --console and thus
# does not know the location of its .err log, use default location # does not know the location of its .err log, use default location
...@@ -111,7 +122,9 @@ perl; ...@@ -111,7 +122,9 @@ perl;
use strict; use strict;
my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set"; my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set";
open(FILE, "$log_error") or die("Unable to open $log_error: $!\n"); open(FILE, "$log_error") or die("Unable to open $log_error: $!\n");
my $count = () = grep(/Bug#46265/g,<FILE>); my $binlog_counter= $ENV{'BINLOG_COUNTER1'} or die "BINLOG_COUNTER1 not set";
my $count = () = grep(/$binlog_counter/g,<FILE>);
# Grep the timestamp value from the error file.
print "Occurrences: $count\n"; print "Occurrences: $count\n";
close(FILE); close(FILE);
EOF EOF
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment