@@ -0,0 +1,2189 @@
+package sqlancer.databend.ast;%0A%0Aimport sqlancer.common.ast.BinaryOperatorNode;%0Aimport sqlancer.common.ast.newast.NewUnaryPrefixOperatorNode;%0Aimport sqlancer.common.ast.newast.Node;%0Aimport sqlancer.databend.DatabendSchema.DatabendDataType;%0A%0A%0Apublic class DatabendUnaryPrefixOperation extends NewUnaryPrefixOperatorNode%3CDatabendExpression%3E %7B%0A%0A//    private final Node%3CDatabendExpression%3E expr;%0A//    private final DatabendUnaryPrefixOperator op;%0A    private boolean negate;%0A%0A    public DatabendUnaryPrefixOperation(Node%3CDatabendExpression%3E expr, DatabendUnaryPrefixOperator op, boolean negate) %7B%0A        super(expr,op);%0A        setNegate(negate);%0A    %7D%0A%0A    void setNegate(boolean negate)%7B%0A        this.negate = negate;%0A    %7D%0A%0A//    @Override%0A    public Node%3CDatabendExpression%3E getExpression() %7B%0A        return getExpr();%0A    %7D%0A%0A    @Override%0A    public String getOperatorRepresentation() %7B%0A        return null;%0A    %7D%0A%0A//    @Override%0A//    public OperatorKind getOperatorKind() %7B%0A//        return OperatorKind.PREFIX;%0A//    %7D%0A%0A%0A%0A    public enum DatabendUnaryPrefixOperator implements BinaryOperatorNode.Operator %7B%0A        NOT(%22NOT%22, DatabendDataType.BOOLEAN, DatabendDataType.INT) %7B%0A            @Override%0A            public DatabendDataType getExpressionType() %7B%0A                return DatabendDataType.BOOLEAN;%0A            %7D%0A%0A            @Override%0A            protected DatabendConstant getExpectedValue(DatabendConstant expectedValue) %7B%0A                return null; // TODO%0A            %7D%0A        %7D;%0A%0A%0A        private String textRepresentation;%0A        private DatabendDataType%5B%5D dataTypes;%0A%0A        DatabendUnaryPrefixOperator(String textRepresentation, DatabendDataType... dataTypes) %7B%0A            this.textRepresentation = textRepresentation;%0A            this.dataTypes = dataTypes.clone();%0A        %7D%0A%0A        public abstract DatabendDataType getExpressionType();%0A%0A        public DatabendDataType%5B%5D getInputDataTypes()%7B%0A            return dataTypes;%0A        %7D%0A%0A        protected abstract DatabendConstant getExpectedValue(DatabendConstant expectedValue);%0A%0A        @Override%0A        public String getTextRepresentation() %7B%0A            return this.textRepresentation;%0A        %7D%0A    %7D%0A%0A%7D%0A

implement the unary prefix operation