[enhance](Nereids): remove duplicated alias Function. (#16187)

This commit is contained in:
jakevin
2023-01-29 14:56:20 +08:00
committed by GitHub
parent c6bc0a03a4
commit abc50c6fe5
8 changed files with 3 additions and 423 deletions

View File

@ -90,16 +90,13 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.Cos;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CountEqual;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentDate;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentTime;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentTimestamp;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentUser;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Curtime;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Database;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Date;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateDiff;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateFormat;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateTrunc;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateV2;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Day;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DayCeil;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DayFloor;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DayName;
@ -185,8 +182,6 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.Least;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Left;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Length;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Ln;
import org.apache.doris.nereids.trees.expressions.functions.scalar.LocalTime;
import org.apache.doris.nereids.trees.expressions.functions.scalar.LocalTimestamp;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Locate;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Log;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Log10;
@ -411,21 +406,18 @@ public class BuiltinScalarFunctions implements FunctionHelper {
scalar(Cos.class, "cos"),
scalar(CountEqual.class, "countequal"),
scalar(CurrentDate.class, "curdate", "current_date"),
scalar(CurrentTime.class, "current_time"),
scalar(CurrentTimestamp.class, "current_timestamp"),
scalar(CurrentTime.class, "curtime", "current_time"),
scalar(CurrentUser.class, "current_user"),
scalar(Curtime.class, "curtime"),
scalar(Database.class, "database"),
scalar(Date.class, "date"),
scalar(DateDiff.class, "datediff"),
scalar(DateFormat.class, "date_format"),
scalar(DateTrunc.class, "date_trunc"),
scalar(DateV2.class, "datev2"),
scalar(Day.class, "day"),
scalar(DayCeil.class, "day_ceil"),
scalar(DayFloor.class, "day_floor"),
scalar(DayName.class, "dayname"),
scalar(DayOfMonth.class, "dayofmonth"),
scalar(DayOfMonth.class, "day", "dayofmonth"),
scalar(DayOfWeek.class, "dayofweek"),
scalar(DayOfYear.class, "dayofyear"),
scalar(DaysAdd.class, "days_add"),
@ -507,8 +499,6 @@ public class BuiltinScalarFunctions implements FunctionHelper {
scalar(Left.class, "left"),
scalar(Length.class, "length"),
scalar(Ln.class, "ln"),
scalar(LocalTime.class, "localtime"),
scalar(LocalTimestamp.class, "localtimestamp"),
scalar(Locate.class, "locate"),
scalar(Log.class, "log"),
scalar(Log10.class, "log10"),
@ -542,7 +532,7 @@ public class BuiltinScalarFunctions implements FunctionHelper {
scalar(MurmurHash364.class, "murmur_hash3_64"),
scalar(Negative.class, "negative"),
scalar(NotNullOrEmpty.class, "not_null_or_empty"),
scalar(Now.class, "now"),
scalar(Now.class, "now", "current_timestamp", "localtime", "localtimestamp"),
scalar(NullIf.class, "nullif"),
scalar(NullOrEmpty.class, "null_or_empty"),
scalar(Nvl.class, "ifnull", "nvl"),

View File

@ -1,84 +0,0 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.doris.nereids.trees.expressions.functions.scalar;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNotNullable;
import org.apache.doris.nereids.trees.expressions.functions.DateTimeWithPrecision;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.functions.Nondeterministic;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.DateTimeType;
import org.apache.doris.nereids.types.DateTimeV2Type;
import org.apache.doris.nereids.types.IntegerType;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.util.List;
/**
* ScalarFunction 'current_timestamp'. This class is generated by GenerateFunction.
*/
public class CurrentTimestamp extends DateTimeWithPrecision
implements ExplicitlyCastableSignature, Nondeterministic, AlwaysNotNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DateTimeType.INSTANCE).args(),
FunctionSignature.ret(DateTimeV2Type.SYSTEM_DEFAULT).args(IntegerType.INSTANCE)
);
/**
* constructor with 0 argument.
*/
public CurrentTimestamp() {
super("current_timestamp");
}
/**
* constructor with 1 argument.
*/
public CurrentTimestamp(Expression arg) {
super("current_timestamp", arg);
}
/**
* withChildren.
*/
@Override
public CurrentTimestamp withChildren(List<Expression> children) {
Preconditions.checkArgument(children.size() == 0
|| children.size() == 1);
if (children.isEmpty() && arity() == 0) {
return this;
} else {
return new CurrentTimestamp(children.get(0));
}
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;
}
@Override
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
return visitor.visitCurrentTimestamp(this, context);
}
}

View File

@ -1,58 +0,0 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.doris.nereids.trees.expressions.functions.scalar;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNotNullable;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.functions.Nondeterministic;
import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.TimeType;
import com.google.common.collect.ImmutableList;
import java.util.List;
/**
* ScalarFunction 'curtime'. This class is generated by GenerateFunction.
*/
public class Curtime extends ScalarFunction
implements LeafExpression, ExplicitlyCastableSignature, Nondeterministic, AlwaysNotNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(TimeType.INSTANCE).args()
);
/**
* constructor with 0 argument.
*/
public Curtime() {
super("curtime");
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;
}
@Override
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
return visitor.visitCurtime(this, context);
}
}

View File

@ -1,73 +0,0 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.doris.nereids.trees.expressions.functions.scalar;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.DateTimeType;
import org.apache.doris.nereids.types.DateTimeV2Type;
import org.apache.doris.nereids.types.DateV2Type;
import org.apache.doris.nereids.types.IntegerType;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.util.List;
/**
* ScalarFunction 'day'. This class is generated by GenerateFunction.
*/
public class Day extends ScalarFunction
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(IntegerType.INSTANCE).args(DateTimeType.INSTANCE),
FunctionSignature.ret(IntegerType.INSTANCE).args(DateTimeV2Type.SYSTEM_DEFAULT),
FunctionSignature.ret(IntegerType.INSTANCE).args(DateV2Type.INSTANCE)
);
/**
* constructor with 1 argument.
*/
public Day(Expression arg) {
super("day", arg);
}
/**
* withChildren.
*/
@Override
public Day withChildren(List<Expression> children) {
Preconditions.checkArgument(children.size() == 1);
return new Day(children.get(0));
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;
}
@Override
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
return visitor.visitDay(this, context);
}
}

View File

@ -1,84 +0,0 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.doris.nereids.trees.expressions.functions.scalar;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNotNullable;
import org.apache.doris.nereids.trees.expressions.functions.DateTimeWithPrecision;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.functions.Nondeterministic;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.DateTimeType;
import org.apache.doris.nereids.types.DateTimeV2Type;
import org.apache.doris.nereids.types.IntegerType;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.util.List;
/**
* ScalarFunction 'localtime'. This class is generated by GenerateFunction.
*/
public class LocalTime extends DateTimeWithPrecision
implements ExplicitlyCastableSignature, Nondeterministic, AlwaysNotNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DateTimeType.INSTANCE).args(),
FunctionSignature.ret(DateTimeV2Type.SYSTEM_DEFAULT).args(IntegerType.INSTANCE)
);
/**
* constructor with 0 argument.
*/
public LocalTime() {
super("localtime");
}
/**
* constructor with 1 argument.
*/
public LocalTime(Expression arg) {
super("localtime", arg);
}
/**
* withChildren.
*/
@Override
public LocalTime withChildren(List<Expression> children) {
Preconditions.checkArgument(children.size() == 0
|| children.size() == 1);
if (children.isEmpty() && arity() == 0) {
return this;
} else {
return new LocalTime(children.get(0));
}
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;
}
@Override
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
return visitor.visitLocalTime(this, context);
}
}

View File

@ -1,84 +0,0 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.doris.nereids.trees.expressions.functions.scalar;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNotNullable;
import org.apache.doris.nereids.trees.expressions.functions.DateTimeWithPrecision;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.functions.Nondeterministic;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.DateTimeType;
import org.apache.doris.nereids.types.DateTimeV2Type;
import org.apache.doris.nereids.types.IntegerType;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.util.List;
/**
* ScalarFunction 'localtimestamp'. This class is generated by GenerateFunction.
*/
public class LocalTimestamp extends DateTimeWithPrecision
implements ExplicitlyCastableSignature, Nondeterministic, AlwaysNotNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DateTimeType.INSTANCE).args(),
FunctionSignature.ret(DateTimeV2Type.SYSTEM_DEFAULT).args(IntegerType.INSTANCE)
);
/**
* constructor with 0 argument.
*/
public LocalTimestamp() {
super("localtimestamp");
}
/**
* constructor with 1 argument.
*/
public LocalTimestamp(Expression arg) {
super("localtimestamp", arg);
}
/**
* withChildren.
*/
@Override
public LocalTimestamp withChildren(List<Expression> children) {
Preconditions.checkArgument(children.size() == 0
|| children.size() == 1);
if (children.isEmpty() && arity() == 0) {
return this;
} else {
return new LocalTimestamp(children.get(0));
}
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;
}
@Override
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
return visitor.visitLocalTimestamp(this, context);
}
}

View File

@ -90,16 +90,13 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.Cos;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CountEqual;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentDate;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentTime;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentTimestamp;
import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentUser;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Curtime;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Database;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Date;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateDiff;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateFormat;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateTrunc;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateV2;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Day;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DayCeil;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DayFloor;
import org.apache.doris.nereids.trees.expressions.functions.scalar.DayName;
@ -183,8 +180,6 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.Least;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Left;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Length;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Ln;
import org.apache.doris.nereids.trees.expressions.functions.scalar.LocalTime;
import org.apache.doris.nereids.trees.expressions.functions.scalar.LocalTimestamp;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Locate;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Log;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Log10;
@ -619,14 +614,6 @@ public interface ScalarFunctionVisitor<R, C> {
return visitScalarFunction(currentTime, context);
}
default R visitCurrentTimestamp(CurrentTimestamp currentTimestamp, C context) {
return visitScalarFunction(currentTimestamp, context);
}
default R visitCurtime(Curtime curtime, C context) {
return visitScalarFunction(curtime, context);
}
default R visitDate(Date date, C context) {
return visitScalarFunction(date, context);
}
@ -663,10 +650,6 @@ public interface ScalarFunctionVisitor<R, C> {
return visitScalarFunction(dateV2, context);
}
default R visitDay(Day day, C context) {
return visitScalarFunction(day, context);
}
default R visitDayCeil(DayCeil dayCeil, C context) {
return visitScalarFunction(dayCeil, context);
}
@ -1031,14 +1014,6 @@ public interface ScalarFunctionVisitor<R, C> {
return visitScalarFunction(ln, context);
}
default R visitLocalTime(LocalTime localTime, C context) {
return visitScalarFunction(localTime, context);
}
default R visitLocalTimestamp(LocalTimestamp localTimestamp, C context) {
return visitScalarFunction(localTimestamp, context);
}
default R visitLocate(Locate locate, C context) {
return visitScalarFunction(locate, context);
}

View File

@ -115,8 +115,6 @@ suite("nereids_scalar_fn_1") {
sql "select current_date() from fn_test"
sql "select current_time() from fn_test"
sql "select current_timestamp() from fn_test"
// core
// qt_sql "select current_timestamp(kint) from fn_test order by kint"
sql "select current_user() from fn_test"
sql "select curtime() from fn_test"
sql "select database() from fn_test"