From 190717dbcca78b7869352191d3d0a4e7d03562bb Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Mon, 5 Sep 2022 21:59:58 +0800 Subject: [PATCH] [enhancement](chore)add single space separator rule to fe check style (#12354) Some times, our code use more than one space as separator by mistake. This PR add a CheckStyle rule SingleSpaceSeparator to check that for Nereids. --- fe/check/checkstyle/checkstyle.xml | 1 + fe/check/checkstyle/suppressions.xml | 1 + .../doris/nereids/analyzer/UnboundFunction.java | 4 ++-- .../glue/translator/ExpressionTranslator.java | 2 +- .../glue/translator/PhysicalPlanTranslator.java | 2 +- .../generator/LogicalLeafPatternGenerator.java | 2 +- .../pattern/generator/PatternGenerator.java | 2 +- .../rewrite/rules/SimplifyNotExprRule.java | 6 +++--- .../rewrite/logical/MergeConsecutiveFilters.java | 2 +- .../trees/expressions/functions/WeekOfYear.java | 2 +- .../org/apache/doris/nereids/util/JoinUtils.java | 2 +- .../rewrite/ExpressionRewriteTest.java | 16 ++++++++-------- .../nereids/util/AnalyzeWhereSubqueryTest.java | 4 ++-- 13 files changed, 24 insertions(+), 22 deletions(-) diff --git a/fe/check/checkstyle/checkstyle.xml b/fe/check/checkstyle/checkstyle.xml index 77a56d1d5f..e10b841615 100644 --- a/fe/check/checkstyle/checkstyle.xml +++ b/fe/check/checkstyle/checkstyle.xml @@ -391,6 +391,7 @@ under the License. + + diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java index 66f07e5928..8ea8436c33 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java @@ -64,13 +64,13 @@ public class UnboundFunction extends Expression implements Unbound { String params = children.stream() .map(Expression::toSql) .collect(Collectors.joining(", ")); - return name + "(" + (isDistinct ? "DISTINCT " : "") + params + ")"; + return name + "(" + (isDistinct ? "DISTINCT " : "") + params + ")"; } @Override public String toString() { String params = Joiner.on(", ").join(children); - return "'" + name + "(" + (isDistinct ? "DISTINCT " : "") + params + ")"; + return "'" + name + "(" + (isDistinct ? "DISTINCT " : "") + params + ")"; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java index ebfb969758..c18611aea5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java @@ -265,7 +265,7 @@ public class ExpressionTranslator extends DefaultExpressionVisitor"; + return "<" + opType.name + ">"; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/pattern/generator/PatternGenerator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/pattern/generator/PatternGenerator.java index 8976f9b388..69d34b967d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/pattern/generator/PatternGenerator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/pattern/generator/PatternGenerator.java @@ -275,7 +275,7 @@ public abstract class PatternGenerator { childrenPattern = ", " + childrenPattern; } - String pattern = "default " + methodGeneric + "\n" + String pattern = "default " + methodGeneric + "\n" + "PatternDescriptor" + genericParam + "\n" + " " + patterName + "(" + methodParam + ") {\n" + " return new PatternDescriptor" + genericParam + "(\n" diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/SimplifyNotExprRule.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/SimplifyNotExprRule.java index 6f797e09b7..c47ae7c17b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/SimplifyNotExprRule.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/SimplifyNotExprRule.java @@ -51,7 +51,7 @@ public class SimplifyNotExprRule extends AbstractExpressionRewriteRule { Expression child = not.child(); if (child instanceof ComparisonPredicate) { ComparisonPredicate cp = (ComparisonPredicate) not.child(); - Expression left = rewrite(cp.left(), context); + Expression left = rewrite(cp.left(), context); Expression right = rewrite(cp.right(), context); // TODO: visit concrete class instead of `instanceof`. @@ -59,7 +59,7 @@ public class SimplifyNotExprRule extends AbstractExpressionRewriteRule { return new LessThanEqual(left, right); } else if (child instanceof GreaterThanEqual) { return new LessThan(left, right); - } else if (child instanceof LessThan) { + } else if (child instanceof LessThan) { return new GreaterThanEqual(left, right); } else if (child instanceof LessThanEqual) { return new GreaterThan(left, right); @@ -68,7 +68,7 @@ public class SimplifyNotExprRule extends AbstractExpressionRewriteRule { } } else if (child instanceof CompoundPredicate) { CompoundPredicate cp = (CompoundPredicate) not.child(); - Expression left = rewrite(new Not(cp.left()), context); + Expression left = rewrite(new Not(cp.left()), context); Expression right = rewrite(new Not(cp.right()), context); return cp.flip(left, right); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeConsecutiveFilters.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeConsecutiveFilters.java index 4398f149cc..6ed9c3fd1d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeConsecutiveFilters.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeConsecutiveFilters.java @@ -42,7 +42,7 @@ import org.apache.doris.nereids.util.ExpressionUtils; * | * scan */ -public class MergeConsecutiveFilters extends OneRewriteRuleFactory { +public class MergeConsecutiveFilters extends OneRewriteRuleFactory { @Override public Rule build() { return logicalFilter(logicalFilter()).then(filter -> { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/WeekOfYear.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/WeekOfYear.java index 6f4dc44548..acdd92e6f4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/WeekOfYear.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/WeekOfYear.java @@ -34,7 +34,7 @@ import java.util.List; /** * weekOfYear function */ -public class WeekOfYear extends BoundFunction implements UnaryExpression, ImplicitCastInputTypes { +public class WeekOfYear extends BoundFunction implements UnaryExpression, ImplicitCastInputTypes { private static final List EXPECTED_INPUT_TYPES = ImmutableList.of( new TypeCollection(DateTimeType.INSTANCE) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java index 2c1ded556a..75d04a6db7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java @@ -102,7 +102,7 @@ public class JoinUtils { * @return true if the equal can be used as hash join condition */ boolean isHashJoinCondition(EqualTo equalTo) { - List equalLeft = equalTo.left().collect(SlotReference.class::isInstance); + List equalLeft = equalTo.left().collect(SlotReference.class::isInstance); if (equalLeft.isEmpty()) { return false; } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewriteTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewriteTest.java index 79e8903e3c..48f197df86 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewriteTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewriteTest.java @@ -121,17 +121,17 @@ public class ExpressionRewriteTest { assertRewrite("(a and b) or ((d and c) and (d and e))", "(a and b) or (d and c and e)"); assertRewrite("(a or b) and ((d or c) or (d or e))", "(a or b) and (d or c or e)"); - assertRewrite("(a and b) or (a and b and c)", "a and b"); - assertRewrite("(a or b) and (a or b or c)", "a or b"); + assertRewrite("(a and b) or (a and b and c)", "a and b"); + assertRewrite("(a or b) and (a or b or c)", "a or b"); - assertRewrite("a and true", "a"); - assertRewrite("a or false", "a"); + assertRewrite("a and true", "a"); + assertRewrite("a or false", "a"); - assertRewrite("a and false", "false"); - assertRewrite("a or true", "true"); + assertRewrite("a and false", "false"); + assertRewrite("a or true", "true"); - assertRewrite("a or false or false or false", "a"); - assertRewrite("a and true and true and true", "a"); + assertRewrite("a or false or false or false", "a"); + assertRewrite("a and true and true and true", "a"); assertRewrite("(a and b) or a ", "a"); assertRewrite("(a or b) and a ", "a"); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/AnalyzeWhereSubqueryTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/AnalyzeWhereSubqueryTest.java index ba90de7c94..9d8a8bbc81 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/AnalyzeWhereSubqueryTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/AnalyzeWhereSubqueryTest.java @@ -362,7 +362,7 @@ public class AnalyzeWhereSubqueryTest extends TestWithFeService implements Patte ImmutableList.of("default_cluster:test", "t7")), "aa") ))) ).when(FieldChecker.check("outputExpressions", ImmutableList.of( - new Alias(new ExprId(8), new Max(new SlotReference(new ExprId(0), "aa", BigIntType.INSTANCE, true, + new Alias(new ExprId(8), new Max(new SlotReference(new ExprId(0), "aa", BigIntType.INSTANCE, true, ImmutableList.of("t2"))), "max(aa)") ))) .when(FieldChecker.check("groupByExpressions", ImmutableList.of())) @@ -414,7 +414,7 @@ public class AnalyzeWhereSubqueryTest extends TestWithFeService implements Patte logicalAggregate( logicalProject() ).when(FieldChecker.check("outputExpressions", ImmutableList.of( - new Alias(new ExprId(8), new Max(new SlotReference(new ExprId(0), "aa", BigIntType.INSTANCE, true, + new Alias(new ExprId(8), new Max(new SlotReference(new ExprId(0), "aa", BigIntType.INSTANCE, true, ImmutableList.of("t2"))), "max(aa)"), new SlotReference(new ExprId(7), "v2", BigIntType.INSTANCE, true, ImmutableList.of("default_cluster:test", "t7")))))