mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
d324c03d0c
Dead code cleanup: part_info->num_parts usage was wrong and working incorrectly in mysql_drop_partitions() because num_parts is already updated in prep_alter_part_table(). We don't have to update part_info->partitions because part_info is destroyed at alter_partition_lock_handling(). Cleanups: - DBUG_EVALUATE_IF() macro replaced by shorter form DBUG_IF(); - Typo in ER_KEY_COLUMN_DOES_NOT_EXITS. Refactorings: - Splitted write_log_replace_delete_frm() into write_log_delete_frm() and write_log_replace_frm(); - partition_info via DDL_LOG_STATE; - set_part_info_exec_log_entry() removed. DBUG_EVALUATE removed DBUG_EVALUTATE was only added for consistency together with DBUG_EVALUATE_IF. It is not used anywhere in the code. DBUG_SUICIDE() fix on release build On release DBUG_SUICIDE() was statement. It was wrong as DBUG_SUICIDE() is used in expression context.
456 lines
8.6 KiB
Prolog
Executable file
456 lines
8.6 KiB
Prolog
Executable file
#!/usr/bin/env perl
|
|
|
|
#
|
|
# A driver program to test DBUG features - runs tests (shell commands)
|
|
# from the end of file to invoke tests.c, which does the real dbug work.
|
|
#
|
|
|
|
use Test::More;
|
|
|
|
$exe=$0;
|
|
$exe =~ s@[^/]+$@tests@;
|
|
|
|
die unless -x $exe;
|
|
|
|
# load tests
|
|
@tests=();
|
|
while (<DATA>) {
|
|
if (/^% \.\/tests /) {
|
|
push @tests, [ $' ]
|
|
} elsif (/^#/) {
|
|
next;
|
|
} else {
|
|
push @{$tests[$#tests]}, $_
|
|
}
|
|
}
|
|
|
|
plan skip_all => "because dbug is disabled" if system $exe;
|
|
|
|
plan tests => scalar(@tests);
|
|
|
|
for (@tests) {
|
|
$t=$exe . ' ' . shift @$_;
|
|
chomp($t);
|
|
open F, '-|', $t or die "open($t|): $!";
|
|
local $";
|
|
$out=join($", <F>); close(F);
|
|
# special cases are handled here:
|
|
$out =~ s/Memory: 0x[0-9A-Fa-f]+/Memory: 0x####/g if $t =~ /dump/;
|
|
# compare ("\n" at the beginning makes better output in case of errors)
|
|
is("\n$out","\n@$_", $t);
|
|
}
|
|
|
|
__DATA__
|
|
% ./tests -#d
|
|
func2: info: s=ok
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
main: explain: dbug explained: d
|
|
func2: info: s=ok
|
|
% ./tests d,ret3
|
|
=> evaluate_if: OFF
|
|
#
|
|
## Testing negative lists
|
|
#
|
|
% ./tests d:-d,ret3
|
|
func2: info: s=ko
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
main: explain: dbug explained: d:-d,ret3
|
|
func2: info: s=ko
|
|
% ./tests t:-d,ret3
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| <func2
|
|
<main
|
|
% ./tests t:d,info:-d,ret3
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | | info: s=ko
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| | info: s=ko
|
|
| <func2
|
|
<main
|
|
% ./tests t:d,info:-d,ret3:-f,func2
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
% ./tests t:d,info:-d,ret3:-f,func2 d,evaluate
|
|
=> evaluate_if: OFF
|
|
% ./tests t:d,info:-d,ret3:-f,func2 d,evaluate_if
|
|
=> evaluate_if: ON
|
|
% ./tests t:d:-d,ret3:-f,func2 d,evaluate_if
|
|
=> evaluate_if: ON
|
|
% ./tests t:d:-d,ret3:-f,func2
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
| explain: dbug explained: d:-d,ret3:f:-f,func2:t
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
#
|
|
## Adding incremental settings to the brew
|
|
#
|
|
% ./tests t:d:-d,ret3:-f,func2 +d,evaluate_if
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
=> evaluate_if: ON
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
#
|
|
## DBUG_DUMP
|
|
#
|
|
% ./tests t:d:-d,ret3:f:-f,func2 +d,dump
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
| dump: Memory: 0x#### Bytes: (27)
|
|
64 2C 64 75 6D 70 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D 66 2C 66 75 6E 63 32 3A
|
|
74
|
|
=> evaluate_if: OFF
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
% ./tests t:d:-d,ret3:f:-f,func2 +d,dump
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
| dump: Memory: 0x#### Bytes: (27)
|
|
64 2C 64 75 6D 70 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D 66 2C 66 75 6E 63 32 3A
|
|
74
|
|
=> evaluate_if: OFF
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
% ./tests t:d:-d,ret3:f:-f,func2:+d,dump
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
| dump: Memory: 0x#### Bytes: (27)
|
|
64 2C 64 75 6D 70 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D 66 2C 66 75 6E 63 32 3A
|
|
74
|
|
=> evaluate_if: OFF
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
% ./tests t:d:-d,ret3:f:-f,func2 +d,dump,explain
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
| dump: Memory: 0x#### Bytes: (35)
|
|
64 2C 64 75 6D 70 2C 65 78 70 6C 61 69 6E 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D
|
|
66 2C 66 75 6E 63 32 3A 74
|
|
=> evaluate_if: OFF
|
|
| explain: dbug explained: d,dump,explain:-d,ret3:f:-f,func2:t
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
% ./tests t:d:-d,ret3:f:-f,func2 +d,dump,explain:P
|
|
dbug-tests: >main
|
|
dbug-tests: | >func1
|
|
dbug-tests: | | | >func3
|
|
dbug-tests: | | | <func3
|
|
dbug-tests: | <func1
|
|
dbug-tests: | dump: Memory: 0x#### Bytes: (37)
|
|
64 2C 64 75 6D 70 2C 65 78 70 6C 61 69 6E 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D
|
|
66 2C 66 75 6E 63 32 3A 50 3A 74
|
|
=> evaluate_if: OFF
|
|
dbug-tests: | explain: dbug explained: d,dump,explain:-d,ret3:f:-f,func2:P:t
|
|
dbug-tests: | | >func3
|
|
dbug-tests: | | <func3
|
|
dbug-tests: <main
|
|
% ./tests t:d:-d,ret3:f:-f,func2 +d,dump,explain:P:F
|
|
dbug-tests: tests.c: >main
|
|
dbug-tests: tests.c: | >func1
|
|
dbug-tests: tests.c: | | | >func3
|
|
dbug-tests: tests.c: | | | <func3
|
|
dbug-tests: tests.c: | <func1
|
|
dbug-tests: tests.c: | dump: Memory: 0x#### Bytes: (39)
|
|
64 2C 64 75 6D 70 2C 65 78 70 6C 61 69 6E 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D
|
|
66 2C 66 75 6E 63 32 3A 46 3A 50 3A 74
|
|
=> evaluate_if: OFF
|
|
dbug-tests: tests.c: | explain: dbug explained: d,dump,explain:-d,ret3:f:-f,func2:F:P:t
|
|
dbug-tests: tests.c: | | >func3
|
|
dbug-tests: tests.c: | | <func3
|
|
dbug-tests: tests.c: <main
|
|
#
|
|
## DBUG_EXPLAIN, DBUG_PUSH, DBUG_POP, DBUG_SET
|
|
#
|
|
% ./tests t:d:-d,ret3:f:-f,func2
|
|
>main
|
|
| >func1
|
|
| | | >func3
|
|
| | | <func3
|
|
| <func1
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
| explain: dbug explained: d:-d,ret3:f:-f,func2:t
|
|
| | >func3
|
|
| | <func3
|
|
<main
|
|
% ./tests t:d:-d,ret3
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | | info: s=ko
|
|
| | <func2
|
|
| <func1
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
| explain: dbug explained: d:-d,ret3:t
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| | info: s=ko
|
|
| <func2
|
|
<main
|
|
% ./tests d,info:-d,ret3:d,push
|
|
func2: info: s=ko
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| | info: s=ko
|
|
| <func2
|
|
<main
|
|
% ./tests d,info:-d,ret3:d,push,explain
|
|
func2: info: s=ko
|
|
=> evaluate_if: OFF
|
|
| explain: dbug explained: d,info,push,explain:-d,ret3:t
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| | info: s=ko
|
|
| <func2
|
|
<main
|
|
% ./tests d,info:-d,ret3:d,explain
|
|
func2: info: s=ko
|
|
=> evaluate_if: OFF
|
|
main: explain: dbug explained: d,info,explain:-d,ret3
|
|
func2: info: s=ko
|
|
% ./tests d,info:-d,ret3:d,explain,pop
|
|
func2: info: s=ko
|
|
=> evaluate_if: OFF
|
|
% ./tests d,info:-d,ret3:d,explain t:d,pop
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
main: explain: dbug explained: d,info,explain:-d,ret3
|
|
func2: info: s=ko
|
|
% ./tests d,info:-d,ret3:d,explain,pop +t
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | | info: s=ko
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
main: explain: dbug explained: d,info,explain,pop:-d,ret3
|
|
func2: info: s=ko
|
|
% ./tests d,info:-d,ret3:d,explain,set
|
|
func2: info: s=ko
|
|
=> evaluate_if: OFF
|
|
tests.c: main: explain: dbug explained: d,info,explain,set:-d,ret3:F
|
|
tests.c: func2: info: s=ko
|
|
% ./tests d,info:-d,ret3:d,explain,set:t
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | | info: s=ko
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
tests.c: | explain: dbug explained: d,info,explain,set:-d,ret3:F:t
|
|
tests.c: | >func2
|
|
tests.c: | | >func3
|
|
tests.c: | | <func3
|
|
tests.c: | | info: s=ko
|
|
tests.c: | <func2
|
|
tests.c: <main
|
|
% ./tests t d,info:-d,ret3:d,explain,set:t
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | | info: s=ko
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
tests.c: | explain: dbug explained: d,info,explain,set:-d,ret3:F:t
|
|
tests.c: | >func2
|
|
tests.c: | | >func3
|
|
tests.c: | | <func3
|
|
tests.c: | | info: s=ko
|
|
tests.c: | <func2
|
|
tests.c: <main
|
|
% ./tests t d,info:-d,ret3:d,explain,set,pop
|
|
func2: info: s=ko
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| <func2
|
|
<main
|
|
% ./tests t:f,func2
|
|
| | >func2
|
|
| | <func2
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| <func2
|
|
#
|
|
## Testing SUBDIR rules
|
|
#
|
|
% ./tests t:-f,func2/:d
|
|
>main
|
|
| >func1
|
|
| <func1
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
| explain: dbug explained: d:f:-f,func2/:t
|
|
<main
|
|
% ./tests t:f,func1/:d
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | | info: s=ok
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
% ./tests t:f,main/:d,pop
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | <func2
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
% ./tests f,main/:d,push
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| <func2
|
|
<main
|
|
#
|
|
## Testing FixTraceFlags() - when we need to traverse the call stack
|
|
# (these tests fail with FixTraceFlags() disabled)
|
|
#
|
|
# delete the INCLUDE rule up the stack
|
|
% ./tests t:f,func1/ --push1=t:f,func3/
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | <func2
|
|
=> push1
|
|
=> evaluate_if: OFF
|
|
| | >func3
|
|
| | <func3
|
|
# delete the EXCLUDE rule up the stack
|
|
% ./tests t:-f,func1/ --push1=t
|
|
>main
|
|
=> push1
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| <func2
|
|
<main
|
|
# add the INCLUDE rule up the stack
|
|
% ./tests t:f,func3 --push1=t:f,main/
|
|
| | | >func3
|
|
| | | <func3
|
|
=> push1
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| <func2
|
|
<main
|
|
# add the EXCLUDE rule up the stack
|
|
% ./tests t --push1=t:-f,main/
|
|
>main
|
|
| >func1
|
|
| | >func2
|
|
| | | >func3
|
|
| | | <func3
|
|
| | <func2
|
|
=> push1
|
|
=> evaluate_if: OFF
|
|
# change the defaults
|
|
% ./tests t:f,func3 --push1=t
|
|
| | | >func3
|
|
| | | <func3
|
|
=> push1
|
|
| <func1
|
|
=> evaluate_if: OFF
|
|
| >func2
|
|
| | >func3
|
|
| | <func3
|
|
| <func2
|
|
<main
|
|
# repeated keyword
|
|
% ./tests d:-d,info,info
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
main: explain: dbug explained: d:-d,info
|
|
% ./tests d:-d,info/,info
|
|
=> execute
|
|
=> evaluate_if: OFF
|
|
main: explain: dbug explained: d:-d,info/
|