38 changed files with 435 additions and 64 deletions
-
4client/mysqlbinlog.cc
-
6config/ac-macros/misc.m4
-
2extra/yassl/include/yassl_int.hpp
-
6extra/yassl/src/handshake.cpp
-
3extra/yassl/src/yassl_imp.cpp
-
2extra/yassl/src/yassl_int.cpp
-
3extra/yassl/taocrypt/include/modes.hpp
-
9extra/yassl/taocrypt/src/asn.cpp
-
15mysql-test/mysql-test-run.pl
-
6mysql-test/r/mysqld_option_err.result
-
47mysql-test/t/mysqld_option_err.test
-
5mysys/my_compress.c
-
5mysys/my_getopt.c
-
2sql/mysqld.cc
-
4storage/pbxt/ChangeLog
-
4storage/pbxt/src/Makefile.am
-
8storage/pbxt/src/datalog_xt.cc
-
6storage/pbxt/src/discover_xt.cc
-
5storage/pbxt/src/filesys_xt.cc
-
15storage/pbxt/src/ha_pbxt.cc
-
2storage/pbxt/src/memory_xt.cc
-
70storage/pbxt/src/myxt_xt.cc
-
1storage/pbxt/src/myxt_xt.h
-
91storage/pbxt/src/restart_xt.cc
-
3storage/pbxt/src/restart_xt.h
-
2storage/pbxt/src/strutil_xt.cc
-
3storage/pbxt/src/tabcache_xt.cc
-
9storage/pbxt/src/thread_xt.cc
-
6storage/pbxt/src/xaction_xt.cc
-
3storage/pbxt/src/xactlog_xt.cc
-
2storage/pbxt/src/xt_errno.h
-
4storage/xtradb/fil/fil0fil.c
-
1storage/xtradb/mtr/mtr0mtr.c
-
1storage/xtradb/srv/srv0srv.c
-
14storage/xtradb/srv/srv0start.c
-
6strings/decimal.c
-
104support-files/ccfilter
-
20support-files/compiler_warnings.supp
@ -0,0 +1,6 @@ |
|||
Test that unknown option is not silently ignored. |
|||
Test bad binlog format. |
|||
Test bad default storage engine. |
|||
Test non-numeric value passed to number option. |
|||
Test that bad value for plugin enum option is rejected correctly. |
|||
Done. |
|||
@ -0,0 +1,47 @@ |
|||
# |
|||
# Test error checks on mysqld command line option parsing. |
|||
# |
|||
# Call mysqld with different invalid options, and check that it fails in each case. |
|||
# |
|||
# This means that a test failure results in mysqld starting up, which is only |
|||
# caught when the test case times out. This is not ideal, but I did not find an |
|||
# easy way to have the server shut down after a successful startup. |
|||
# |
|||
|
|||
--source include/not_embedded.inc |
|||
|
|||
# We have not run (and do not need) bootstrap of the server. We just |
|||
# give it a dummy data directory (for log files etc). |
|||
|
|||
mkdir $MYSQLTEST_VARDIR/tmp/mysqld_option_err; |
|||
|
|||
|
|||
--echo Test that unknown option is not silently ignored. |
|||
--error 2 |
|||
--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --nonexistentoption >$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1 |
|||
|
|||
|
|||
--echo Test bad binlog format. |
|||
--error 1 |
|||
--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --log-bin --binlog-format=badformat >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1 |
|||
|
|||
|
|||
--echo Test bad default storage engine. |
|||
--error 1 |
|||
--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --default-storage-engine=nonexistentengine >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1 |
|||
|
|||
|
|||
--echo Test non-numeric value passed to number option. |
|||
--error 1 |
|||
--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --min-examined-row-limit=notanumber >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1 |
|||
|
|||
|
|||
# Test for MBug#423035: error in parsing enum value for plugin |
|||
# variable in mysqld command-line option. |
|||
# See also Bug#32034. |
|||
--echo Test that bad value for plugin enum option is rejected correctly. |
|||
--error 7 |
|||
--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables $EXAMPLE_PLUGIN_OPT --plugin-load=EXAMPLE=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1 |
|||
|
|||
|
|||
--echo Done. |
|||
@ -0,0 +1,104 @@ |
|||
#! /usr/bin/perl |
|||
|
|||
# Post-processor for compiler output to filter out warnings matched in |
|||
# support-files/compiler_warnings.supp. This makes it easier to check |
|||
# that no new warnings are introduced without needing to submit a build |
|||
# for Buildbot. |
|||
# |
|||
# Use by setting CC="ccfilter gcc" CXX="ccfilter gcc" before ./configure. |
|||
# |
|||
# By default, just filters the output for suppressed warnings. If the |
|||
# FAILONWARNING environment variable is set, then instead will fail the |
|||
# compile on encountering a non-suppressed warnings. |
|||
|
|||
use strict; |
|||
use warnings; |
|||
|
|||
my $suppressions; |
|||
|
|||
open STDOUT_COPY, ">&STDOUT" |
|||
or die "Failed to dup stdout: $!]n"; |
|||
|
|||
my $pid= open(PIPE, '-|'); |
|||
|
|||
if (!defined($pid)) { |
|||
die "Error: Cannot fork(): $!\n"; |
|||
} elsif (!$pid) { |
|||
# Child. |
|||
# actually want to send the STDERR to the parent, not the STDOUT. |
|||
# So shuffle things around a bit. |
|||
open STDERR, ">&STDOUT" |
|||
or die "Child: Failed to dup pipe to parent: $!\n"; |
|||
open STDOUT, ">&STDOUT_COPY" |
|||
or die "Child: Failed to dup parent stdout: $!\n"; |
|||
close STDOUT_COPY; |
|||
exec { $ARGV[0] } @ARGV; |
|||
die "Child: exec() failed: $!\n"; |
|||
} else { |
|||
# Parent. |
|||
close STDOUT_COPY; |
|||
my $cwd= qx(pwd); |
|||
chomp($cwd); |
|||
while (<PIPE>) { |
|||
my $line= $_; |
|||
if (/^(.*?):([0-9]+): [Ww]arning: (.*)$/) { |
|||
my ($file, $lineno, $msg)= ($1, $2, $3); |
|||
$file= "$cwd/$file"; |
|||
|
|||
next |
|||
if check_if_suppressed($file, $lineno, $msg); |
|||
die "$line\nGot warning, terminating.\n" |
|||
if $ENV{FAILONWARNING}; |
|||
print STDERR $line; |
|||
next; |
|||
} |
|||
|
|||
print STDERR $line; |
|||
} |
|||
close(PIPE); |
|||
} |
|||
|
|||
exit 0; |
|||
|
|||
sub check_if_suppressed { |
|||
my ($file, $lineno, $msg)= @_; |
|||
load_suppressions() unless defined($suppressions); |
|||
for my $s (@$suppressions) { |
|||
my ($file_re, $msg_re, $start, $end)= @$s; |
|||
if ($file =~ /$file_re/ && |
|||
$msg =~ /$msg_re/ && |
|||
(!defined($start) || $start <= $lineno) && |
|||
(!defined($end) || $end >= $lineno)) { |
|||
return 1; |
|||
} |
|||
} |
|||
return undef; |
|||
} |
|||
|
|||
sub load_suppressions { |
|||
# First find the suppressions file, might be we need to move up to |
|||
# the base directory. |
|||
my $path = "support-files/compiler_warnings.supp"; |
|||
my $exists; |
|||
for (1..10) { |
|||
$exists= -f $path; |
|||
last if $exists; |
|||
$path= '../'. $path; |
|||
} |
|||
die "Error: Could not find suppression file (out of source dir?).\n" |
|||
unless $exists; |
|||
|
|||
$suppressions= []; |
|||
open "F", "<", $path |
|||
or die "Error: Could not read suppression file '$path': $!\n"; |
|||
while (<F>) { |
|||
# Skip comment and empty lines. |
|||
next if /^\s*(\#.*)?$/; |
|||
die "Invalid syntax in suppression file '$path', line $.:\n$_" |
|||
unless /^\s*(.+?)\s*:\s*(.+?)\s*(?:[:]\s*([0-9]+)(?:-([0-9]+))?\s*)?$/; |
|||
my ($file_re, $line_re, $start, $end)= ($1, $2, $3, $4); |
|||
$end = $start |
|||
if defined($start) && !defined($end); |
|||
push @$suppressions, [$file_re, $line_re, $start, $end]; |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue