[Feature-WIP](inverted index) support array type for inverted index reader (#16355)
This commit is contained in:
@ -17,6 +17,7 @@
|
||||
|
||||
package org.apache.doris.analysis;
|
||||
|
||||
import org.apache.doris.catalog.ArrayType;
|
||||
import org.apache.doris.catalog.Column;
|
||||
import org.apache.doris.catalog.KeysType;
|
||||
import org.apache.doris.catalog.PrimitiveType;
|
||||
@ -176,6 +177,9 @@ public class IndexDef {
|
||||
|| indexType == IndexType.NGRAM_BF) {
|
||||
String indexColName = column.getName();
|
||||
PrimitiveType colType = column.getDataType();
|
||||
if (indexType == IndexType.INVERTED && colType.isArrayType()) {
|
||||
colType = ((ArrayType) column.getType()).getItemType().getPrimitiveType();
|
||||
}
|
||||
if (!(colType.isDateType() || colType.isDecimalV2Type() || colType.isDecimalV3Type()
|
||||
|| colType.isFixedPointType() || colType.isStringType() || colType == PrimitiveType.BOOLEAN)) {
|
||||
throw new AnalysisException(colType + " is not supported in " + indexType.toString() + " index. "
|
||||
|
||||
@ -107,38 +107,41 @@ public class MatchPredicate extends Predicate {
|
||||
Lists.<Type>newArrayList(new ArrayType(t), t),
|
||||
Type.BOOLEAN));
|
||||
}
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ANY.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(Type.VARCHAR, Type.VARCHAR),
|
||||
Type.BOOLEAN));
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ANY.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(new ArrayType(Type.VARCHAR), Type.VARCHAR),
|
||||
Type.BOOLEAN));
|
||||
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ALL.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(Type.VARCHAR, Type.VARCHAR),
|
||||
Type.BOOLEAN));
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ALL.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(new ArrayType(Type.VARCHAR), Type.VARCHAR),
|
||||
Type.BOOLEAN));
|
||||
for (Type t : Type.getStringTypes()) {
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ANY.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(t, t),
|
||||
Type.BOOLEAN));
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ANY.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(new ArrayType(t), t),
|
||||
Type.BOOLEAN));
|
||||
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_PHRASE.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(Type.VARCHAR, Type.VARCHAR),
|
||||
Type.BOOLEAN));
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_PHRASE.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(new ArrayType(Type.VARCHAR), Type.VARCHAR),
|
||||
Type.BOOLEAN));
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ALL.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(t, t),
|
||||
Type.BOOLEAN));
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_ALL.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(new ArrayType(t), t),
|
||||
Type.BOOLEAN));
|
||||
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_PHRASE.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(t, t),
|
||||
Type.BOOLEAN));
|
||||
functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(
|
||||
Operator.MATCH_PHRASE.getName(),
|
||||
symbolNotUsed,
|
||||
Lists.<Type>newArrayList(new ArrayType(t), t),
|
||||
Type.BOOLEAN));
|
||||
}
|
||||
}
|
||||
|
||||
private final Operator op;
|
||||
@ -219,7 +222,7 @@ public class MatchPredicate extends Predicate {
|
||||
collectChildReturnTypes(), Function.CompareMode.IS_NONSTRICT_SUPERTYPE_OF);
|
||||
if (fn == null) {
|
||||
throw new AnalysisException(
|
||||
"no function found for " + op.toString() + " " + toSql());
|
||||
"no function found for " + op.toString() + "," + toSql());
|
||||
}
|
||||
Expr e1 = getChild(0);
|
||||
Expr e2 = getChild(1);
|
||||
|
||||
Reference in New Issue
Block a user