Skip to content

Commit 02e2b75

Browse files
Move static function
1 parent 56888af commit 02e2b75

File tree

2 files changed

+44
-41
lines changed

2 files changed

+44
-41
lines changed

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/FullTextFunction.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package org.elasticsearch.xpack.esql.expression.function.fulltext;
99

10+
import org.apache.lucene.util.BytesRef;
1011
import org.elasticsearch.common.lucene.BytesRefs;
1112
import org.elasticsearch.compute.lucene.LuceneQueryEvaluator.ShardConfig;
1213
import org.elasticsearch.compute.lucene.LuceneQueryExpressionEvaluator;
@@ -17,14 +18,19 @@
1718
import org.elasticsearch.xpack.esql.capabilities.PostAnalysisPlanVerificationAware;
1819
import org.elasticsearch.xpack.esql.capabilities.TranslationAware;
1920
import org.elasticsearch.xpack.esql.common.Failures;
21+
import org.elasticsearch.xpack.esql.core.InvalidArgumentException;
22+
import org.elasticsearch.xpack.esql.core.expression.EntryExpression;
2023
import org.elasticsearch.xpack.esql.core.expression.Expression;
2124
import org.elasticsearch.xpack.esql.core.expression.FoldContext;
25+
import org.elasticsearch.xpack.esql.core.expression.Literal;
26+
import org.elasticsearch.xpack.esql.core.expression.MapExpression;
2227
import org.elasticsearch.xpack.esql.core.expression.Nullability;
2328
import org.elasticsearch.xpack.esql.core.expression.TypeResolutions;
2429
import org.elasticsearch.xpack.esql.core.expression.function.Function;
2530
import org.elasticsearch.xpack.esql.core.querydsl.query.Query;
2631
import org.elasticsearch.xpack.esql.core.tree.Source;
2732
import org.elasticsearch.xpack.esql.core.type.DataType;
33+
import org.elasticsearch.xpack.esql.core.type.DataTypeConverter;
2834
import org.elasticsearch.xpack.esql.evaluator.mapper.EvaluatorMapper;
2935
import org.elasticsearch.xpack.esql.expression.predicate.logical.BinaryLogic;
3036
import org.elasticsearch.xpack.esql.expression.predicate.logical.Not;
@@ -42,12 +48,15 @@
4248

4349
import java.util.List;
4450
import java.util.Locale;
51+
import java.util.Map;
4552
import java.util.Objects;
4653
import java.util.function.BiConsumer;
4754
import java.util.function.Predicate;
4855

56+
import static org.elasticsearch.common.logging.LoggerMessageFormat.format;
4957
import static org.elasticsearch.xpack.esql.common.Failure.fail;
5058
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.DEFAULT;
59+
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isFoldable;
5160
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isNotNullAndFoldable;
5261
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isString;
5362

@@ -323,4 +332,39 @@ public ScoreOperator.ExpressionScorer.Factory toScorer(ToScorer toScorer) {
323332
}
324333
return new LuceneQueryScoreEvaluator.Factory(shardConfigs);
325334
}
335+
336+
protected static void populateOptionsMap(
337+
final MapExpression options,
338+
final Map<String, Object> optionsMap,
339+
final TypeResolutions.ParamOrdinal paramOrdinal,
340+
final String sourceText,
341+
final Map<String, DataType> allowedOptions
342+
) throws InvalidArgumentException {
343+
for (EntryExpression entry : options.entryExpressions()) {
344+
Expression optionExpr = entry.key();
345+
Expression valueExpr = entry.value();
346+
TypeResolution resolution = isFoldable(optionExpr, sourceText, paramOrdinal).and(
347+
isFoldable(valueExpr, sourceText, paramOrdinal)
348+
);
349+
if (resolution.unresolved()) {
350+
throw new InvalidArgumentException(resolution.message());
351+
}
352+
Object optionExprLiteral = ((Literal) optionExpr).value();
353+
Object valueExprLiteral = ((Literal) valueExpr).value();
354+
String optionName = optionExprLiteral instanceof BytesRef br ? br.utf8ToString() : optionExprLiteral.toString();
355+
String optionValue = valueExprLiteral instanceof BytesRef br ? br.utf8ToString() : valueExprLiteral.toString();
356+
// validate the optionExpr is supported
357+
DataType dataType = allowedOptions.get(optionName);
358+
if (dataType == null) {
359+
throw new InvalidArgumentException(
360+
format(null, "Invalid option [{}] in [{}], expected one of {}", optionName, sourceText, allowedOptions.keySet())
361+
);
362+
}
363+
try {
364+
optionsMap.put(optionName, DataTypeConverter.convert(optionValue, dataType));
365+
} catch (InvalidArgumentException e) {
366+
throw new InvalidArgumentException(format(null, "Invalid option [{}] in [{}], {}", optionName, sourceText, e.getMessage()));
367+
}
368+
}
369+
}
326370
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/Match.java

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,14 @@
1818
import org.elasticsearch.xpack.esql.common.Failure;
1919
import org.elasticsearch.xpack.esql.common.Failures;
2020
import org.elasticsearch.xpack.esql.core.InvalidArgumentException;
21-
import org.elasticsearch.xpack.esql.core.expression.EntryExpression;
2221
import org.elasticsearch.xpack.esql.core.expression.Expression;
2322
import org.elasticsearch.xpack.esql.core.expression.FieldAttribute;
2423
import org.elasticsearch.xpack.esql.core.expression.FoldContext;
25-
import org.elasticsearch.xpack.esql.core.expression.Literal;
2624
import org.elasticsearch.xpack.esql.core.expression.MapExpression;
27-
import org.elasticsearch.xpack.esql.core.expression.TypeResolutions;
2825
import org.elasticsearch.xpack.esql.core.querydsl.query.Query;
2926
import org.elasticsearch.xpack.esql.core.tree.NodeInfo;
3027
import org.elasticsearch.xpack.esql.core.tree.Source;
3128
import org.elasticsearch.xpack.esql.core.type.DataType;
32-
import org.elasticsearch.xpack.esql.core.type.DataTypeConverter;
3329
import org.elasticsearch.xpack.esql.core.type.MultiTypeEsField;
3430
import org.elasticsearch.xpack.esql.core.util.Check;
3531
import org.elasticsearch.xpack.esql.core.util.NumericUtils;
@@ -56,7 +52,6 @@
5652
import java.util.function.BiConsumer;
5753

5854
import static java.util.Map.entry;
59-
import static org.elasticsearch.common.logging.LoggerMessageFormat.format;
6055
import static org.elasticsearch.index.query.AbstractQueryBuilder.BOOST_FIELD;
6156
import static org.elasticsearch.index.query.MatchQueryBuilder.ANALYZER_FIELD;
6257
import static org.elasticsearch.index.query.MatchQueryBuilder.FUZZY_REWRITE_FIELD;
@@ -71,7 +66,6 @@
7166
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.FIRST;
7267
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.SECOND;
7368
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.THIRD;
74-
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isFoldable;
7569
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isMapExpression;
7670
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isNotNull;
7771
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isNotNullAndFoldable;
@@ -374,41 +368,6 @@ private TypeResolution resolveOptions() {
374368
return TypeResolution.TYPE_RESOLVED;
375369
}
376370

377-
public static void populateOptionsMap(
378-
final MapExpression options,
379-
final Map<String, Object> optionsMap,
380-
final TypeResolutions.ParamOrdinal paramOrdinal,
381-
final String sourceText,
382-
final Map<String, DataType> allowedOptions
383-
) throws InvalidArgumentException {
384-
for (EntryExpression entry : options.entryExpressions()) {
385-
Expression optionExpr = entry.key();
386-
Expression valueExpr = entry.value();
387-
TypeResolution resolution = isFoldable(optionExpr, sourceText, paramOrdinal).and(
388-
isFoldable(valueExpr, sourceText, paramOrdinal)
389-
);
390-
if (resolution.unresolved()) {
391-
throw new InvalidArgumentException(resolution.message());
392-
}
393-
Object optionExprLiteral = ((Literal) optionExpr).value();
394-
Object valueExprLiteral = ((Literal) valueExpr).value();
395-
String optionName = optionExprLiteral instanceof BytesRef br ? br.utf8ToString() : optionExprLiteral.toString();
396-
String optionValue = valueExprLiteral instanceof BytesRef br ? br.utf8ToString() : valueExprLiteral.toString();
397-
// validate the optionExpr is supported
398-
DataType dataType = allowedOptions.get(optionName);
399-
if (dataType == null) {
400-
throw new InvalidArgumentException(
401-
format(null, "Invalid option [{}] in [{}], expected one of {}", optionName, sourceText, allowedOptions.keySet())
402-
);
403-
}
404-
try {
405-
optionsMap.put(optionName, DataTypeConverter.convert(optionValue, dataType));
406-
} catch (InvalidArgumentException e) {
407-
throw new InvalidArgumentException(format(null, "Invalid option [{}] in [{}], {}", optionName, sourceText, e.getMessage()));
408-
}
409-
}
410-
}
411-
412371
private Map<String, Object> matchQueryOptions() throws InvalidArgumentException {
413372
if (options() == null) {
414373
return Map.of(LENIENT_FIELD.getPreferredName(), true);

0 commit comments

Comments
 (0)