mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Merge 5.5 into 10.1
This commit is contained in:
commit
cf40393471
7 changed files with 231 additions and 23 deletions
123
.clang-format
123
.clang-format
|
@ -1,18 +1,117 @@
|
||||||
SpaceBeforeAssignmentOperators: false
|
---
|
||||||
SpaceAfterCStyleCast: true
|
Language: Cpp
|
||||||
|
AccessModifierOffset: -2
|
||||||
BreakBeforeBraces: Custom
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignEscapedNewlines: Right
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: true
|
||||||
|
AllowAllArgumentsOnNextLine: true
|
||||||
|
AllowAllConstructorInitializersOnNextLine: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: true
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: All
|
||||||
|
AllowShortLambdasOnASingleLine: All
|
||||||
|
AllowShortIfStatementsOnASingleLine: Never
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: MultiLine
|
||||||
|
BinPackArguments: true
|
||||||
|
BinPackParameters: true
|
||||||
BraceWrapping:
|
BraceWrapping:
|
||||||
AfterClass: true
|
AfterCaseLabel: true
|
||||||
|
AfterClass: true
|
||||||
AfterControlStatement: true
|
AfterControlStatement: true
|
||||||
AfterEnum: true
|
AfterEnum: true
|
||||||
AfterFunction: true
|
AfterFunction: true
|
||||||
AfterNamespace: true
|
AfterNamespace: true
|
||||||
AfterStruct: true
|
AfterStruct: true
|
||||||
AfterUnion: true
|
AfterUnion: true
|
||||||
AfterExternBlock: true
|
AfterExternBlock: true
|
||||||
BeforeCatch: true
|
BeforeCatch: true
|
||||||
BeforeElse: true
|
BeforeElse: true
|
||||||
|
IndentBraces: false
|
||||||
SplitEmptyFunction: true
|
SplitEmptyFunction: true
|
||||||
SplitEmptyRecord: true
|
SplitEmptyRecord: true
|
||||||
SplitEmptyNamespace: true
|
SplitEmptyNamespace: true
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeBraces: Custom
|
||||||
|
BreakBeforeInheritanceComma: false
|
||||||
|
BreakInheritanceList: BeforeColon
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: false
|
||||||
|
BreakConstructorInitializers: BeforeColon
|
||||||
|
BreakStringLiterals: true
|
||||||
|
ColumnLimit: 79
|
||||||
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
|
CompactNamespaces: false
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
ConstructorInitializerIndentWidth: 4
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
ExperimentalAutoDetectBinPacking: false
|
||||||
|
FixNamespaceComments: true
|
||||||
|
ForEachMacros:
|
||||||
|
- foreach
|
||||||
|
- Q_FOREACH
|
||||||
|
- BOOST_FOREACH
|
||||||
|
IncludeBlocks: Preserve
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||||
|
Priority: 2
|
||||||
|
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||||
|
Priority: 3
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
IncludeIsMainRegex: '(Test)?$'
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentPPDirectives: None
|
||||||
|
IndentWidth: 2
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||||
|
Language: Cpp
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: None
|
||||||
|
PenaltyBreakAssignment: 2
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 19
|
||||||
|
PenaltyBreakComment: 300
|
||||||
|
PenaltyBreakFirstLessLess: 120
|
||||||
|
PenaltyBreakString: 1000
|
||||||
|
PenaltyBreakTemplateDeclaration: 10
|
||||||
|
PenaltyExcessCharacter: 1000000
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
PointerAlignment: Right
|
||||||
|
ReflowComments: true
|
||||||
|
SortIncludes: true
|
||||||
|
SortUsingDeclarations: true
|
||||||
|
SpaceAfterCStyleCast: true
|
||||||
|
SpaceAfterLogicalNot: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: false
|
||||||
|
SpaceBeforeCpp11BracedList: false
|
||||||
|
SpaceBeforeCtorInitializerColon: true
|
||||||
|
SpaceBeforeInheritanceColon: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceBeforeRangeBasedForLoopColon: true
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: true
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: Cpp11
|
||||||
|
StatementMacros:
|
||||||
|
- Q_UNUSED
|
||||||
|
- QT_REQUIRE_VERSION
|
||||||
|
TabWidth: 8
|
||||||
|
UseTab: Never
|
||||||
|
...
|
||||||
|
|
|
@ -36,6 +36,21 @@ use POSIX qw[ _exit ];
|
||||||
use IO::Handle qw[ flush ];
|
use IO::Handle qw[ flush ];
|
||||||
use mtr_results;
|
use mtr_results;
|
||||||
|
|
||||||
|
use Term::ANSIColor;
|
||||||
|
|
||||||
|
my %color_map = qw/pass green
|
||||||
|
retry-pass green
|
||||||
|
fail red
|
||||||
|
retry-fail red
|
||||||
|
disabled bright_black
|
||||||
|
skipped yellow
|
||||||
|
reset reset/;
|
||||||
|
sub xterm_color {
|
||||||
|
if (-t STDOUT and defined $ENV{TERM} and $ENV{TERM} =~ /xterm/) {
|
||||||
|
syswrite STDOUT, color($color_map{$_[0]});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $tot_real_time= 0;
|
my $tot_real_time= 0;
|
||||||
|
|
||||||
our $timestamp= 0;
|
our $timestamp= 0;
|
||||||
|
@ -498,7 +513,16 @@ sub mtr_print (@) {
|
||||||
sub mtr_report (@) {
|
sub mtr_report (@) {
|
||||||
if (defined $verbose)
|
if (defined $verbose)
|
||||||
{
|
{
|
||||||
print _name(). join(" ", @_). "\n";
|
my @s = split /\[ (\S+) \]/, _name() . "@_\n";
|
||||||
|
if (@s > 1) {
|
||||||
|
print $s[0];
|
||||||
|
xterm_color($s[1]);
|
||||||
|
print "[ $s[1] ]";
|
||||||
|
xterm_color('reset');
|
||||||
|
print $s[2];
|
||||||
|
} else {
|
||||||
|
print $s[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2512,6 +2512,40 @@ WHERE tb1.pk = 40
|
||||||
ORDER BY tb1.i1;
|
ORDER BY tb1.i1;
|
||||||
v2
|
v2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-19790 : IS NOT TRUE / IS NOT FALSE predicates over
|
||||||
|
# inner tables of outer joins
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
create table t2 (b int);
|
||||||
|
insert into t1 values (3), (7), (1);
|
||||||
|
insert into t2 values (7), (4), (3);
|
||||||
|
select * from t1 left join t2 on a=b;
|
||||||
|
a b
|
||||||
|
3 3
|
||||||
|
7 7
|
||||||
|
1 NULL
|
||||||
|
select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||||
|
a b
|
||||||
|
3 3
|
||||||
|
1 NULL
|
||||||
|
explain extended select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on((`test`.`t2`.`b` = `test`.`t1`.`a`)) where ((`test`.`t2`.`b` > 3) is not true)
|
||||||
|
select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||||
|
a b
|
||||||
|
7 7
|
||||||
|
1 NULL
|
||||||
|
explain extended select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on((`test`.`t2`.`b` = `test`.`t1`.`a`)) where ((`test`.`t2`.`b` > 3) is not false)
|
||||||
|
drop table t1,t2;
|
||||||
# end of 5.5 tests
|
# end of 5.5 tests
|
||||||
#
|
#
|
||||||
# MDEV-19258: chained right joins all converted to inner joins
|
# MDEV-19258: chained right joins all converted to inner joins
|
||||||
|
|
|
@ -2523,6 +2523,40 @@ WHERE tb1.pk = 40
|
||||||
ORDER BY tb1.i1;
|
ORDER BY tb1.i1;
|
||||||
v2
|
v2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-19790 : IS NOT TRUE / IS NOT FALSE predicates over
|
||||||
|
# inner tables of outer joins
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
create table t2 (b int);
|
||||||
|
insert into t1 values (3), (7), (1);
|
||||||
|
insert into t2 values (7), (4), (3);
|
||||||
|
select * from t1 left join t2 on a=b;
|
||||||
|
a b
|
||||||
|
7 7
|
||||||
|
3 3
|
||||||
|
1 NULL
|
||||||
|
select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||||
|
a b
|
||||||
|
3 3
|
||||||
|
1 NULL
|
||||||
|
explain extended select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on((`test`.`t2`.`b` = `test`.`t1`.`a`)) where ((`test`.`t2`.`b` > 3) is not true)
|
||||||
|
select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||||
|
a b
|
||||||
|
7 7
|
||||||
|
1 NULL
|
||||||
|
explain extended select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on((`test`.`t2`.`b` = `test`.`t1`.`a`)) where ((`test`.`t2`.`b` > 3) is not false)
|
||||||
|
drop table t1,t2;
|
||||||
# end of 5.5 tests
|
# end of 5.5 tests
|
||||||
#
|
#
|
||||||
# MDEV-19258: chained right joins all converted to inner joins
|
# MDEV-19258: chained right joins all converted to inner joins
|
||||||
|
|
|
@ -2040,6 +2040,29 @@ ORDER BY tb1.i1;
|
||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-19790 : IS NOT TRUE / IS NOT FALSE predicates over
|
||||||
|
--echo # inner tables of outer joins
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
create table t1 (a int);
|
||||||
|
create table t2 (b int);
|
||||||
|
insert into t1 values (3), (7), (1);
|
||||||
|
insert into t2 values (7), (4), (3);
|
||||||
|
select * from t1 left join t2 on a=b;
|
||||||
|
|
||||||
|
let $q=
|
||||||
|
select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||||
|
eval $q;
|
||||||
|
eval explain extended $q;
|
||||||
|
|
||||||
|
let $q=
|
||||||
|
select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||||
|
eval $q;
|
||||||
|
eval explain extended $q;
|
||||||
|
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
--echo # end of 5.5 tests
|
--echo # end of 5.5 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
|
|
@ -257,6 +257,8 @@ public:
|
||||||
Item_func_truth(thd, a, true, false) {}
|
Item_func_truth(thd, a, true, false) {}
|
||||||
~Item_func_isnottrue() {}
|
~Item_func_isnottrue() {}
|
||||||
virtual const char* func_name() const { return "isnottrue"; }
|
virtual const char* func_name() const { return "isnottrue"; }
|
||||||
|
bool eval_not_null_tables(uchar *opt_arg)
|
||||||
|
{ not_null_tables_cache= 0; return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -284,6 +286,8 @@ public:
|
||||||
Item_func_truth(thd, a, false, false) {}
|
Item_func_truth(thd, a, false, false) {}
|
||||||
~Item_func_isnotfalse() {}
|
~Item_func_isnotfalse() {}
|
||||||
virtual const char* func_name() const { return "isnotfalse"; }
|
virtual const char* func_name() const { return "isnotfalse"; }
|
||||||
|
bool eval_not_null_tables(uchar *opt_arg)
|
||||||
|
{ not_null_tables_cache= 0; return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
UseTab: Always
|
|
||||||
TabWidth: 8
|
|
||||||
IndentWidth: 8
|
|
||||||
BreakBeforeBinaryOperators: All
|
|
||||||
PointerAlignment: Left
|
|
||||||
AlwaysBreakAfterReturnType: TopLevel
|
|
||||||
BreakBeforeBraces: Custom
|
|
||||||
BraceWrapping:
|
|
||||||
AfterFunction: true
|
|
||||||
AccessModifierOffset: -8
|
|
Loading…
Reference in a new issue