[bug](json)Fix some problems of json function on Nereids (#24898)

Fix some problems of json_length and json_contains function on Nereids
fix wrong result of json_contains function
Regression test jsonb_p0 to enable Nereids
This commit is contained in:
Liqf
2023-09-27 21:01:45 +08:00
committed by GitHub
parent 391a4e29eb
commit d4e823950a
7 changed files with 26 additions and 18 deletions

View File

@ -611,7 +611,7 @@ public class BuiltinScalarFunctions implements FunctionHelper {
scalar(JsonbType.class, "json_type"),
scalar(JsonbType.class, "jsonb_type"),
scalar(JsonLength.class, "json_length"),
scalar(JsonContains.class, "json_conatins"),
scalar(JsonContains.class, "json_contains"),
scalar(LastDay.class, "last_day"),
scalar(Least.class, "least"),
scalar(Left.class, "left"),

View File

@ -51,7 +51,7 @@ public class JsonContains extends ScalarFunction
* constructor with 2 arguments.
*/
public JsonContains(Expression arg0, Expression arg1) {
super("json_contains", arg0, arg1, Literal.of(""));
super("json_contains", arg0, arg1, Literal.of("$"));
}
/**

View File

@ -19,8 +19,8 @@ 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.functions.PropagateNullable;
import org.apache.doris.nereids.trees.expressions.literal.Literal;
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
@ -38,7 +38,7 @@ import java.util.List;
* ScalarFunction 'json_length'. This class is generated by GenerateFunction.
*/
public class JsonLength extends ScalarFunction
implements BinaryExpression, ExplicitlyCastableSignature, PropagateNullable {
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(IntegerType.INSTANCE).args(JsonType.INSTANCE),
@ -50,7 +50,7 @@ public class JsonLength extends ScalarFunction
* constructor with 1 arguments.
*/
public JsonLength(Expression arg0) {
super("json_length", arg0, Literal.of(""));
super("json_length", arg0, Literal.of("$"));
}
/**