mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 d324c03d0c
			
		
	
	
	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/
 |