[function](bitmap) support bitmap_to_base64 and bitmap_from_base64 (#23759)
This commit is contained in:
@ -63,6 +63,7 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapContain
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapCount;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapEmpty;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapFromArray;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapFromBase64;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapFromString;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapHasAll;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapHasAny;
|
||||
@ -76,6 +77,7 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapOrCount
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapSubsetInRange;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapSubsetLimit;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapToArray;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapToBase64;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapToString;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapXor;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapXorCount;
|
||||
@ -410,6 +412,7 @@ public class BuiltinScalarFunctions implements FunctionHelper {
|
||||
scalar(BitmapCount.class, "bitmap_count"),
|
||||
scalar(BitmapEmpty.class, "bitmap_empty"),
|
||||
scalar(BitmapFromArray.class, "bitmap_from_array"),
|
||||
scalar(BitmapFromBase64.class, "bitmap_from_base64"),
|
||||
scalar(BitmapFromString.class, "bitmap_from_string"),
|
||||
scalar(BitmapHasAll.class, "bitmap_has_all"),
|
||||
scalar(BitmapHasAny.class, "bitmap_has_any"),
|
||||
@ -423,6 +426,7 @@ public class BuiltinScalarFunctions implements FunctionHelper {
|
||||
scalar(BitmapSubsetInRange.class, "bitmap_subset_in_range"),
|
||||
scalar(BitmapSubsetLimit.class, "bitmap_subset_limit"),
|
||||
scalar(BitmapToArray.class, "bitmap_to_array"),
|
||||
scalar(BitmapToBase64.class, "bitmap_to_base64"),
|
||||
scalar(BitmapToString.class, "bitmap_to_string"),
|
||||
scalar(BitmapXor.class, "bitmap_xor"),
|
||||
scalar(BitmapXorCount.class, "bitmap_xor_count"),
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
// 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.BitmapType;
|
||||
import org.apache.doris.nereids.types.StringType;
|
||||
import org.apache.doris.nereids.types.VarcharType;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ScalarFunction 'bitmap_from_string'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class BitmapFromBase64 extends ScalarFunction
|
||||
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(BitmapType.INSTANCE).args(VarcharType.SYSTEM_DEFAULT),
|
||||
FunctionSignature.ret(BitmapType.INSTANCE).args(StringType.INSTANCE)
|
||||
);
|
||||
|
||||
/**
|
||||
* constructor with 1 argument.
|
||||
*/
|
||||
public BitmapFromBase64(Expression arg) {
|
||||
super("bitmap_from_base64", arg);
|
||||
}
|
||||
|
||||
/**
|
||||
* withChildren.
|
||||
*/
|
||||
@Override
|
||||
public BitmapFromBase64 withChildren(List<Expression> children) {
|
||||
Preconditions.checkArgument(children.size() == 1);
|
||||
return new BitmapFromBase64(children.get(0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FunctionSignature> getSignatures() {
|
||||
return SIGNATURES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitBitmapFromBase64(this, context);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
// 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.ExplicitlyCastableSignature;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
|
||||
import org.apache.doris.nereids.types.BitmapType;
|
||||
import org.apache.doris.nereids.types.StringType;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ScalarFunction 'bitmap_to_base64'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class BitmapToBase64 extends ScalarFunction
|
||||
implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(StringType.INSTANCE).args(BitmapType.INSTANCE)
|
||||
);
|
||||
|
||||
/**
|
||||
* constructor with 1 argument.
|
||||
*/
|
||||
public BitmapToBase64(Expression arg) {
|
||||
super("bitmap_to_base64", arg);
|
||||
}
|
||||
|
||||
/**
|
||||
* withChildren.
|
||||
*/
|
||||
@Override
|
||||
public BitmapToBase64 withChildren(List<Expression> children) {
|
||||
Preconditions.checkArgument(children.size() == 1);
|
||||
return new BitmapToBase64(children.get(0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FunctionSignature> getSignatures() {
|
||||
return SIGNATURES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitBitmapToBase64(this, context);
|
||||
}
|
||||
}
|
||||
@ -67,6 +67,7 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapContain
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapCount;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapEmpty;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapFromArray;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapFromBase64;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapFromString;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapHasAll;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapHasAny;
|
||||
@ -80,6 +81,7 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapOrCount
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapSubsetInRange;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapSubsetLimit;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapToArray;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapToBase64;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapToString;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapXor;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapXorCount;
|
||||
@ -550,6 +552,14 @@ public interface ScalarFunctionVisitor<R, C> {
|
||||
return visitScalarFunction(bitmapFromString, context);
|
||||
}
|
||||
|
||||
default R visitBitmapFromBase64(BitmapFromBase64 bitmapFromBase64, C context) {
|
||||
return visitScalarFunction(bitmapFromBase64, context);
|
||||
}
|
||||
|
||||
default R visitBitmapToBase64(BitmapToBase64 bitmapToBase64, C context) {
|
||||
return visitScalarFunction(bitmapToBase64, context);
|
||||
}
|
||||
|
||||
default R visitBitmapHasAll(BitmapHasAll bitmapHasAll, C context) {
|
||||
return visitScalarFunction(bitmapHasAll, context);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user