Skip to content

Commit 6b0fead

Browse files
committed
More tests
1 parent a3c526e commit 6b0fead

File tree

13 files changed

+68
-20
lines changed

13 files changed

+68
-20
lines changed

server/src/main/java/org/elasticsearch/index/mapper/blockloader/BlockLoaderFunctionConfig.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,19 @@
1919
* transforming loaded values into blocks.
2020
*/
2121
public interface BlockLoaderFunctionConfig {
22-
record Named(String name, Warnings warnings) implements BlockLoaderFunctionConfig {}
22+
record Named(String name, Warnings warnings) implements BlockLoaderFunctionConfig {
23+
@Override
24+
public int hashCode() {
25+
return name.hashCode();
26+
}
27+
28+
@Override
29+
public boolean equals(Object o) {
30+
if (o == null || getClass() != o.getClass()) {
31+
return false;
32+
}
33+
Named named = (Named) o;
34+
return name.equals(named.name);
35+
}
36+
}
2337
}

server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
import org.elasticsearch.index.fielddata.IndexFieldData;
6060
import org.elasticsearch.index.mapper.ArraySourceValueFetcher;
6161
import org.elasticsearch.index.mapper.BlockLoader;
62-
import org.elasticsearch.index.mapper.blockloader.BlockLoaderFunctionConfig;
6362
import org.elasticsearch.index.mapper.BlockSourceReader;
6463
import org.elasticsearch.index.mapper.DocumentParserContext;
6564
import org.elasticsearch.index.mapper.FieldMapper;
@@ -74,6 +73,7 @@
7473
import org.elasticsearch.index.mapper.SourceLoader;
7574
import org.elasticsearch.index.mapper.SourceValueFetcher;
7675
import org.elasticsearch.index.mapper.ValueFetcher;
76+
import org.elasticsearch.index.mapper.blockloader.BlockLoaderFunctionConfig;
7777
import org.elasticsearch.index.mapper.blockloader.docvalues.DenseVectorBlockLoader;
7878
import org.elasticsearch.index.mapper.blockloader.docvalues.DenseVectorBlockLoaderProcessor;
7979
import org.elasticsearch.index.mapper.blockloader.docvalues.DenseVectorFromBinaryBlockLoader;
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,13 @@
77
* License v3.0 only", or the "Server Side Public License, v 1".
88
*/
99

10-
package org.elasticsearch.index.mapper.blockloader.docvalues;
11-
12-
import org.elasticsearch.index.mapper.blockloader.Warnings;
10+
package org.elasticsearch.index.mapper.blockloader;
1311

1412
import java.util.ArrayList;
1513
import java.util.List;
1614

17-
// TODO move me once we have more of these loaders
18-
class MockWarnings implements Warnings {
19-
record MockWarning(Class<? extends Exception> exceptionClass, String message) {}
15+
public class MockWarnings implements Warnings {
16+
public record MockWarning(Class<? extends Exception> exceptionClass, String message) {}
2017

2118
private final List<MockWarning> warnings = new ArrayList<>();
2219

server/src/test/java/org/elasticsearch/index/mapper/blockloader/docvalues/Utf8CodePointsFromOrdsBlockLoaderTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.elasticsearch.index.mapper.BlockLoader;
2121
import org.elasticsearch.index.mapper.KeywordFieldMapper;
2222
import org.elasticsearch.index.mapper.TestBlock;
23+
import org.elasticsearch.index.mapper.blockloader.MockWarnings;
2324
import org.elasticsearch.test.ESTestCase;
2425
import org.hamcrest.Matcher;
2526

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/ShardContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
import org.elasticsearch.compute.data.Block;
1212
import org.elasticsearch.core.RefCounted;
1313
import org.elasticsearch.index.mapper.BlockLoader;
14-
import org.elasticsearch.index.mapper.blockloader.BlockLoaderFunctionConfig;
1514
import org.elasticsearch.index.mapper.MappedFieldType;
1615
import org.elasticsearch.index.mapper.SourceLoader;
16+
import org.elasticsearch.index.mapper.blockloader.BlockLoaderFunctionConfig;
1717
import org.elasticsearch.search.sort.SortAndFormats;
1818
import org.elasticsearch.search.sort.SortBuilder;
1919

x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneSourceOperatorTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@
4040
import org.elasticsearch.core.TimeValue;
4141
import org.elasticsearch.index.cache.query.TrivialQueryCachingPolicy;
4242
import org.elasticsearch.index.mapper.BlockLoader;
43-
import org.elasticsearch.index.mapper.blockloader.BlockLoaderFunctionConfig;
4443
import org.elasticsearch.index.mapper.MappedFieldType;
4544
import org.elasticsearch.index.mapper.NumberFieldMapper;
4645
import org.elasticsearch.index.mapper.SourceLoader;
46+
import org.elasticsearch.index.mapper.blockloader.BlockLoaderFunctionConfig;
4747
import org.elasticsearch.indices.CrankyCircuitBreakerService;
4848
import org.elasticsearch.search.internal.ContextIndexSearcher;
4949
import org.elasticsearch.search.sort.SortAndFormats;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0; you may not use this file except in compliance with the Elastic License
5+
* 2.0.
6+
*/
7+
8+
package org.elasticsearch.xpack.esql.expression.function;
9+
10+
import org.elasticsearch.compute.operator.DriverContext;
11+
import org.elasticsearch.compute.operator.Warnings;
12+
import org.elasticsearch.xpack.esql.core.tree.Source;
13+
14+
public class BlockLoaderWarnings implements org.elasticsearch.index.mapper.blockloader.Warnings {
15+
private final DriverContext.WarningsMode warningsMode;
16+
private final Source source;
17+
private Warnings delegate;
18+
19+
public BlockLoaderWarnings(DriverContext.WarningsMode warningsMode, Source source) {
20+
this.warningsMode = warningsMode;
21+
this.source = source;
22+
}
23+
24+
@Override
25+
public void registerException(Class<? extends Exception> exceptionClass, String message) {
26+
if (delegate == null) {
27+
delegate = Warnings.createOnlyWarnings(
28+
warningsMode,
29+
source.source().getLineNumber(),
30+
source.source().getColumnNumber(),
31+
source.text()
32+
);
33+
}
34+
delegate.registerException(exceptionClass, message);
35+
}
36+
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/Length.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
1313
import org.elasticsearch.common.io.stream.StreamInput;
1414
import org.elasticsearch.compute.ann.Evaluator;
15+
import org.elasticsearch.compute.operator.DriverContext;
1516
import org.elasticsearch.compute.operator.EvalOperator.ExpressionEvaluator;
1617
import org.elasticsearch.index.mapper.blockloader.BlockLoaderFunctionConfig;
1718
import org.elasticsearch.xpack.esql.core.expression.Expression;
1819
import org.elasticsearch.xpack.esql.core.expression.FieldAttribute;
1920
import org.elasticsearch.xpack.esql.core.tree.NodeInfo;
2021
import org.elasticsearch.xpack.esql.core.tree.Source;
2122
import org.elasticsearch.xpack.esql.core.type.DataType;
23+
import org.elasticsearch.xpack.esql.expression.function.BlockLoaderWarnings;
2224
import org.elasticsearch.xpack.esql.expression.function.Example;
2325
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
2426
import org.elasticsearch.xpack.esql.expression.function.Param;
@@ -101,9 +103,8 @@ public Fuse tryFuse(SearchStats stats) {
101103
if (stats.hasDocValues(f.fieldName()) == false) {
102104
return null;
103105
}
104-
return new Fuse(f, new BlockLoaderFunctionConfig.Named("LENGTH", (exceptionClass, message) -> {
105-
throw new IllegalStateException("NOCOMMIT");
106-
}));
106+
BlockLoaderWarnings warnings = new BlockLoaderWarnings(DriverContext.WarningsMode.COLLECT, source());
107+
return new Fuse(f, new BlockLoaderFunctionConfig.Named("LENGTH", warnings));
107108
}
108109
return null;
109110
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/vector/VectorSimilarityFunction.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public void close() {
208208
}
209209

210210
@Override
211-
public Fuse tryFuse(SearchStats stats) {
211+
public final Fuse tryFuse(SearchStats stats) {
212212
// Bail if we're not directly comparing a field with a literal.
213213
Literal literal;
214214
FieldAttribute field;
@@ -229,10 +229,8 @@ public Fuse tryFuse(SearchStats stats) {
229229

230230
List<?> vectorList = (List<?>) literal.value();
231231
float[] vectorArray = new float[vectorList.size()];
232-
int arrayHashCode = 0;
233232
for (int i = 0; i < vectorList.size(); i++) {
234233
vectorArray[i] = ((Number) vectorList.get(i)).floatValue();
235-
arrayHashCode = 31 * arrayHashCode + Float.floatToIntBits(vectorArray[i]);
236234
}
237235

238236
return new Fuse(field, new DenseVectorFieldMapper.VectorSimilarityFunctionConfig(getSimilarityFunction(), vectorArray));

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/LocalLogicalPlanOptimizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
import org.elasticsearch.xpack.esql.common.Failures;
1313
import org.elasticsearch.xpack.esql.optimizer.rules.logical.OptimizerRules;
1414
import org.elasticsearch.xpack.esql.optimizer.rules.logical.ReplaceStringCasingWithInsensitiveRegexMatch;
15+
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.FuseExpressionToFieldLoad;
1516
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.IgnoreNullMetrics;
1617
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.InferIsNotNull;
1718
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.InferNonNullAggConstraint;
18-
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.FuseExpressionToFieldLoad;
1919
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.ReplaceDateTruncBucketWithRoundTo;
2020
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.ReplaceFieldWithConstantOrNull;
2121
import org.elasticsearch.xpack.esql.optimizer.rules.logical.local.ReplaceTopNWithLimitAndSort;

0 commit comments

Comments
 (0)