This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
from 601d9af23b [fix](planner) disconjunct in sub-query failed when plan it on hash join (#15653) add 025623a124 [feature](Nereids) Support lots of aggregate functions (#15671) No new revisions were added by this update. Summary of changes: .../antlr4/org/apache/doris/nereids/DorisParser.g4 | 2 +- .../apache/doris/analysis/FunctionCallExpr.java | 30 +- .../doris/catalog/BuiltinAggregateFunctions.java | 86 +++- .../doris/catalog/BuiltinScalarFunctions.java | 103 ++++- .../org/apache/doris/catalog/FunctionHelper.java | 2 - .../apache/doris/catalog/FunctionSignature.java | 57 ++- .../glue/translator/ExpressionTranslator.java | 91 +++- .../doris/nereids/jobs/batch/AnalyzeRulesJob.java | 12 +- .../doris/nereids/jobs/batch/BatchRulesJob.java | 9 + .../batch/CheckLegalityAfterRewrite.java} | 22 +- ...b.java => CheckLegalityBeforeTypeCoercion.java} | 30 +- .../jobs/batch/NereidsRewriteJobExecutor.java | 6 +- .../doris/nereids/jobs/batch/TypeCoercionJob.java | 5 + .../doris/nereids/parser/LogicalPlanBuilder.java | 25 ++ .../apache/doris/nereids/properties/OrderKey.java | 6 +- .../AdjustAggregateNullableForEmptySet.java | 8 +- .../doris/nereids/rules/analysis/BindFunction.java | 2 + .../nereids/rules/analysis/BindSlotReference.java | 2 +- .../nereids/rules/analysis/CheckAfterRewrite.java | 7 +- .../nereids/rules/analysis/FillUpMissingSlots.java | 3 +- .../nereids/rules/analysis/NormalizeRepeat.java | 11 +- .../rewrite/ExpressionNormalization.java | 4 +- .../rules/CharacterLiteralTypeCoercion.java | 3 + .../rewrite/rules/FoldConstantRuleOnFE.java | 31 +- .../rewrite/rules/SupportJavaDateFormatter.java | 87 ++++ .../expression/rewrite/rules/TypeCoercion.java | 7 +- .../rewrite/logical/CountDistinctRewrite.java | 4 +- .../rules/rewrite/logical/NormalizeAggregate.java | 9 +- .../doris/nereids/trees/expressions/Cast.java | 4 +- .../doris/nereids/trees/expressions/Divide.java | 2 +- .../{Cast.java => OrderExpression.java} | 63 +-- .../functions/BitmapIntersectFunction.java | 45 ++ .../trees/expressions/functions/BoundFunction.java | 151 +------ ...ricTypeArguments.java => ComputePrecision.java} | 11 +- .../functions/ComputePrecisionForRound.java | 56 +++ ...eArguments.java => ComputePrecisionForSum.java} | 23 +- .../expressions/functions/ComputeSignature.java | 37 +- .../functions/ComputeSignatureHelper.java | 178 ++++++++ .../functions/DateTimeWithPrecision.java | 2 +- .../functions/ExplicitlyCastableSignature.java | 16 +- .../expressions/functions/ExpressionTrait.java | 13 + .../expressions/functions/IdenticalSignature.java | 10 +- .../functions/ImplicitlyCastableSignature.java | 24 +- .../functions/NullOrIdenticalSignature.java | 12 +- .../functions/agg/AggregateFunction.java | 41 +- .../trees/expressions/functions/agg/AnyValue.java | 52 +-- .../functions/agg/ApproxCountDistinct.java | 76 ---- .../trees/expressions/functions/agg/Avg.java | 112 +++-- .../agg/{VarianceSamp.java => AvgWeighted.java} | 66 ++- .../BitmapFunction.java} | 22 +- .../expressions/functions/agg/BitmapIntersect.java | 35 +- .../expressions/functions/agg/BitmapUnion.java | 35 +- .../functions/agg/BitmapUnionCount.java | 39 +- .../expressions/functions/agg/BitmapUnionInt.java | 45 +- .../expressions/functions/agg/CollectList.java | 110 +++++ .../expressions/functions/agg/CollectSet.java | 110 +++++ .../trees/expressions/functions/agg/Count.java | 69 +-- .../expressions/functions/agg/GroupBitAnd.java | 52 ++- .../expressions/functions/agg/GroupBitOr.java | 46 +- .../expressions/functions/agg/GroupBitXor.java | 45 +- .../expressions/functions/agg/GroupBitmapXor.java | 45 +- .../expressions/functions/agg/GroupConcat.java | 141 +++++++ .../MoneyFormat.java => agg/Histogram.java} | 55 ++- .../HllFunction.java} | 20 +- .../trees/expressions/functions/agg/HllUnion.java | 39 +- .../expressions/functions/agg/HllUnionAgg.java | 39 +- .../{BitmapUnionCount.java => IntersectCount.java} | 56 ++- .../trees/expressions/functions/agg/Max.java | 35 +- .../{scalar/GetJsonDouble.java => agg/MaxBy.java} | 57 ++- .../trees/expressions/functions/agg/Min.java | 35 +- .../{scalar/GetJsonDouble.java => agg/MinBy.java} | 57 ++- .../functions/agg/MultiDistinctCount.java | 34 +- .../functions/agg/MultiDistinctSum.java | 32 +- .../trees/expressions/functions/agg/Ndv.java | 86 +--- .../functions/agg/NullableAggregateFunction.java | 26 +- ...mapUnion.java => OrthogonalBitmapFunction.java} | 48 +-- .../functions/agg/OrthogonalBitmapIntersect.java | 66 +++ .../agg/OrthogonalBitmapIntersectCount.java | 66 +++ .../OrthogonalBitmapUnionCount.java} | 31 +- .../BitmapAndNotCount.java => agg/Percentile.java} | 44 +- .../functions/agg/PercentileApprox.java | 110 +++++ .../PercentileArray.java} | 37 +- .../{scalar/Acos.java => agg/QuantileUnion.java} | 46 +- .../{scalar/Md5Sum.java => agg/Retention.java} | 59 ++- .../MinutesDiff.java => agg/SequenceCount.java} | 59 +-- .../functions/agg/SequenceFunction.java | 52 +++ .../Quarter.java => agg/SequenceMatch.java} | 55 ++- .../StdDevOrVarianceFunction.java} | 19 +- .../agg/{VarianceSamp.java => Stddev.java} | 56 +-- .../agg/{VarianceSamp.java => StddevSamp.java} | 58 +-- .../trees/expressions/functions/agg/Sum.java | 90 ++-- .../{scalar/Substring.java => agg/TopN.java} | 86 ++-- .../trees/expressions/functions/agg/TopNArray.java | 158 +++++++ .../expressions/functions/agg/TopNWeighted.java | 174 ++++++++ .../trees/expressions/functions/agg/Variance.java | 60 +-- .../expressions/functions/agg/VarianceSamp.java | 57 ++- .../expressions/functions/agg/WindowFunnel.java | 128 ++++++ .../trees/expressions/functions/scalar/Abs.java | 2 +- .../trees/expressions/functions/scalar/Acos.java | 2 +- .../functions/scalar/AesCryptoFunction.java | 75 ++++ .../expressions/functions/scalar/AesDecrypt.java | 34 +- .../expressions/functions/scalar/AesEncrypt.java | 37 +- .../scalar/AppendTrailingCharIfAbsent.java | 2 +- .../trees/expressions/functions/scalar/Array.java | 126 ++++++ .../functions/scalar/{Abs.java => ArrayAvg.java} | 45 +- .../expressions/functions/scalar/ArrayCompact.java | 98 +++++ .../scalar/{NullIf.java => ArrayContains.java} | 60 +-- .../scalar/{Abs.java => ArrayDifference.java} | 41 +- .../functions/scalar/ArrayDistinct.java | 99 +++++ .../functions/scalar/ArrayEnumerate.java | 97 +++++ .../expressions/functions/scalar/ArrayExcept.java | 111 +++++ .../functions/scalar/ArrayIntersect.java | 111 +++++ .../expressions/functions/scalar/ArrayJoin.java | 159 +++++++ .../scalar/{Greatest.java => ArrayMax.java} | 63 +-- .../scalar/{Greatest.java => ArrayMin.java} | 63 +-- .../scalar/{Abs.java => ArrayPopback.java} | 52 ++- .../scalar/{NullIf.java => ArrayPosition.java} | 57 +-- .../scalar/{Abs.java => ArrayProduct.java} | 45 +- .../scalar/{FromUnixtime.java => ArrayRange.java} | 48 ++- .../expressions/functions/scalar/ArrayRemove.java | 112 +++++ .../functions/scalar/{Ceil.java => ArraySize.java} | 24 +- .../expressions/functions/scalar/ArraySlice.java | 143 +++++++ .../expressions/functions/scalar/ArraySort.java | 100 +++++ .../functions/scalar/{Abs.java => ArraySum.java} | 45 +- .../expressions/functions/scalar/ArrayUnion.java | 111 +++++ .../scalar/{NullIf.java => ArrayWithConstant.java} | 60 ++- .../functions/scalar/ArraysOverlap.java | 111 +++++ .../trees/expressions/functions/scalar/Ascii.java | 2 +- .../trees/expressions/functions/scalar/Asin.java | 2 +- .../trees/expressions/functions/scalar/Atan.java | 2 +- .../trees/expressions/functions/scalar/Bin.java | 2 +- .../expressions/functions/scalar/BitLength.java | 2 +- .../expressions/functions/scalar/BitmapAnd.java | 2 +- .../functions/scalar/BitmapAndCount.java | 2 +- .../expressions/functions/scalar/BitmapAndNot.java | 2 +- .../functions/scalar/BitmapAndNotCount.java | 2 +- .../functions/scalar/BitmapContains.java | 2 +- .../expressions/functions/scalar/BitmapCount.java | 5 +- .../expressions/functions/scalar/BitmapEmpty.java | 2 +- .../{BitmapMax.java => BitmapFromArray.java} | 29 +- .../functions/scalar/BitmapFromString.java | 2 +- .../expressions/functions/scalar/BitmapHasAll.java | 2 +- .../expressions/functions/scalar/BitmapHasAny.java | 2 +- .../expressions/functions/scalar/BitmapHash.java | 2 +- .../expressions/functions/scalar/BitmapHash64.java | 2 +- .../expressions/functions/scalar/BitmapMax.java | 2 +- .../expressions/functions/scalar/BitmapMin.java | 2 +- .../expressions/functions/scalar/BitmapNot.java | 2 +- .../expressions/functions/scalar/BitmapOr.java | 2 +- .../functions/scalar/BitmapOrCount.java | 2 +- .../functions/scalar/BitmapSubsetInRange.java | 2 +- .../functions/scalar/BitmapSubsetLimit.java | 2 +- .../scalar/{Bin.java => BitmapToArray.java} | 25 +- .../functions/scalar/BitmapToString.java | 2 +- .../expressions/functions/scalar/BitmapXor.java | 2 +- .../functions/scalar/BitmapXorCount.java | 2 +- .../scalar/{Ceil.java => Cardinality.java} | 24 +- .../trees/expressions/functions/scalar/Cbrt.java | 2 +- .../trees/expressions/functions/scalar/Ceil.java | 5 +- .../expressions/functions/scalar/Ceiling.java | 2 +- .../expressions/functions/scalar/CharLength.java | 71 ---- .../functions/scalar/CharacterLength.java | 2 +- .../expressions/functions/scalar/Coalesce.java | 2 +- .../scalar/CompatibleTypeArrayFunction.java | 65 +++ .../trees/expressions/functions/scalar/Concat.java | 2 +- .../expressions/functions/scalar/ConcatWs.java | 13 +- .../trees/expressions/functions/scalar/Conv.java | 2 +- .../{ExtractUrlParameter.java => ConvertTo.java} | 29 +- .../expressions/functions/scalar/ConvertTz.java | 2 +- .../trees/expressions/functions/scalar/Cos.java | 2 +- .../scalar/{NullIf.java => CountEqual.java} | 57 +-- .../functions/scalar/CryptoFunction.java | 93 ++++ .../expressions/functions/scalar/CurrentDate.java | 2 +- .../expressions/functions/scalar/CurrentTime.java | 2 +- .../functions/scalar/CurrentTimestamp.java | 2 +- .../expressions/functions/scalar/Curtime.java | 2 +- .../trees/expressions/functions/scalar/Date.java | 2 +- .../expressions/functions/scalar/DateDiff.java | 2 +- .../expressions/functions/scalar/DateFormat.java | 2 +- .../expressions/functions/scalar/DateTrunc.java | 2 +- .../trees/expressions/functions/scalar/DateV2.java | 2 +- .../trees/expressions/functions/scalar/Day.java | 2 +- .../expressions/functions/scalar/DayCeil.java | 2 +- .../expressions/functions/scalar/DayFloor.java | 2 +- .../expressions/functions/scalar/DayName.java | 2 +- .../expressions/functions/scalar/DayOfMonth.java | 2 +- .../expressions/functions/scalar/DayOfWeek.java | 2 +- .../expressions/functions/scalar/DayOfYear.java | 2 +- .../expressions/functions/scalar/DaysDiff.java | 2 +- .../trees/expressions/functions/scalar/Dceil.java | 2 +- .../expressions/functions/scalar/Degrees.java | 2 +- .../trees/expressions/functions/scalar/Dexp.java | 2 +- .../trees/expressions/functions/scalar/Dfloor.java | 2 +- .../trees/expressions/functions/scalar/Dlog1.java | 2 +- .../trees/expressions/functions/scalar/Dlog10.java | 2 +- .../scalar/{ToBase64.java => Domain.java} | 24 +- .../scalar/{Trim.java => DomainWithoutWww.java} | 22 +- .../trees/expressions/functions/scalar/Dpow.java | 2 +- .../trees/expressions/functions/scalar/Dround.java | 5 +- .../trees/expressions/functions/scalar/Dsqrt.java | 2 +- .../trees/expressions/functions/scalar/E.java | 2 +- .../scalar/{NullIf.java => ElementAt.java} | 51 +-- .../scalar/{NullIf.java => ElementExtract.java} | 51 +-- .../expressions/functions/scalar/ElementSlice.java | 143 +++++++ .../trees/expressions/functions/scalar/Elt.java | 2 +- .../expressions/functions/scalar/EndsWith.java | 2 +- .../expressions/functions/scalar/EsQuery.java | 2 +- .../trees/expressions/functions/scalar/Exp.java | 2 +- .../functions/scalar/ExtractUrlParameter.java | 2 +- .../functions/scalar/{Greatest.java => Field.java} | 55 ++- .../expressions/functions/scalar/FindInSet.java | 2 +- .../trees/expressions/functions/scalar/Floor.java | 5 +- .../trees/expressions/functions/scalar/Fmod.java | 2 +- .../trees/expressions/functions/scalar/Fpow.java | 2 +- .../expressions/functions/scalar/FromBase64.java | 2 +- .../expressions/functions/scalar/FromDays.java | 2 +- .../expressions/functions/scalar/FromUnixtime.java | 2 +- .../functions/scalar/GetJsonDouble.java | 2 +- .../expressions/functions/scalar/GetJsonInt.java | 2 +- .../functions/scalar/GetJsonString.java | 2 +- .../expressions/functions/scalar/Greatest.java | 2 +- .../trees/expressions/functions/scalar/Hex.java | 2 +- .../functions/scalar/HllCardinality.java | 5 +- .../expressions/functions/scalar/HllEmpty.java | 2 +- .../expressions/functions/scalar/HllHash.java | 2 +- .../trees/expressions/functions/scalar/Hour.java | 2 +- .../expressions/functions/scalar/HourCeil.java | 2 +- .../expressions/functions/scalar/HourFloor.java | 2 +- .../expressions/functions/scalar/HoursDiff.java | 2 +- .../trees/expressions/functions/scalar/If.java | 102 ++++- .../expressions/functions/scalar/Initcap.java | 2 +- .../trees/expressions/functions/scalar/Instr.java | 2 +- .../expressions/functions/scalar/JsonArray.java | 2 +- .../expressions/functions/scalar/JsonObject.java | 12 +- .../expressions/functions/scalar/JsonQuote.java | 2 +- .../functions/scalar/JsonbExistsPath.java | 2 +- .../expressions/functions/scalar/JsonbExtract.java | 2 +- .../functions/scalar/JsonbExtractBigint.java | 2 +- .../functions/scalar/JsonbExtractBool.java | 2 +- .../functions/scalar/JsonbExtractDouble.java | 2 +- .../functions/scalar/JsonbExtractInt.java | 2 +- .../functions/scalar/JsonbExtractIsnull.java | 2 +- .../functions/scalar/JsonbExtractString.java | 2 +- .../expressions/functions/scalar/JsonbParse.java | 2 +- .../functions/scalar/JsonbParseErrorToInvalid.java | 2 +- .../functions/scalar/JsonbParseErrorToNull.java | 2 +- .../functions/scalar/JsonbParseErrorToValue.java | 2 +- .../functions/scalar/JsonbParseNotnull.java | 2 +- .../scalar/JsonbParseNotnullErrorToInvalid.java | 2 +- .../scalar/JsonbParseNotnullErrorToValue.java | 2 +- .../functions/scalar/JsonbParseNullable.java | 2 +- .../scalar/JsonbParseNullableErrorToInvalid.java | 2 +- .../scalar/JsonbParseNullableErrorToNull.java | 2 +- .../scalar/JsonbParseNullableErrorToValue.java | 2 +- .../expressions/functions/scalar/JsonbType.java | 2 +- .../functions/scalar/{ToDate.java => LastDay.java} | 24 +- .../trees/expressions/functions/scalar/Least.java | 2 +- .../trees/expressions/functions/scalar/Left.java | 2 +- .../trees/expressions/functions/scalar/Length.java | 2 +- .../trees/expressions/functions/scalar/Ln.java | 2 +- .../expressions/functions/scalar/LocalTime.java | 2 +- .../functions/scalar/LocalTimestamp.java | 2 +- .../trees/expressions/functions/scalar/Locate.java | 2 +- .../trees/expressions/functions/scalar/Log.java | 2 +- .../trees/expressions/functions/scalar/Log10.java | 2 +- .../trees/expressions/functions/scalar/Log2.java | 2 +- .../trees/expressions/functions/scalar/Lower.java | 2 +- .../trees/expressions/functions/scalar/Lpad.java | 2 +- .../trees/expressions/functions/scalar/Ltrim.java | 2 +- .../expressions/functions/scalar/MakeDate.java | 2 +- .../trees/expressions/functions/scalar/Md5.java | 2 +- .../trees/expressions/functions/scalar/Md5Sum.java | 2 +- .../trees/expressions/functions/scalar/Minute.java | 2 +- .../expressions/functions/scalar/MinuteCeil.java | 2 +- .../expressions/functions/scalar/MinuteFloor.java | 2 +- .../expressions/functions/scalar/MinutesDiff.java | 2 +- .../expressions/functions/scalar/MoneyFormat.java | 2 +- .../trees/expressions/functions/scalar/Month.java | 2 +- .../expressions/functions/scalar/MonthCeil.java | 2 +- .../expressions/functions/scalar/MonthFloor.java | 2 +- .../expressions/functions/scalar/MonthName.java | 2 +- .../expressions/functions/scalar/MonthsDiff.java | 2 +- .../scalar/{JsonbType.java => MultiMatchAny.java} | 29 +- .../{Right.java => MultiSearchAllPositions.java} | 30 +- .../functions/scalar/MurmurHash332.java | 2 +- .../functions/scalar/MurmurHash364.java | 2 +- .../expressions/functions/scalar/Negative.java | 2 +- .../functions/scalar/NotNullOrEmpty.java | 2 +- .../trees/expressions/functions/scalar/Now.java | 2 +- .../trees/expressions/functions/scalar/NullIf.java | 2 +- .../expressions/functions/scalar/NullOrEmpty.java | 2 +- .../trees/expressions/functions/scalar/Nvl.java | 2 +- .../expressions/functions/scalar/ParseUrl.java | 2 +- .../trees/expressions/functions/scalar/Pi.java | 2 +- .../trees/expressions/functions/scalar/Pmod.java | 2 +- .../expressions/functions/scalar/Positive.java | 2 +- .../trees/expressions/functions/scalar/Pow.java | 2 +- .../trees/expressions/functions/scalar/Power.java | 2 +- .../scalar/{ToBase64.java => Protocol.java} | 24 +- .../functions/scalar/QuantilePercent.java | 2 +- .../expressions/functions/scalar/Quarter.java | 2 +- .../expressions/functions/scalar/Radians.java | 2 +- .../trees/expressions/functions/scalar/Random.java | 2 +- .../functions/scalar/RegexpExtract.java | 2 +- .../{GetJsonString.java => RegexpExtractAll.java} | 20 +- .../functions/scalar/RegexpReplace.java | 2 +- .../{RegexpReplace.java => RegexpReplaceOne.java} | 20 +- .../trees/expressions/functions/scalar/Repeat.java | 2 +- .../expressions/functions/scalar/Replace.java | 2 +- .../expressions/functions/scalar/Reverse.java | 37 +- .../trees/expressions/functions/scalar/Right.java | 2 +- .../trees/expressions/functions/scalar/Round.java | 5 +- .../expressions/functions/scalar/RoundBankers.java | 5 +- .../trees/expressions/functions/scalar/Rpad.java | 2 +- .../trees/expressions/functions/scalar/Rtrim.java | 2 +- .../scalar/{Abs.java => RunningDifference.java} | 47 ++- .../trees/expressions/functions/scalar/Second.java | 2 +- .../expressions/functions/scalar/SecondCeil.java | 2 +- .../expressions/functions/scalar/SecondFloor.java | 2 +- .../expressions/functions/scalar/SecondsDiff.java | 2 +- .../trees/expressions/functions/scalar/Sign.java | 2 +- .../trees/expressions/functions/scalar/Sin.java | 2 +- .../functions/scalar/{Ceil.java => Size.java} | 24 +- .../trees/expressions/functions/scalar/Sleep.java | 2 +- .../trees/expressions/functions/scalar/Sm3.java | 2 +- .../trees/expressions/functions/scalar/Sm3sum.java | 2 +- .../functions/scalar/Sm4CryptoFunction.java | 57 +++ .../expressions/functions/scalar/Sm4Decrypt.java | 39 +- .../expressions/functions/scalar/Sm4Encrypt.java | 34 +- .../trees/expressions/functions/scalar/Space.java | 2 +- .../scalar/{Instr.java => SplitByChar.java} | 26 +- .../scalar/{Instr.java => SplitByString.java} | 26 +- .../expressions/functions/scalar/SplitPart.java | 2 +- .../trees/expressions/functions/scalar/Sqrt.java | 2 +- .../expressions/functions/scalar/StAstext.java | 2 +- .../expressions/functions/scalar/StAswkt.java | 2 +- .../expressions/functions/scalar/StCircle.java | 2 +- .../expressions/functions/scalar/StContains.java | 2 +- .../functions/scalar/StDistanceSphere.java | 2 +- .../functions/scalar/StGeometryfromtext.java | 2 +- .../functions/scalar/StGeomfromtext.java | 2 +- .../functions/scalar/StLinefromtext.java | 2 +- .../functions/scalar/StLinestringfromtext.java | 2 +- .../expressions/functions/scalar/StPoint.java | 2 +- .../functions/scalar/StPolyfromtext.java | 2 +- .../expressions/functions/scalar/StPolygon.java | 2 +- .../functions/scalar/StPolygonfromtext.java | 2 +- .../trees/expressions/functions/scalar/StX.java | 2 +- .../trees/expressions/functions/scalar/StY.java | 2 +- .../expressions/functions/scalar/StartsWith.java | 2 +- .../expressions/functions/scalar/StrLeft.java | 2 +- .../expressions/functions/scalar/StrRight.java | 2 +- .../expressions/functions/scalar/StrToDate.java | 4 +- .../expressions/functions/scalar/SubBitmap.java | 2 +- .../expressions/functions/scalar/Substring.java | 4 +- .../scalar/{SplitPart.java => SubstringIndex.java} | 20 +- .../trees/expressions/functions/scalar/Tan.java | 2 +- .../expressions/functions/scalar/TimeDiff.java | 2 +- .../expressions/functions/scalar/Timestamp.java | 2 +- .../expressions/functions/scalar/ToBase64.java | 2 +- .../expressions/functions/scalar/ToBitmap.java | 2 +- .../functions/scalar/ToBitmapWithCheck.java | 2 +- .../trees/expressions/functions/scalar/ToDate.java | 2 +- .../expressions/functions/scalar/ToDateV2.java | 2 +- .../trees/expressions/functions/scalar/ToDays.java | 2 +- .../scalar/{ToDate.java => ToMonday.java} | 24 +- .../functions/scalar/ToQuantileState.java | 10 +- .../trees/expressions/functions/scalar/Trim.java | 2 +- .../expressions/functions/scalar/Truncate.java | 5 +- .../trees/expressions/functions/scalar/Unhex.java | 2 +- .../functions/scalar/UnixTimestamp.java | 2 +- .../trees/expressions/functions/scalar/Upper.java | 2 +- .../expressions/functions/scalar/UtcTimestamp.java | 2 +- .../functions/scalar/{Version.java => Uuid.java} | 19 +- .../expressions/functions/scalar/Version.java | 2 +- .../trees/expressions/functions/scalar/Week.java | 2 +- .../expressions/functions/scalar/WeekCeil.java | 2 +- .../expressions/functions/scalar/WeekFloor.java | 2 +- .../expressions/functions/scalar/WeekOfYear.java | 2 +- .../expressions/functions/scalar/Weekday.java | 2 +- .../expressions/functions/scalar/WeeksDiff.java | 2 +- .../trees/expressions/functions/scalar/Year.java | 2 +- .../expressions/functions/scalar/YearCeil.java | 2 +- .../expressions/functions/scalar/YearFloor.java | 2 +- .../expressions/functions/scalar/YearWeek.java | 2 +- .../expressions/functions/scalar/YearsDiff.java | 2 +- .../trees/expressions/literal/ArrayLiteral.java | 98 +++++ .../nereids/trees/expressions/literal/Literal.java | 22 +- .../visitor/AggregateFunctionVisitor.java | 188 +++++++-- .../expressions/visitor/ExpressionVisitor.java | 10 + .../expressions/visitor/ScalarFunctionVisitor.java | 269 +++++++++++- .../org/apache/doris/nereids/types/ArrayType.java | 10 +- .../org/apache/doris/nereids/types/BigIntType.java | 3 +- .../org/apache/doris/nereids/types/DataType.java | 123 +++++- .../apache/doris/nereids/types/IntegerType.java | 3 +- .../apache/doris/nereids/types/SmallIntType.java | 3 +- .../apache/doris/nereids/types/TinyIntType.java | 3 +- .../FollowToArgumentType.java} | 43 +- .../coercion/Int16OrLessType.java} | 10 +- .../coercion/Int32OrLessType.java} | 10 +- .../coercion/Int64OrLessType.java} | 10 +- .../doris/nereids/util/TypeCoercionUtils.java | 14 +- .../analysis/CheckExpressionLegalityTest.java | 74 ++++ .../rules/analysis/FillUpMissingSlotsTest.java | 4 +- ...teScalarFunction.java => GenerateFunction.java} | 466 ++++++++++++++++----- .../rules/expression/rewrite/TypeCoercionTest.java | 10 +- .../nereids/trees/expressions/GetDataTypeTest.java | 39 +- .../nereids/trees/plans/PlanToStringTest.java | 2 +- .../suites/nereids_syntax_p0/array_function.groovy | 44 ++ .../suites/nereids_syntax_p0/function.groovy | 10 + .../suites/nereids_syntax_p0/group_concat.groovy | 25 +- .../nereids_syntax_p0/sub_query_correlated.groovy | 102 ++--- .../sub_query_diff_old_optimize.groovy | 62 +-- .../system/test_query_sys_data_type.groovy | 2 +- 414 files changed, 7610 insertions(+), 2616 deletions(-) copy fe/fe-core/src/main/java/org/apache/doris/nereids/{trees/expressions/functions/ForbiddenMetricTypeArguments.java => jobs/batch/CheckLegalityAfterRewrite.java} (53%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/{TypeCoercionJob.java => CheckLegalityBeforeTypeCoercion.java} (53%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/SupportJavaDateFormatter.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/{Cast.java => OrderExpression.java} (56%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/BitmapIntersectFunction.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{ForbiddenMetricTypeArguments.java => ComputePrecision.java} (81%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ComputePrecisionForRound.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{ForbiddenMetricTypeArguments.java => ComputePrecisionForSum.java} (53%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ComputeSignatureHelper.java delete mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/ApproxCountDistinct.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/{VarianceSamp.java => AvgWeighted.java} (60%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{ForbiddenMetricTypeArguments.java => agg/BitmapFunction.java} (55%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CollectList.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CollectSet.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupConcat.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/MoneyFormat.java => agg/Histogram.java} (52%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{ForbiddenMetricTypeArguments.java => agg/HllFunction.java} (59%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/{BitmapUnionCount.java => IntersectCount.java} (50%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/GetJsonDouble.java => agg/MaxBy.java} (54%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/GetJsonDouble.java => agg/MinBy.java} (53%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/{BitmapUnion.java => OrthogonalBitmapFunction.java} (51%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/OrthogonalBitmapIntersect.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/OrthogonalBitmapIntersectCount.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/BitmapCount.java => agg/OrthogonalBitmapUnionCount.java} (71%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/BitmapAndNotCount.java => agg/Percentile.java} (61%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/PercentileApprox.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/BitmapAndNotCount.java => agg/PercentileArray.java} (65%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/Acos.java => agg/QuantileUnion.java} (59%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/Md5Sum.java => agg/Retention.java} (50%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/MinutesDiff.java => agg/SequenceCount.java} (50%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/SequenceFunction.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/Quarter.java => agg/SequenceMatch.java} (50%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{ForbiddenMetricTypeArguments.java => agg/StdDevOrVarianceFunction.java} (59%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/{VarianceSamp.java => Stddev.java} (71%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/{VarianceSamp.java => StddevSamp.java} (69%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/{scalar/Substring.java => agg/TopN.java} (53%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/TopNArray.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/TopNWeighted.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/WindowFunnel.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/AesCryptoFunction.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Array.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Abs.java => ArrayAvg.java} (60%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayCompact.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{NullIf.java => ArrayContains.java} (52%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Abs.java => ArrayDifference.java} (62%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayDistinct.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayEnumerate.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayExcept.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayIntersect.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayJoin.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Greatest.java => ArrayMax.java} (51%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Greatest.java => ArrayMin.java} (51%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Abs.java => ArrayPopback.java} (51%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{NullIf.java => ArrayPosition.java} (53%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Abs.java => ArrayProduct.java} (60%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{FromUnixtime.java => ArrayRange.java} (60%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Ceil.java => ArraySize.java} (80%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArraySlice.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArraySort.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Abs.java => ArraySum.java} (60%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayUnion.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{NullIf.java => ArrayWithConstant.java} (53%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArraysOverlap.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{BitmapMax.java => BitmapFromArray.java} (67%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Bin.java => BitmapToArray.java} (77%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Ceil.java => Cardinality.java} (79%) delete mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CharLength.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CompatibleTypeArrayFunction.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{ExtractUrlParameter.java => ConvertTo.java} (74%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{NullIf.java => CountEqual.java} (53%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CryptoFunction.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{ToBase64.java => Domain.java} (81%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Trim.java => DomainWithoutWww.java} (81%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{NullIf.java => ElementAt.java} (57%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{NullIf.java => ElementExtract.java} (57%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ElementSlice.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Greatest.java => Field.java} (59%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{ToDate.java => LastDay.java} (81%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{JsonbType.java => MultiMatchAny.java} (74%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Right.java => MultiSearchAllPositions.java} (73%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{ToBase64.java => Protocol.java} (81%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{GetJsonString.java => RegexpExtractAll.java} (83%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{RegexpReplace.java => RegexpReplaceOne.java} (82%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Abs.java => RunningDifference.java} (66%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Ceil.java => Size.java} (81%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Sm4CryptoFunction.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Instr.java => SplitByChar.java} (76%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Instr.java => SplitByString.java} (76%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{SplitPart.java => SubstringIndex.java} (83%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{ToDate.java => ToMonday.java} (81%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/{Version.java => Uuid.java} (85%) create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/ArrayLiteral.java copy fe/fe-core/src/main/java/org/apache/doris/nereids/types/{IntegerType.java => coercion/FollowToArgumentType.java} (58%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/{trees/expressions/functions/ForbiddenMetricTypeArguments.java => types/coercion/Int16OrLessType.java} (79%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/{trees/expressions/functions/ForbiddenMetricTypeArguments.java => types/coercion/Int32OrLessType.java} (79%) copy fe/fe-core/src/main/java/org/apache/doris/nereids/{trees/expressions/functions/ForbiddenMetricTypeArguments.java => types/coercion/Int64OrLessType.java} (79%) create mode 100644 fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/CheckExpressionLegalityTest.java rename fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/{GenerateScalarFunction.java => GenerateFunction.java} (73%) create mode 100644 regression-test/suites/nereids_syntax_p0/array_function.groovy rename fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ForbiddenMetricTypeArguments.java => regression-test/suites/nereids_syntax_p0/group_concat.groovy (52%) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org