[branch-2.1](functions) fix be crash for function random_bytes and mark_first/last_n (#36003)

pick #35884
This commit is contained in:
zclllyybb
2024-06-07 10:30:41 +08:00
committed by GitHub
parent c794ea18c8
commit f751ca4e04
5 changed files with 52 additions and 16 deletions

View File

@ -18,6 +18,7 @@
package org.apache.doris.nereids.trees.expressions.functions.scalar;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.exceptions.AnalysisException;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
@ -65,6 +66,13 @@ public class MaskFirstN extends ScalarFunction implements ExplicitlyCastableSign
return new MaskFirstN(children.get(0), children.get(1));
}
@Override
public void checkLegalityAfterRewrite() {
if (arity() == 2 && !child(1).isLiteral()) {
throw new AnalysisException("mask_first_n must accept literal for 2nd argument");
}
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;

View File

@ -18,6 +18,7 @@
package org.apache.doris.nereids.trees.expressions.functions.scalar;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.exceptions.AnalysisException;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
@ -65,6 +66,13 @@ public class MaskLastN extends ScalarFunction implements ExplicitlyCastableSigna
return new MaskLastN(children.get(0), children.get(1));
}
@Override
public void checkLegalityAfterRewrite() {
if (arity() == 2 && !child(1).isLiteral()) {
throw new AnalysisException("mask_last_n must accept literal for 2nd argument");
}
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;