From 67d688eadffe05090f30080e6dcb76d35cda810d Mon Sep 17 00:00:00 2001 From: Nik Everett Date: Mon, 7 Apr 2025 17:38:46 -0400 Subject: [PATCH] ESQL: Speed up TO_IP (#126338) (#126431) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Speed up the TO_IP method by converting directly from utf-8 encoded strings to the ip encoding. Previously we did: ``` utf-8 -> String -> INetAddress -> ip encoding ``` In a step towards solving #125460 this creates three IP parsing functions, one the rejects leading zeros, one that interprets leading zeros as decimal numbers, and one the interprets leading zeros as octal numbers. IPs have historically been parsed in all three of those ways. This plugs the "rejects leading zeros" parser into `TO_IP` because that's the behavior it had before. Here is the performance: ``` Benchmark Score Error Units leadingZerosAreDecimal 14.007 ± 0.093 ns/op leadingZerosAreOctal 15.020 ± 0.373 ns/op leadingZerosRejected 14.176 ± 3.861 ns/op original 32.950 ± 1.062 ns/op ``` So this is roughly 45% faster than what we had. This includes a big chunk of #124676 - but not the behavior change - just the code that allowed it. --- benchmarks/README.md | 36 ++- .../compute/operator/ParseIpBenchmark.java | 61 +++++ docs/changelog/126338.yaml | 5 + ...AggregatorFunctionSupplierImplementer.java | 11 +- .../compute/gen/ConsumeProcessor.java | 1 + .../gen/ConvertEvaluatorImplementer.java | 114 ++++----- .../compute/gen/EvaluatorImplementer.java | 175 +++++++------ .../compute/gen/EvaluatorProcessor.java | 1 + ...arseIpLeadingZerosAreDecimalEvaluator.java | 149 +++++++++++ ...ParseIpLeadingZerosAreOctalEvaluator.java} | 56 +++-- .../ParseIpLeadingZerosRejectedEvaluator.java | 149 +++++++++++ .../convert/ToBooleanFromDoubleEvaluator.java | 36 ++- .../convert/ToBooleanFromIntEvaluator.java | 36 ++- .../convert/ToBooleanFromLongEvaluator.java | 36 ++- .../convert/ToBooleanFromStringEvaluator.java | 36 ++- .../ToBooleanFromUnsignedLongEvaluator.java | 36 ++- .../ToCartesianPointFromStringEvaluator.java | 36 ++- .../ToCartesianShapeFromStringEvaluator.java | 36 ++- .../ToDateNanosFromDatetimeEvaluator.java | 36 ++- .../ToDateNanosFromDoubleEvaluator.java | 36 ++- .../convert/ToDateNanosFromLongEvaluator.java | 36 ++- .../ToDateNanosFromStringEvaluator.java | 36 ++- .../ToDatetimeFromDateNanosEvaluator.java | 36 ++- .../ToDatetimeFromStringEvaluator.java | 36 ++- .../scalar/convert/ToDegreesEvaluator.java | 36 ++- .../convert/ToDoubleFromBooleanEvaluator.java | 36 ++- .../convert/ToDoubleFromIntEvaluator.java | 36 ++- .../convert/ToDoubleFromLongEvaluator.java | 36 ++- .../convert/ToDoubleFromStringEvaluator.java | 36 ++- .../ToDoubleFromUnsignedLongEvaluator.java | 36 ++- .../ToGeoPointFromStringEvaluator.java | 36 ++- .../ToGeoShapeFromStringEvaluator.java | 36 ++- .../ToIntegerFromBooleanEvaluator.java | 36 ++- .../convert/ToIntegerFromDoubleEvaluator.java | 36 ++- .../convert/ToIntegerFromLongEvaluator.java | 36 ++- .../convert/ToIntegerFromStringEvaluator.java | 36 ++- .../ToIntegerFromUnsignedLongEvaluator.java | 36 ++- .../convert/ToLongFromBooleanEvaluator.java | 36 ++- .../convert/ToLongFromDoubleEvaluator.java | 36 ++- .../convert/ToLongFromIntEvaluator.java | 36 ++- .../convert/ToLongFromStringEvaluator.java | 36 ++- .../ToLongFromUnsignedLongEvaluator.java | 36 ++- .../scalar/convert/ToRadiansEvaluator.java | 36 ++- .../convert/ToStringFromBooleanEvaluator.java | 36 ++- .../ToStringFromCartesianPointEvaluator.java | 36 ++- .../ToStringFromCartesianShapeEvaluator.java | 36 ++- .../ToStringFromDateNanosEvaluator.java | 36 ++- .../ToStringFromDatetimeEvaluator.java | 36 ++- .../convert/ToStringFromDoubleEvaluator.java | 36 ++- .../ToStringFromGeoPointEvaluator.java | 36 ++- .../ToStringFromGeoShapeEvaluator.java | 36 ++- .../convert/ToStringFromIPEvaluator.java | 36 ++- .../convert/ToStringFromIntEvaluator.java | 36 ++- .../convert/ToStringFromLongEvaluator.java | 36 ++- .../ToStringFromUnsignedLongEvaluator.java | 36 ++- .../convert/ToStringFromVersionEvaluator.java | 36 ++- .../ToUnsignedLongFromBooleanEvaluator.java | 36 ++- .../ToUnsignedLongFromDoubleEvaluator.java | 36 ++- .../ToUnsignedLongFromIntEvaluator.java | 36 ++- .../ToUnsignedLongFromLongEvaluator.java | 36 ++- .../ToUnsignedLongFromStringEvaluator.java | 36 ++- .../convert/ToVersionFromStringEvaluator.java | 36 ++- .../spatial/StEnvelopeFromWKBEvaluator.java | 36 ++- .../StEnvelopeFromWKBGeoEvaluator.java | 36 ++- .../scalar/spatial/StXFromWKBEvaluator.java | 36 ++- .../spatial/StXMaxFromWKBEvaluator.java | 36 ++- .../spatial/StXMaxFromWKBGeoEvaluator.java | 36 ++- .../spatial/StXMinFromWKBEvaluator.java | 36 ++- .../spatial/StXMinFromWKBGeoEvaluator.java | 36 ++- .../scalar/spatial/StYFromWKBEvaluator.java | 36 ++- .../spatial/StYMaxFromWKBEvaluator.java | 36 ++- .../spatial/StYMaxFromWKBGeoEvaluator.java | 36 ++- .../spatial/StYMinFromWKBEvaluator.java | 36 ++- .../spatial/StYMinFromWKBGeoEvaluator.java | 36 ++- .../convert/AbstractConvertFunction.java | 30 +-- .../function/scalar/convert/ParseIp.java | 232 ++++++++++++++++++ .../function/scalar/convert/ToBoolean.java | 2 +- .../scalar/convert/ToCartesianPoint.java | 2 +- .../scalar/convert/ToCartesianShape.java | 4 +- .../function/scalar/convert/ToDateNanos.java | 2 +- .../function/scalar/convert/ToDatetime.java | 4 +- .../function/scalar/convert/ToDegrees.java | 6 +- .../function/scalar/convert/ToDouble.java | 4 +- .../function/scalar/convert/ToGeoPoint.java | 2 +- .../function/scalar/convert/ToGeoShape.java | 4 +- .../function/scalar/convert/ToIP.java | 17 +- .../function/scalar/convert/ToInteger.java | 4 +- .../function/scalar/convert/ToLong.java | 8 +- .../function/scalar/convert/ToRadians.java | 6 +- .../function/scalar/convert/ToString.java | 6 +- .../scalar/convert/ToUnsignedLong.java | 2 +- .../function/scalar/convert/ToVersion.java | 2 +- .../function/scalar/spatial/StEnvelope.java | 4 +- .../function/scalar/spatial/StX.java | 2 +- .../function/scalar/spatial/StXMax.java | 4 +- .../function/scalar/spatial/StXMin.java | 4 +- .../function/scalar/spatial/StY.java | 2 +- .../function/scalar/spatial/StYMax.java | 4 +- .../function/scalar/spatial/StYMin.java | 4 +- .../function/scalar/convert/ParseIpTests.java | 206 ++++++++++++++++ .../scalar/convert/ToBooleanTests.java | 10 +- .../scalar/convert/ToCartesianPointTests.java | 2 +- .../scalar/convert/ToCartesianShapeTests.java | 2 +- .../scalar/convert/ToDateNanosTests.java | 16 +- .../scalar/convert/ToDatetimeTests.java | 20 +- .../scalar/convert/ToDegreesTests.java | 18 +- .../scalar/convert/ToDoubleTests.java | 22 +- .../scalar/convert/ToGeoPointTests.java | 2 +- .../scalar/convert/ToGeoShapeTests.java | 2 +- .../function/scalar/convert/ToIPTests.java | 2 +- .../scalar/convert/ToIntegerTests.java | 36 +-- .../function/scalar/convert/ToLongTests.java | 30 +-- .../scalar/convert/ToRadiansTests.java | 16 +- .../scalar/convert/ToStringTests.java | 26 +- .../scalar/convert/ToUnsignedLongTests.java | 56 +++-- .../scalar/convert/ToVersionTests.java | 2 +- .../scalar/spatial/StEnvelopeTests.java | 4 +- .../function/scalar/spatial/StXMaxTests.java | 4 +- .../function/scalar/spatial/StXMinTests.java | 4 +- .../function/scalar/spatial/StXTests.java | 2 +- .../function/scalar/spatial/StYMaxTests.java | 4 +- .../function/scalar/spatial/StYMinTests.java | 4 +- .../function/scalar/spatial/StYTests.java | 2 +- 123 files changed, 2810 insertions(+), 1069 deletions(-) create mode 100644 benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/ParseIpBenchmark.java create mode 100644 docs/changelog/126338.yaml create mode 100644 x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreDecimalEvaluator.java rename x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/{ToIPFromStringEvaluator.java => ParseIpLeadingZerosAreOctalEvaluator.java} (66%) create mode 100644 x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosRejectedEvaluator.java create mode 100644 x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java create mode 100644 x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java diff --git a/benchmarks/README.md b/benchmarks/README.md index 0cf95a2e81b9..af72d16d2ad4 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -82,19 +82,21 @@ To get realistic results, you should exercise care when running benchmarks. Here NOTE: Linux only. Sorry Mac and Windows. Disassembling is fun! Maybe not always useful, but always fun! Generally, you'll want to install `perf` and the JDK's `hsdis`. -`perf` is generally available via `apg-get install perf` or `pacman -S perf`. `hsdis` you'll want to compile from source. is a little more involved. This worked +`perf` is generally available via `apg-get install perf` or `pacman -S perf linux-tools`. `hsdis` you'll want to compile from source. is a little more involved. This worked on 2020-08-01: ``` git clone git@github.com:openjdk/jdk.git cd jdk -git checkout jdk-17-ga -cd src/utils/hsdis +git checkout jdk-24-ga # Get a known good binutils wget https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.gz tar xf binutils-2.35.tar.gz -make BINUTILS=binutils-2.35 ARCH=amd64 -sudo cp build/linux-amd64/hsdis-amd64.so /usr/lib/jvm/java-17-openjdk/lib/server/ +bash configure --with-hsdis=binutils --with-binutils-src=binutils-2.35 \ + --with-boot-jdk=~/.gradle/jdks/oracle_corporation-24-amd64-linux.2 +make build-hsdis +cp ./build/linux-x86_64-server-release/jdk/lib/hsdis-amd64.so \ + ~/.gradle/jdks/oracle_corporation-24-amd64-linux.2/lib/hsdis.so ``` If you want to disassemble a single method do something like this: @@ -105,6 +107,30 @@ gradlew -p benchmarks run --args ' MemoryStatsBenchmark -jvmArgs "-XX:+UnlockDia If you want `perf` to find the hot methods for you, then do add `-prof perfasm`. +NOTE: `perfasm` will need more access: +``` +sudo bash +echo -1 > /proc/sys/kernel/perf_event_paranoid +exit +``` + +If you get warnings like: +``` +The perf event count is suspiciously low (0). +``` +then check if you are bumping into [this](https://man.archlinux.org/man/perf-stat.1.en#INTEL_HYBRID_SUPPORT) +by running: +``` +perf stat -B dd if=/dev/zero of=/dev/null count=1000000 +``` + +If you see lines like: +``` + 765019980 cpu_atom/cycles/ # 1.728 GHz (0.60%) + 2258845959 cpu_core/cycles/ # 5.103 GHz (99.18%) +``` +then `perf` is just not going to work for you. + ## Async Profiler Note: Linux and Mac only. Sorry Windows. diff --git a/benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/ParseIpBenchmark.java b/benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/ParseIpBenchmark.java new file mode 100644 index 000000000000..73e3986cc165 --- /dev/null +++ b/benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/ParseIpBenchmark.java @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.benchmark.compute.operator; + +import org.apache.lucene.document.InetAddressPoint; +import org.apache.lucene.util.BytesRef; +import org.elasticsearch.common.breaker.NoopCircuitBreaker; +import org.elasticsearch.common.network.InetAddresses; +import org.elasticsearch.compute.operator.BreakingBytesRefBuilder; +import org.elasticsearch.xpack.esql.expression.function.scalar.convert.ParseIp; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; + +import java.net.InetAddress; +import java.util.concurrent.TimeUnit; + +@Warmup(iterations = 5) +@Measurement(iterations = 7) +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +@State(Scope.Thread) +@Fork(1) +public class ParseIpBenchmark { + private final BytesRef ip = new BytesRef("192.168.0.1"); + private final BreakingBytesRefBuilder scratch = ParseIp.buildScratch(new NoopCircuitBreaker("request")); + + @Benchmark + public BytesRef leadingZerosRejected() { + return ParseIp.leadingZerosRejected(ip, scratch); + } + + @Benchmark + public BytesRef leadingZerosAreDecimal() { + return ParseIp.leadingZerosAreDecimal(ip, scratch); + } + + @Benchmark + public BytesRef leadingZerosAreOctal() { + return ParseIp.leadingZerosAreOctal(ip, scratch); + } + + @Benchmark + public BytesRef original() { + InetAddress inetAddress = InetAddresses.forString(ip.utf8ToString()); + return new BytesRef(InetAddressPoint.encode(inetAddress)); + } +} diff --git a/docs/changelog/126338.yaml b/docs/changelog/126338.yaml new file mode 100644 index 000000000000..b37086dd7495 --- /dev/null +++ b/docs/changelog/126338.yaml @@ -0,0 +1,5 @@ +pr: 126338 +summary: Speed up TO_IP +area: ES|QL +type: enhancement +issues: [] diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/AggregatorFunctionSupplierImplementer.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/AggregatorFunctionSupplierImplementer.java index ec4bf2bb3907..52e4e66f3848 100644 --- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/AggregatorFunctionSupplierImplementer.java +++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/AggregatorFunctionSupplierImplementer.java @@ -34,6 +34,7 @@ import static org.elasticsearch.compute.gen.Types.DRIVER_CONTEXT; import static org.elasticsearch.compute.gen.Types.LIST_AGG_FUNC_DESC; import static org.elasticsearch.compute.gen.Types.LIST_INTEGER; import static org.elasticsearch.compute.gen.Types.STRING; +import static org.elasticsearch.compute.gen.Types.WARNINGS; /** * Implements "AggregationFunctionSupplier" from a class annotated with both @@ -161,8 +162,9 @@ public class AggregatorFunctionSupplierImplementer { if (hasWarnings) { builder.addStatement( - "var warnings = Warnings.createWarnings(driverContext.warningsMode(), " - + "warningsLineNumber, warningsColumnNumber, warningsSourceText)" + "var warnings = $T.createWarnings(driverContext.warningsMode(), " + + "warningsLineNumber, warningsColumnNumber, warningsSourceText)", + WARNINGS ); } @@ -187,8 +189,9 @@ public class AggregatorFunctionSupplierImplementer { if (hasWarnings) { builder.addStatement( - "var warnings = Warnings.createWarnings(driverContext.warningsMode(), " - + "warningsLineNumber, warningsColumnNumber, warningsSourceText)" + "var warnings = $T.createWarnings(driverContext.warningsMode(), " + + "warningsLineNumber, warningsColumnNumber, warningsSourceText)", + WARNINGS ); } diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java index db18ff98e0bc..5d2de94c8665 100644 --- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java +++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java @@ -42,6 +42,7 @@ public class ConsumeProcessor implements Processor { "org.elasticsearch.xpack.esql.expression.function.MapParam", "org.elasticsearch.rest.ServerlessScope", "org.elasticsearch.xcontent.ParserConstructor", + "org.elasticsearch.core.UpdateForV9", Fixed.class.getName() ); } diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConvertEvaluatorImplementer.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConvertEvaluatorImplementer.java index c58684c5d06c..3f249736b6db 100644 --- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConvertEvaluatorImplementer.java +++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConvertEvaluatorImplementer.java @@ -23,7 +23,6 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeMirror; import javax.lang.model.util.Elements; -import static org.elasticsearch.compute.gen.Methods.appendMethod; import static org.elasticsearch.compute.gen.Methods.buildFromFactory; import static org.elasticsearch.compute.gen.Methods.getMethod; import static org.elasticsearch.compute.gen.Types.ABSTRACT_CONVERT_FUNCTION_EVALUATOR; @@ -41,27 +40,34 @@ import static org.elasticsearch.compute.gen.Types.vectorType; public class ConvertEvaluatorImplementer { private final TypeElement declarationType; - private final ExecutableElement processFunction; + private final EvaluatorImplementer.ProcessFunction processFunction; private final String extraName; private final ClassName implementation; private final TypeName argumentType; - private final TypeName resultType; private final List warnExceptions; public ConvertEvaluatorImplementer( Elements elements, + javax.lang.model.util.Types types, ExecutableElement processFunction, String extraName, List warnExceptions ) { this.declarationType = (TypeElement) processFunction.getEnclosingElement(); - this.processFunction = processFunction; - if (processFunction.getParameters().size() != 1) { - throw new IllegalArgumentException("processing function should have exactly one parameter"); + this.processFunction = new EvaluatorImplementer.ProcessFunction(types, processFunction, warnExceptions); + + if (this.processFunction.args.getFirst() instanceof EvaluatorImplementer.StandardProcessFunctionArg == false) { + throw new IllegalArgumentException("first argument must be the field to process"); } + for (int a = 1; a < this.processFunction.args.size(); a++) { + if (this.processFunction.args.get(a) instanceof EvaluatorImplementer.FixedProcessFunctionArg == false) { + throw new IllegalArgumentException("fixed function args supported after the first"); + // TODO support more function types when we need them + } + } + this.extraName = extraName; this.argumentType = TypeName.get(processFunction.getParameters().get(0).asType()); - this.resultType = TypeName.get(processFunction.getReturnType()); this.warnExceptions = warnExceptions; this.implementation = ClassName.get( @@ -87,29 +93,36 @@ public class ConvertEvaluatorImplementer { builder.addModifiers(Modifier.PUBLIC, Modifier.FINAL); builder.superclass(ABSTRACT_CONVERT_FUNCTION_EVALUATOR); + for (EvaluatorImplementer.ProcessFunctionArg a : processFunction.args) { + a.declareField(builder); + } builder.addMethod(ctor()); - builder.addMethod(name()); + builder.addMethod(next()); builder.addMethod(evalVector()); builder.addMethod(evalValue(true)); builder.addMethod(evalBlock()); builder.addMethod(evalValue(false)); + builder.addMethod(processFunction.toStringMethod(implementation)); + builder.addMethod(processFunction.close()); builder.addType(factory()); return builder.build(); } private MethodSpec ctor() { MethodSpec.Builder builder = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC); - builder.addParameter(EXPRESSION_EVALUATOR, "field"); builder.addParameter(SOURCE, "source"); + builder.addStatement("super(driverContext, source)"); + for (EvaluatorImplementer.ProcessFunctionArg a : processFunction.args) { + a.implementCtor(builder); + } builder.addParameter(DRIVER_CONTEXT, "driverContext"); - builder.addStatement("super(driverContext, field, source)"); return builder.build(); } - private MethodSpec name() { - MethodSpec.Builder builder = MethodSpec.methodBuilder("name").addModifiers(Modifier.PUBLIC); - builder.addAnnotation(Override.class).returns(String.class); - builder.addStatement("return $S", declarationType.getSimpleName() + extraName); + private MethodSpec next() { + MethodSpec.Builder builder = MethodSpec.methodBuilder("next").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC); + builder.returns(EXPRESSION_EVALUATOR); + builder.addStatement("return $N", ((EvaluatorImplementer.StandardProcessFunctionArg) processFunction.args.getFirst()).name()); return builder.build(); } @@ -129,7 +142,7 @@ public class ConvertEvaluatorImplementer { builder.beginControlFlow("if (vector.isConstant())"); { catchingWarnExceptions(builder, () -> { - var constVectType = blockType(resultType); + var constVectType = processFunction.resultDataType(true); builder.addStatement( "return driverContext.blockFactory().newConstant$TWith($N, positionCount)", constVectType, @@ -139,7 +152,7 @@ public class ConvertEvaluatorImplementer { } builder.endControlFlow(); - ClassName resultBuilderType = builderType(blockType(resultType)); + ClassName resultBuilderType = builderType(processFunction.resultDataType(true)); builder.beginControlFlow( "try ($T builder = driverContext.blockFactory().$L(positionCount))", resultBuilderType, @@ -150,7 +163,11 @@ public class ConvertEvaluatorImplementer { { catchingWarnExceptions( builder, - () -> builder.addStatement("builder.$L($N)", appendMethod(resultType), evalValueCall("vector", "p", scratchPadName)), + () -> builder.addStatement( + "builder.$L($N)", + processFunction.appendMethod(), + evalValueCall("vector", "p", scratchPadName) + ), () -> builder.addStatement("builder.appendNull()") ); } @@ -185,7 +202,7 @@ public class ConvertEvaluatorImplementer { TypeName blockType = blockType(argumentType); builder.addStatement("$T block = ($T) b", blockType, blockType); builder.addStatement("int positionCount = block.getPositionCount()"); - TypeName resultBuilderType = builderType(blockType(resultType)); + TypeName resultBuilderType = builderType(processFunction.resultDataType(true)); builder.beginControlFlow( "try ($T builder = driverContext.blockFactory().$L(positionCount))", resultBuilderType, @@ -196,7 +213,7 @@ public class ConvertEvaluatorImplementer { builder.addStatement("BytesRef $N = new BytesRef()", scratchPadName); } - String appendMethod = appendMethod(resultType); + String appendMethod = processFunction.appendMethod(); builder.beginControlFlow("for (int p = 0; p < positionCount; p++)"); { builder.addStatement("int valueCount = block.getValueCount(p)"); @@ -204,11 +221,10 @@ public class ConvertEvaluatorImplementer { builder.addStatement("int end = start + valueCount"); builder.addStatement("boolean positionOpened = false"); builder.addStatement("boolean valuesAppended = false"); - // builder.addStatement("builder.beginPositionEntry()"); builder.beginControlFlow("for (int i = start; i < end; i++)"); { catchingWarnExceptions(builder, () -> { - builder.addStatement("$T value = $N", resultType, evalValueCall("block", "i", scratchPadName)); + builder.addStatement("$T value = $N", processFunction.returnType(), evalValueCall("block", "i", scratchPadName)); builder.beginControlFlow("if (positionOpened == false && valueCount > 1)"); { builder.addStatement("builder.beginPositionEntry()"); @@ -253,8 +269,8 @@ public class ConvertEvaluatorImplementer { private MethodSpec evalValue(boolean forVector) { MethodSpec.Builder builder = MethodSpec.methodBuilder("evalValue") - .addModifiers(Modifier.PRIVATE, Modifier.STATIC) - .returns(resultType); + .addModifiers(Modifier.PRIVATE) + .returns(processFunction.returnType()); if (forVector) { builder.addParameter(vectorType(argumentType), "container"); @@ -269,8 +285,17 @@ public class ConvertEvaluatorImplementer { builder.addStatement("$T value = container.$N(index)", argumentType, getMethod(argumentType)); } - builder.addStatement("return $T.$N(value)", declarationType, processFunction.getSimpleName()); - + StringBuilder pattern = new StringBuilder(); + List args = new ArrayList<>(); + pattern.append("return $T.$N(value"); + args.add(declarationType); + args.add(processFunction.function.getSimpleName()); + for (int a = 1; a < processFunction.args.size(); a++) { + pattern.append(", "); + processFunction.args.get(a).buildInvocation(pattern, args, false /* block style parameter should be unused */); + } + pattern.append(")"); + builder.addStatement(pattern.toString(), args.toArray()); return builder.build(); } @@ -280,42 +305,11 @@ public class ConvertEvaluatorImplementer { builder.addModifiers(Modifier.PUBLIC, Modifier.STATIC); builder.addField(SOURCE, "source", Modifier.PRIVATE, Modifier.FINAL); - builder.addField(EXPRESSION_EVALUATOR_FACTORY, "field", Modifier.PRIVATE, Modifier.FINAL); + processFunction.args.forEach(a -> a.declareFactoryField(builder)); - builder.addMethod(factoryCtor()); - builder.addMethod(factoryGet()); - builder.addMethod(factoryToString()); - return builder.build(); - } - - private MethodSpec factoryCtor() { - MethodSpec.Builder builder = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC); - builder.addParameter(EXPRESSION_EVALUATOR_FACTORY, "field"); - builder.addParameter(SOURCE, "source"); - builder.addStatement("this.field = field"); - builder.addStatement("this.source = source"); - return builder.build(); - } - - private MethodSpec factoryGet() { - MethodSpec.Builder builder = MethodSpec.methodBuilder("get").addAnnotation(Override.class); - builder.addModifiers(Modifier.PUBLIC); - builder.addParameter(DRIVER_CONTEXT, "context"); - builder.returns(implementation); - - List args = new ArrayList<>(); - args.add("field.get(context)"); - args.add("source"); - args.add("context"); - builder.addStatement("return new $T($L)", implementation, args.stream().collect(Collectors.joining(", "))); - return builder.build(); - } - - private MethodSpec factoryToString() { - MethodSpec.Builder builder = MethodSpec.methodBuilder("toString").addAnnotation(Override.class); - builder.addModifiers(Modifier.PUBLIC); - builder.returns(String.class); - builder.addStatement("return $S + field + $S", declarationType.getSimpleName() + extraName + "Evaluator[field=", "]"); + builder.addMethod(processFunction.factoryCtor()); + builder.addMethod(processFunction.factoryGet(implementation)); + builder.addMethod(processFunction.toStringMethod(implementation)); return builder.build(); } } diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorImplementer.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorImplementer.java index f0044ae4774f..018eadd42b44 100644 --- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorImplementer.java +++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorImplementer.java @@ -21,6 +21,7 @@ import org.elasticsearch.compute.ann.Fixed.Scope; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; @@ -33,7 +34,6 @@ import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; import javax.lang.model.util.Elements; -import static org.elasticsearch.compute.gen.Methods.appendMethod; import static org.elasticsearch.compute.gen.Methods.buildFromFactory; import static org.elasticsearch.compute.gen.Methods.getMethod; import static org.elasticsearch.compute.gen.Types.BLOCK; @@ -71,7 +71,7 @@ public class EvaluatorImplementer { List warnExceptions ) { this.declarationType = (TypeElement) processFunction.getEnclosingElement(); - this.processFunction = new ProcessFunction(elements, types, processFunction, warnExceptions); + this.processFunction = new ProcessFunction(types, processFunction, warnExceptions); this.implementation = ClassName.get( elements.getPackageOf(declarationType).toString(), @@ -99,7 +99,7 @@ public class EvaluatorImplementer { builder.addType(factory()); builder.addField(SOURCE, "source", Modifier.PRIVATE, Modifier.FINAL); - processFunction.args.stream().forEach(a -> a.declareField(builder)); + processFunction.args.forEach(a -> a.declareField(builder)); builder.addField(DRIVER_CONTEXT, "driverContext", Modifier.PRIVATE, Modifier.FINAL); builder.addField(WARNINGS, "warnings", Modifier.PRIVATE); @@ -117,8 +117,8 @@ public class EvaluatorImplementer { } builder.addMethod(realEval(false)); } - builder.addMethod(toStringMethod()); - builder.addMethod(close()); + builder.addMethod(processFunction.toStringMethod(implementation)); + builder.addMethod(processFunction.close()); builder.addMethod(warnings()); return builder.build(); } @@ -238,7 +238,7 @@ public class EvaluatorImplementer { String builtPattern; if (processFunction.builderArg == null) { builtPattern = vectorize ? "result.$L(p, " + pattern + ")" : "result.$L(" + pattern + ")"; - args.add(0, appendMethod(resultDataType)); + args.add(0, processFunction.appendMethod()); } else { builtPattern = pattern.toString(); } @@ -290,35 +290,6 @@ public class EvaluatorImplementer { builder.endControlFlow(); } - private MethodSpec toStringMethod() { - MethodSpec.Builder builder = MethodSpec.methodBuilder("toString").addAnnotation(Override.class); - builder.addModifiers(Modifier.PUBLIC).returns(String.class); - - StringBuilder pattern = new StringBuilder(); - List args = new ArrayList<>(); - pattern.append("return $S"); - args.add(implementation.simpleName() + "["); - processFunction.args.stream().forEach(a -> a.buildToStringInvocation(pattern, args, args.size() > 2 ? ", " : "")); - pattern.append(" + $S"); - args.add("]"); - builder.addStatement(pattern.toString(), args.toArray()); - return builder.build(); - } - - private MethodSpec close() { - MethodSpec.Builder builder = MethodSpec.methodBuilder("close").addAnnotation(Override.class); - builder.addModifiers(Modifier.PUBLIC); - - List invocations = processFunction.args.stream().map(ProcessFunctionArg::closeInvocation).filter(s -> s != null).toList(); - if (invocations.isEmpty() == false) { - builder.addStatement( - "$T.closeExpectNoException(" + invocations.stream().collect(Collectors.joining(", ")) + ")", - Types.RELEASABLES - ); - } - return builder.build(); - } - static MethodSpec warnings() { MethodSpec.Builder builder = MethodSpec.methodBuilder("warnings"); builder.addModifiers(Modifier.PRIVATE).returns(WARNINGS); @@ -343,42 +314,14 @@ public class EvaluatorImplementer { builder.addField(SOURCE, "source", Modifier.PRIVATE, Modifier.FINAL); processFunction.args.stream().forEach(a -> a.declareFactoryField(builder)); - builder.addMethod(factoryCtor()); - builder.addMethod(factoryGet()); - builder.addMethod(toStringMethod()); + builder.addMethod(processFunction.factoryCtor()); + builder.addMethod(processFunction.factoryGet(implementation)); + builder.addMethod(processFunction.toStringMethod(implementation)); return builder.build(); } - private MethodSpec factoryCtor() { - MethodSpec.Builder builder = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC); - builder.addParameter(SOURCE, "source"); - builder.addStatement("this.source = source"); - processFunction.args.stream().forEach(a -> a.implementFactoryCtor(builder)); - - return builder.build(); - } - - private MethodSpec factoryGet() { - MethodSpec.Builder builder = MethodSpec.methodBuilder("get").addAnnotation(Override.class); - builder.addModifiers(Modifier.PUBLIC); - builder.addParameter(DRIVER_CONTEXT, "context"); - builder.returns(implementation); - - List args = new ArrayList<>(); - args.add("source"); - for (ProcessFunctionArg arg : processFunction.args) { - String invocation = arg.factoryInvocation(builder); - if (invocation != null) { - args.add(invocation); - } - } - args.add("context"); - builder.addStatement("return new $T($L)", implementation, args.stream().collect(Collectors.joining(", "))); - return builder.build(); - } - - private interface ProcessFunctionArg { + interface ProcessFunctionArg { /** * Type containing the actual data for a page of values for this field. Usually a * Block or Vector, but for fixed fields will be the original fixed type. @@ -470,7 +413,7 @@ public class EvaluatorImplementer { String closeInvocation(); } - private record StandardProcessFunctionArg(TypeName type, String name) implements ProcessFunctionArg { + record StandardProcessFunctionArg(TypeName type, String name) implements ProcessFunctionArg { @Override public TypeName dataType(boolean blockStyle) { if (blockStyle) { @@ -726,7 +669,7 @@ public class EvaluatorImplementer { } } - private record FixedProcessFunctionArg(TypeName type, String name, boolean includeInToString, Scope scope, boolean releasable) + record FixedProcessFunctionArg(TypeName type, String name, boolean includeInToString, Scope scope, boolean releasable) implements ProcessFunctionArg { @Override @@ -999,20 +942,15 @@ public class EvaluatorImplementer { } } - private static class ProcessFunction { - private final ExecutableElement function; - private final List args; + static class ProcessFunction { + final ExecutableElement function; + final List args; private final BuilderProcessFunctionArg builderArg; private final List warnExceptions; private boolean hasBlockType; - private ProcessFunction( - Elements elements, - javax.lang.model.util.Types types, - ExecutableElement function, - List warnExceptions - ) { + ProcessFunction(javax.lang.model.util.Types types, ExecutableElement function, List warnExceptions) { this.function = function; args = new ArrayList<>(); BuilderProcessFunctionArg builderArg = null; @@ -1063,12 +1001,89 @@ public class EvaluatorImplementer { this.warnExceptions = warnExceptions; } - private ClassName resultDataType(boolean blockStyle) { + TypeName returnType() { + return TypeName.get(function.getReturnType()); + } + + ClassName resultDataType(boolean blockStyle) { if (builderArg != null) { return builderArg.type.enclosingClassName(); } boolean useBlockStyle = blockStyle || warnExceptions.isEmpty() == false; - return useBlockStyle ? blockType(TypeName.get(function.getReturnType())) : vectorType(TypeName.get(function.getReturnType())); + return useBlockStyle ? blockType(returnType()) : vectorType(returnType()); + } + + String appendMethod() { + return Methods.appendMethod(returnType()); + } + + @Override + public String toString() { + return "ProcessFunction{" + + "function=" + + function + + ", args=" + + args + + ", builderArg=" + + builderArg + + ", warnExceptions=" + + warnExceptions + + ", hasBlockType=" + + hasBlockType + + '}'; + } + + MethodSpec toStringMethod(ClassName implementation) { + MethodSpec.Builder builder = MethodSpec.methodBuilder("toString").addAnnotation(Override.class); + builder.addModifiers(Modifier.PUBLIC).returns(String.class); + + StringBuilder pattern = new StringBuilder(); + List args = new ArrayList<>(); + pattern.append("return $S"); + args.add(implementation.simpleName() + "["); + this.args.forEach(a -> a.buildToStringInvocation(pattern, args, args.size() > 2 ? ", " : "")); + pattern.append(" + $S"); + args.add("]"); + builder.addStatement(pattern.toString(), args.toArray()); + return builder.build(); + } + + MethodSpec factoryCtor() { + MethodSpec.Builder builder = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC); + builder.addParameter(SOURCE, "source"); + builder.addStatement("this.source = source"); + args.stream().forEach(a -> a.implementFactoryCtor(builder)); + return builder.build(); + } + + MethodSpec factoryGet(ClassName implementation) { + MethodSpec.Builder builder = MethodSpec.methodBuilder("get").addAnnotation(Override.class); + builder.addModifiers(Modifier.PUBLIC); + builder.addParameter(DRIVER_CONTEXT, "context"); + builder.returns(implementation); + + List args = new ArrayList<>(); + args.add("source"); + for (ProcessFunctionArg arg : this.args) { + String invocation = arg.factoryInvocation(builder); + if (invocation != null) { + args.add(invocation); + } + } + args.add("context"); + builder.addStatement("return new $T($L)", implementation, String.join(", ", args)); + return builder.build(); + } + + MethodSpec close() { + MethodSpec.Builder builder = MethodSpec.methodBuilder("close").addAnnotation(Override.class); + builder.addModifiers(Modifier.PUBLIC); + + List invocations = args.stream().map(ProcessFunctionArg::closeInvocation).filter(Objects::nonNull).toList(); + if (invocations.isEmpty() == false) { + builder.addStatement("$T.closeExpectNoException(" + String.join(", ", invocations) + ")", Types.RELEASABLES); + } + return builder.build(); } } diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorProcessor.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorProcessor.java index ec3690883366..1df89e974d19 100644 --- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorProcessor.java +++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorProcessor.java @@ -121,6 +121,7 @@ public class EvaluatorProcessor implements Processor { "evaluator", new ConvertEvaluatorImplementer( env.getElementUtils(), + env.getTypeUtils(), (ExecutableElement) evaluatorMethod, convertEvaluatorAnn.extraName(), warnExceptionsTypes diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreDecimalEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreDecimalEvaluator.java new file mode 100644 index 000000000000..b4f732dab404 --- /dev/null +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreDecimalEvaluator.java @@ -0,0 +1,149 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License +// 2.0; you may not use this file except in compliance with the Elastic License +// 2.0. +package org.elasticsearch.xpack.esql.expression.function.scalar.convert; + +import java.lang.IllegalArgumentException; +import java.lang.Override; +import java.lang.String; +import java.util.function.Function; +import org.apache.lucene.util.BytesRef; +import org.elasticsearch.compute.data.Block; +import org.elasticsearch.compute.data.BytesRefBlock; +import org.elasticsearch.compute.data.BytesRefVector; +import org.elasticsearch.compute.data.Vector; +import org.elasticsearch.compute.operator.BreakingBytesRefBuilder; +import org.elasticsearch.compute.operator.DriverContext; +import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; +import org.elasticsearch.xpack.esql.core.tree.Source; + +/** + * {@link EvalOperator.ExpressionEvaluator} implementation for {@link ParseIp}. + * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. + */ +public final class ParseIpLeadingZerosAreDecimalEvaluator extends AbstractConvertFunction.AbstractEvaluator { + private final EvalOperator.ExpressionEvaluator string; + + private final BreakingBytesRefBuilder scratch; + + public ParseIpLeadingZerosAreDecimalEvaluator(Source source, + EvalOperator.ExpressionEvaluator string, BreakingBytesRefBuilder scratch, + DriverContext driverContext) { + super(driverContext, source); + this.string = string; + this.scratch = scratch; + } + + @Override + public EvalOperator.ExpressionEvaluator next() { + return string; + } + + @Override + public Block evalVector(Vector v) { + BytesRefVector vector = (BytesRefVector) v; + int positionCount = v.getPositionCount(); + BytesRef scratchPad = new BytesRef(); + if (vector.isConstant()) { + try { + return driverContext.blockFactory().newConstantBytesRefBlockWith(evalValue(vector, 0, scratchPad), positionCount); + } catch (IllegalArgumentException e) { + registerException(e); + return driverContext.blockFactory().newConstantNullBlock(positionCount); + } + } + try (BytesRefBlock.Builder builder = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) { + for (int p = 0; p < positionCount; p++) { + try { + builder.appendBytesRef(evalValue(vector, p, scratchPad)); + } catch (IllegalArgumentException e) { + registerException(e); + builder.appendNull(); + } + } + return builder.build(); + } + } + + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + BytesRef value = container.getBytesRef(index, scratchPad); + return ParseIp.leadingZerosAreDecimal(value, this.scratch); + } + + @Override + public Block evalBlock(Block b) { + BytesRefBlock block = (BytesRefBlock) b; + int positionCount = block.getPositionCount(); + try (BytesRefBlock.Builder builder = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) { + BytesRef scratchPad = new BytesRef(); + for (int p = 0; p < positionCount; p++) { + int valueCount = block.getValueCount(p); + int start = block.getFirstValueIndex(p); + int end = start + valueCount; + boolean positionOpened = false; + boolean valuesAppended = false; + for (int i = start; i < end; i++) { + try { + BytesRef value = evalValue(block, i, scratchPad); + if (positionOpened == false && valueCount > 1) { + builder.beginPositionEntry(); + positionOpened = true; + } + builder.appendBytesRef(value); + valuesAppended = true; + } catch (IllegalArgumentException e) { + registerException(e); + } + } + if (valuesAppended == false) { + builder.appendNull(); + } else if (positionOpened) { + builder.endPositionEntry(); + } + } + return builder.build(); + } + } + + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + BytesRef value = container.getBytesRef(index, scratchPad); + return ParseIp.leadingZerosAreDecimal(value, this.scratch); + } + + @Override + public String toString() { + return "ParseIpLeadingZerosAreDecimalEvaluator[" + "string=" + string + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(string, scratch); + } + + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { + private final Source source; + + private final EvalOperator.ExpressionEvaluator.Factory string; + + private final Function scratch; + + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory string, + Function scratch) { + this.source = source; + this.string = string; + this.scratch = scratch; + } + + @Override + public ParseIpLeadingZerosAreDecimalEvaluator get(DriverContext context) { + return new ParseIpLeadingZerosAreDecimalEvaluator(source, string.get(context), scratch.apply(context), context); + } + + @Override + public String toString() { + return "ParseIpLeadingZerosAreDecimalEvaluator[" + "string=" + string + "]"; + } + } +} diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIPFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreOctalEvaluator.java similarity index 66% rename from x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIPFromStringEvaluator.java rename to x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreOctalEvaluator.java index 20808c349328..009cdfa0a202 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIPFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreOctalEvaluator.java @@ -7,28 +7,38 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert; import java.lang.IllegalArgumentException; import java.lang.Override; import java.lang.String; +import java.util.function.Function; import org.apache.lucene.util.BytesRef; import org.elasticsearch.compute.data.Block; import org.elasticsearch.compute.data.BytesRefBlock; import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; +import org.elasticsearch.compute.operator.BreakingBytesRefBuilder; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** - * {@link EvalOperator.ExpressionEvaluator} implementation for {@link ToIP}. + * {@link EvalOperator.ExpressionEvaluator} implementation for {@link ParseIp}. * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ -public final class ToIPFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToIPFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, +public final class ParseIpLeadingZerosAreOctalEvaluator extends AbstractConvertFunction.AbstractEvaluator { + private final EvalOperator.ExpressionEvaluator string; + + private final BreakingBytesRefBuilder scratch; + + public ParseIpLeadingZerosAreOctalEvaluator(Source source, + EvalOperator.ExpressionEvaluator string, BreakingBytesRefBuilder scratch, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.string = string; + this.scratch = scratch; } @Override - public String name() { - return "ToIPFromString"; + public EvalOperator.ExpressionEvaluator next() { + return string; } @Override @@ -57,9 +67,9 @@ public final class ToIPFromStringEvaluator extends AbstractConvertFunction.Abstr } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); - return ToIP.fromKeyword(value); + return ParseIp.leadingZerosAreOctal(value, this.scratch); } @Override @@ -97,29 +107,43 @@ public final class ToIPFromStringEvaluator extends AbstractConvertFunction.Abstr } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); - return ToIP.fromKeyword(value); + return ParseIp.leadingZerosAreOctal(value, this.scratch); + } + + @Override + public String toString() { + return "ParseIpLeadingZerosAreOctalEvaluator[" + "string=" + string + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(string, scratch); } public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory string; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + private final Function scratch; + + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory string, + Function scratch) { this.source = source; + this.string = string; + this.scratch = scratch; } @Override - public ToIPFromStringEvaluator get(DriverContext context) { - return new ToIPFromStringEvaluator(field.get(context), source, context); + public ParseIpLeadingZerosAreOctalEvaluator get(DriverContext context) { + return new ParseIpLeadingZerosAreOctalEvaluator(source, string.get(context), scratch.apply(context), context); } @Override public String toString() { - return "ToIPFromStringEvaluator[field=" + field + "]"; + return "ParseIpLeadingZerosAreOctalEvaluator[" + "string=" + string + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosRejectedEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosRejectedEvaluator.java new file mode 100644 index 000000000000..f826ec26e8e9 --- /dev/null +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosRejectedEvaluator.java @@ -0,0 +1,149 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License +// 2.0; you may not use this file except in compliance with the Elastic License +// 2.0. +package org.elasticsearch.xpack.esql.expression.function.scalar.convert; + +import java.lang.IllegalArgumentException; +import java.lang.Override; +import java.lang.String; +import java.util.function.Function; +import org.apache.lucene.util.BytesRef; +import org.elasticsearch.compute.data.Block; +import org.elasticsearch.compute.data.BytesRefBlock; +import org.elasticsearch.compute.data.BytesRefVector; +import org.elasticsearch.compute.data.Vector; +import org.elasticsearch.compute.operator.BreakingBytesRefBuilder; +import org.elasticsearch.compute.operator.DriverContext; +import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; +import org.elasticsearch.xpack.esql.core.tree.Source; + +/** + * {@link EvalOperator.ExpressionEvaluator} implementation for {@link ParseIp}. + * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. + */ +public final class ParseIpLeadingZerosRejectedEvaluator extends AbstractConvertFunction.AbstractEvaluator { + private final EvalOperator.ExpressionEvaluator string; + + private final BreakingBytesRefBuilder scratch; + + public ParseIpLeadingZerosRejectedEvaluator(Source source, + EvalOperator.ExpressionEvaluator string, BreakingBytesRefBuilder scratch, + DriverContext driverContext) { + super(driverContext, source); + this.string = string; + this.scratch = scratch; + } + + @Override + public EvalOperator.ExpressionEvaluator next() { + return string; + } + + @Override + public Block evalVector(Vector v) { + BytesRefVector vector = (BytesRefVector) v; + int positionCount = v.getPositionCount(); + BytesRef scratchPad = new BytesRef(); + if (vector.isConstant()) { + try { + return driverContext.blockFactory().newConstantBytesRefBlockWith(evalValue(vector, 0, scratchPad), positionCount); + } catch (IllegalArgumentException e) { + registerException(e); + return driverContext.blockFactory().newConstantNullBlock(positionCount); + } + } + try (BytesRefBlock.Builder builder = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) { + for (int p = 0; p < positionCount; p++) { + try { + builder.appendBytesRef(evalValue(vector, p, scratchPad)); + } catch (IllegalArgumentException e) { + registerException(e); + builder.appendNull(); + } + } + return builder.build(); + } + } + + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + BytesRef value = container.getBytesRef(index, scratchPad); + return ParseIp.leadingZerosRejected(value, this.scratch); + } + + @Override + public Block evalBlock(Block b) { + BytesRefBlock block = (BytesRefBlock) b; + int positionCount = block.getPositionCount(); + try (BytesRefBlock.Builder builder = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) { + BytesRef scratchPad = new BytesRef(); + for (int p = 0; p < positionCount; p++) { + int valueCount = block.getValueCount(p); + int start = block.getFirstValueIndex(p); + int end = start + valueCount; + boolean positionOpened = false; + boolean valuesAppended = false; + for (int i = start; i < end; i++) { + try { + BytesRef value = evalValue(block, i, scratchPad); + if (positionOpened == false && valueCount > 1) { + builder.beginPositionEntry(); + positionOpened = true; + } + builder.appendBytesRef(value); + valuesAppended = true; + } catch (IllegalArgumentException e) { + registerException(e); + } + } + if (valuesAppended == false) { + builder.appendNull(); + } else if (positionOpened) { + builder.endPositionEntry(); + } + } + return builder.build(); + } + } + + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + BytesRef value = container.getBytesRef(index, scratchPad); + return ParseIp.leadingZerosRejected(value, this.scratch); + } + + @Override + public String toString() { + return "ParseIpLeadingZerosRejectedEvaluator[" + "string=" + string + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(string, scratch); + } + + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { + private final Source source; + + private final EvalOperator.ExpressionEvaluator.Factory string; + + private final Function scratch; + + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory string, + Function scratch) { + this.source = source; + this.string = string; + this.scratch = scratch; + } + + @Override + public ParseIpLeadingZerosRejectedEvaluator get(DriverContext context) { + return new ParseIpLeadingZerosRejectedEvaluator(source, string.get(context), scratch.apply(context), context); + } + + @Override + public String toString() { + return "ParseIpLeadingZerosRejectedEvaluator[" + "string=" + string + "]"; + } + } +} diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromDoubleEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromDoubleEvaluator.java index d5df80376c48..3c92fe5fbe21 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromDoubleEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromDoubleEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.DoubleVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToBooleanFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToBooleanFromDoubleEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator d; + + public ToBooleanFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator d, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.d = d; } @Override - public String name() { - return "ToBooleanFromDouble"; + public EvalOperator.ExpressionEvaluator next() { + return d; } @Override @@ -45,7 +49,7 @@ public final class ToBooleanFromDoubleEvaluator extends AbstractConvertFunction. } } - private static boolean evalValue(DoubleVector container, int index) { + private boolean evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToBoolean.fromDouble(value); } @@ -80,29 +84,39 @@ public final class ToBooleanFromDoubleEvaluator extends AbstractConvertFunction. } } - private static boolean evalValue(DoubleBlock container, int index) { + private boolean evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToBoolean.fromDouble(value); } + @Override + public String toString() { + return "ToBooleanFromDoubleEvaluator[" + "d=" + d + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(d); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory d; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory d) { this.source = source; + this.d = d; } @Override public ToBooleanFromDoubleEvaluator get(DriverContext context) { - return new ToBooleanFromDoubleEvaluator(field.get(context), source, context); + return new ToBooleanFromDoubleEvaluator(source, d.get(context), context); } @Override public String toString() { - return "ToBooleanFromDoubleEvaluator[field=" + field + "]"; + return "ToBooleanFromDoubleEvaluator[" + "d=" + d + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromIntEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromIntEvaluator.java index a4f17f9892b8..6629645b8c80 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromIntEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromIntEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.IntVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToBooleanFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToBooleanFromIntEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator i; + + public ToBooleanFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator i, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.i = i; } @Override - public String name() { - return "ToBooleanFromInt"; + public EvalOperator.ExpressionEvaluator next() { + return i; } @Override @@ -45,7 +49,7 @@ public final class ToBooleanFromIntEvaluator extends AbstractConvertFunction.Abs } } - private static boolean evalValue(IntVector container, int index) { + private boolean evalValue(IntVector container, int index) { int value = container.getInt(index); return ToBoolean.fromInt(value); } @@ -80,29 +84,39 @@ public final class ToBooleanFromIntEvaluator extends AbstractConvertFunction.Abs } } - private static boolean evalValue(IntBlock container, int index) { + private boolean evalValue(IntBlock container, int index) { int value = container.getInt(index); return ToBoolean.fromInt(value); } + @Override + public String toString() { + return "ToBooleanFromIntEvaluator[" + "i=" + i + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(i); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory i; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory i) { this.source = source; + this.i = i; } @Override public ToBooleanFromIntEvaluator get(DriverContext context) { - return new ToBooleanFromIntEvaluator(field.get(context), source, context); + return new ToBooleanFromIntEvaluator(source, i.get(context), context); } @Override public String toString() { - return "ToBooleanFromIntEvaluator[field=" + field + "]"; + return "ToBooleanFromIntEvaluator[" + "i=" + i + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromLongEvaluator.java index 5f62c70b0497..62cd71b7684f 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromLongEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToBooleanFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToBooleanFromLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator l; + + public ToBooleanFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator l, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.l = l; } @Override - public String name() { - return "ToBooleanFromLong"; + public EvalOperator.ExpressionEvaluator next() { + return l; } @Override @@ -45,7 +49,7 @@ public final class ToBooleanFromLongEvaluator extends AbstractConvertFunction.Ab } } - private static boolean evalValue(LongVector container, int index) { + private boolean evalValue(LongVector container, int index) { long value = container.getLong(index); return ToBoolean.fromLong(value); } @@ -80,29 +84,39 @@ public final class ToBooleanFromLongEvaluator extends AbstractConvertFunction.Ab } } - private static boolean evalValue(LongBlock container, int index) { + private boolean evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToBoolean.fromLong(value); } + @Override + public String toString() { + return "ToBooleanFromLongEvaluator[" + "l=" + l + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(l); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory l; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory l) { this.source = source; + this.l = l; } @Override public ToBooleanFromLongEvaluator get(DriverContext context) { - return new ToBooleanFromLongEvaluator(field.get(context), source, context); + return new ToBooleanFromLongEvaluator(source, l.get(context), context); } @Override public String toString() { - return "ToBooleanFromLongEvaluator[field=" + field + "]"; + return "ToBooleanFromLongEvaluator[" + "l=" + l + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromStringEvaluator.java index 9e1294719994..9e7fb934b29e 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToBooleanFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToBooleanFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator keyword; + + public ToBooleanFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator keyword, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.keyword = keyword; } @Override - public String name() { - return "ToBooleanFromString"; + public EvalOperator.ExpressionEvaluator next() { + return keyword; } @Override @@ -47,7 +51,7 @@ public final class ToBooleanFromStringEvaluator extends AbstractConvertFunction. } } - private static boolean evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private boolean evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToBoolean.fromKeyword(value); } @@ -83,29 +87,39 @@ public final class ToBooleanFromStringEvaluator extends AbstractConvertFunction. } } - private static boolean evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private boolean evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToBoolean.fromKeyword(value); } + @Override + public String toString() { + return "ToBooleanFromStringEvaluator[" + "keyword=" + keyword + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(keyword); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory keyword; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory keyword) { this.source = source; + this.keyword = keyword; } @Override public ToBooleanFromStringEvaluator get(DriverContext context) { - return new ToBooleanFromStringEvaluator(field.get(context), source, context); + return new ToBooleanFromStringEvaluator(source, keyword.get(context), context); } @Override public String toString() { - return "ToBooleanFromStringEvaluator[field=" + field + "]"; + return "ToBooleanFromStringEvaluator[" + "keyword=" + keyword + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromUnsignedLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromUnsignedLongEvaluator.java index 40436df749e0..f26e375b269f 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromUnsignedLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromUnsignedLongEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToBooleanFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToBooleanFromUnsignedLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator ul; + + public ToBooleanFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator ul, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.ul = ul; } @Override - public String name() { - return "ToBooleanFromUnsignedLong"; + public EvalOperator.ExpressionEvaluator next() { + return ul; } @Override @@ -45,7 +49,7 @@ public final class ToBooleanFromUnsignedLongEvaluator extends AbstractConvertFun } } - private static boolean evalValue(LongVector container, int index) { + private boolean evalValue(LongVector container, int index) { long value = container.getLong(index); return ToBoolean.fromUnsignedLong(value); } @@ -80,29 +84,39 @@ public final class ToBooleanFromUnsignedLongEvaluator extends AbstractConvertFun } } - private static boolean evalValue(LongBlock container, int index) { + private boolean evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToBoolean.fromUnsignedLong(value); } + @Override + public String toString() { + return "ToBooleanFromUnsignedLongEvaluator[" + "ul=" + ul + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(ul); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory ul; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory ul) { this.source = source; + this.ul = ul; } @Override public ToBooleanFromUnsignedLongEvaluator get(DriverContext context) { - return new ToBooleanFromUnsignedLongEvaluator(field.get(context), source, context); + return new ToBooleanFromUnsignedLongEvaluator(source, ul.get(context), context); } @Override public String toString() { - return "ToBooleanFromUnsignedLongEvaluator[field=" + field + "]"; + return "ToBooleanFromUnsignedLongEvaluator[" + "ul=" + ul + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointFromStringEvaluator.java index 68d755000902..72de57bbbbd7 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToCartesianPointFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToCartesianPointFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToCartesianPointFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToCartesianPointFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -57,7 +61,7 @@ public final class ToCartesianPointFromStringEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToCartesianPoint.fromKeyword(value); } @@ -97,29 +101,39 @@ public final class ToCartesianPointFromStringEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToCartesianPoint.fromKeyword(value); } + @Override + public String toString() { + return "ToCartesianPointFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToCartesianPointFromStringEvaluator get(DriverContext context) { - return new ToCartesianPointFromStringEvaluator(field.get(context), source, context); + return new ToCartesianPointFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToCartesianPointFromStringEvaluator[field=" + field + "]"; + return "ToCartesianPointFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeFromStringEvaluator.java index fcbe066acda2..b1080b0639df 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToCartesianShapeFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToCartesianShapeFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToCartesianShapeFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToCartesianShapeFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -57,7 +61,7 @@ public final class ToCartesianShapeFromStringEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToCartesianShape.fromKeyword(value); } @@ -97,29 +101,39 @@ public final class ToCartesianShapeFromStringEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToCartesianShape.fromKeyword(value); } + @Override + public String toString() { + return "ToCartesianShapeFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToCartesianShapeFromStringEvaluator get(DriverContext context) { - return new ToCartesianShapeFromStringEvaluator(field.get(context), source, context); + return new ToCartesianShapeFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToCartesianShapeFromStringEvaluator[field=" + field + "]"; + return "ToCartesianShapeFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDatetimeEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDatetimeEvaluator.java index 2b7262c19128..83f9226f61b9 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDatetimeEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDatetimeEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDateNanosFromDatetimeEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDateNanosFromDatetimeEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToDateNanosFromDatetimeEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToDateNanosFromDatetime"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -55,7 +59,7 @@ public final class ToDateNanosFromDatetimeEvaluator extends AbstractConvertFunct } } - private static long evalValue(LongVector container, int index) { + private long evalValue(LongVector container, int index) { long value = container.getLong(index); return ToDateNanos.fromDatetime(value); } @@ -94,29 +98,39 @@ public final class ToDateNanosFromDatetimeEvaluator extends AbstractConvertFunct } } - private static long evalValue(LongBlock container, int index) { + private long evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToDateNanos.fromDatetime(value); } + @Override + public String toString() { + return "ToDateNanosFromDatetimeEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToDateNanosFromDatetimeEvaluator get(DriverContext context) { - return new ToDateNanosFromDatetimeEvaluator(field.get(context), source, context); + return new ToDateNanosFromDatetimeEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToDateNanosFromDatetimeEvaluator[field=" + field + "]"; + return "ToDateNanosFromDatetimeEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDoubleEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDoubleEvaluator.java index 49f894998312..6bc6f4ab1b2d 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDoubleEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDoubleEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDateNanosFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDateNanosFromDoubleEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToDateNanosFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToDateNanosFromDouble"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -57,7 +61,7 @@ public final class ToDateNanosFromDoubleEvaluator extends AbstractConvertFunctio } } - private static long evalValue(DoubleVector container, int index) { + private long evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToDateNanos.fromDouble(value); } @@ -96,29 +100,39 @@ public final class ToDateNanosFromDoubleEvaluator extends AbstractConvertFunctio } } - private static long evalValue(DoubleBlock container, int index) { + private long evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToDateNanos.fromDouble(value); } + @Override + public String toString() { + return "ToDateNanosFromDoubleEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToDateNanosFromDoubleEvaluator get(DriverContext context) { - return new ToDateNanosFromDoubleEvaluator(field.get(context), source, context); + return new ToDateNanosFromDoubleEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToDateNanosFromDoubleEvaluator[field=" + field + "]"; + return "ToDateNanosFromDoubleEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromLongEvaluator.java index a5084102ffe5..ee0c9f39b6d7 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromLongEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDateNanosFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDateNanosFromLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToDateNanosFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToDateNanosFromLong"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -55,7 +59,7 @@ public final class ToDateNanosFromLongEvaluator extends AbstractConvertFunction. } } - private static long evalValue(LongVector container, int index) { + private long evalValue(LongVector container, int index) { long value = container.getLong(index); return ToDateNanos.fromLong(value); } @@ -94,29 +98,39 @@ public final class ToDateNanosFromLongEvaluator extends AbstractConvertFunction. } } - private static long evalValue(LongBlock container, int index) { + private long evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToDateNanos.fromLong(value); } + @Override + public String toString() { + return "ToDateNanosFromLongEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToDateNanosFromLongEvaluator get(DriverContext context) { - return new ToDateNanosFromLongEvaluator(field.get(context), source, context); + return new ToDateNanosFromLongEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToDateNanosFromLongEvaluator[field=" + field + "]"; + return "ToDateNanosFromLongEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromStringEvaluator.java index 3bc9ecfcfaf4..040a17efbfee 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromStringEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDateNanosFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDateNanosFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToDateNanosFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToDateNanosFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -58,7 +62,7 @@ public final class ToDateNanosFromStringEvaluator extends AbstractConvertFunctio } } - private static long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToDateNanos.fromKeyword(value); } @@ -98,29 +102,39 @@ public final class ToDateNanosFromStringEvaluator extends AbstractConvertFunctio } } - private static long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToDateNanos.fromKeyword(value); } + @Override + public String toString() { + return "ToDateNanosFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToDateNanosFromStringEvaluator get(DriverContext context) { - return new ToDateNanosFromStringEvaluator(field.get(context), source, context); + return new ToDateNanosFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToDateNanosFromStringEvaluator[field=" + field + "]"; + return "ToDateNanosFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromDateNanosEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromDateNanosEvaluator.java index 56b8decbe7e4..eab1eafe4c71 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromDateNanosEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromDateNanosEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDatetimeFromDateNanosEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDatetimeFromDateNanosEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToDatetimeFromDateNanosEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToDatetimeFromDateNanos"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -55,7 +59,7 @@ public final class ToDatetimeFromDateNanosEvaluator extends AbstractConvertFunct } } - private static long evalValue(LongVector container, int index) { + private long evalValue(LongVector container, int index) { long value = container.getLong(index); return ToDatetime.fromDatenanos(value); } @@ -94,29 +98,39 @@ public final class ToDatetimeFromDateNanosEvaluator extends AbstractConvertFunct } } - private static long evalValue(LongBlock container, int index) { + private long evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToDatetime.fromDatenanos(value); } + @Override + public String toString() { + return "ToDatetimeFromDateNanosEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToDatetimeFromDateNanosEvaluator get(DriverContext context) { - return new ToDatetimeFromDateNanosEvaluator(field.get(context), source, context); + return new ToDatetimeFromDateNanosEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToDatetimeFromDateNanosEvaluator[field=" + field + "]"; + return "ToDatetimeFromDateNanosEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromStringEvaluator.java index 46bba5603116..e27879468e1e 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromStringEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDatetimeFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDatetimeFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToDatetimeFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToDatetimeFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -58,7 +62,7 @@ public final class ToDatetimeFromStringEvaluator extends AbstractConvertFunction } } - private static long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToDatetime.fromKeyword(value); } @@ -98,29 +102,39 @@ public final class ToDatetimeFromStringEvaluator extends AbstractConvertFunction } } - private static long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToDatetime.fromKeyword(value); } + @Override + public String toString() { + return "ToDatetimeFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToDatetimeFromStringEvaluator get(DriverContext context) { - return new ToDatetimeFromStringEvaluator(field.get(context), source, context); + return new ToDatetimeFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToDatetimeFromStringEvaluator[field=" + field + "]"; + return "ToDatetimeFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesEvaluator.java index a5d0e8af694b..cdf4d3b1f9fb 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.DoubleVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDegreesEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDegreesEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator deg; + + public ToDegreesEvaluator(Source source, EvalOperator.ExpressionEvaluator deg, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.deg = deg; } @Override - public String name() { - return "ToDegrees"; + public EvalOperator.ExpressionEvaluator next() { + return deg; } @Override @@ -55,7 +59,7 @@ public final class ToDegreesEvaluator extends AbstractConvertFunction.AbstractEv } } - private static double evalValue(DoubleVector container, int index) { + private double evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToDegrees.process(value); } @@ -94,29 +98,39 @@ public final class ToDegreesEvaluator extends AbstractConvertFunction.AbstractEv } } - private static double evalValue(DoubleBlock container, int index) { + private double evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToDegrees.process(value); } + @Override + public String toString() { + return "ToDegreesEvaluator[" + "deg=" + deg + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(deg); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory deg; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory deg) { this.source = source; + this.deg = deg; } @Override public ToDegreesEvaluator get(DriverContext context) { - return new ToDegreesEvaluator(field.get(context), source, context); + return new ToDegreesEvaluator(source, deg.get(context), context); } @Override public String toString() { - return "ToDegreesEvaluator[field=" + field + "]"; + return "ToDegreesEvaluator[" + "deg=" + deg + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromBooleanEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromBooleanEvaluator.java index 250147a255ec..1b93b7e7b326 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromBooleanEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromBooleanEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDoubleFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDoubleFromBooleanEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator bool; + + public ToDoubleFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.bool = bool; } @Override - public String name() { - return "ToDoubleFromBoolean"; + public EvalOperator.ExpressionEvaluator next() { + return bool; } @Override @@ -45,7 +49,7 @@ public final class ToDoubleFromBooleanEvaluator extends AbstractConvertFunction. } } - private static double evalValue(BooleanVector container, int index) { + private double evalValue(BooleanVector container, int index) { boolean value = container.getBoolean(index); return ToDouble.fromBoolean(value); } @@ -80,29 +84,39 @@ public final class ToDoubleFromBooleanEvaluator extends AbstractConvertFunction. } } - private static double evalValue(BooleanBlock container, int index) { + private double evalValue(BooleanBlock container, int index) { boolean value = container.getBoolean(index); return ToDouble.fromBoolean(value); } + @Override + public String toString() { + return "ToDoubleFromBooleanEvaluator[" + "bool=" + bool + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(bool); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory bool; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory bool) { this.source = source; + this.bool = bool; } @Override public ToDoubleFromBooleanEvaluator get(DriverContext context) { - return new ToDoubleFromBooleanEvaluator(field.get(context), source, context); + return new ToDoubleFromBooleanEvaluator(source, bool.get(context), context); } @Override public String toString() { - return "ToDoubleFromBooleanEvaluator[field=" + field + "]"; + return "ToDoubleFromBooleanEvaluator[" + "bool=" + bool + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromIntEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromIntEvaluator.java index 7b2ff9f39d56..66771ed47eae 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromIntEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromIntEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.IntVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDoubleFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDoubleFromIntEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator i; + + public ToDoubleFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator i, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.i = i; } @Override - public String name() { - return "ToDoubleFromInt"; + public EvalOperator.ExpressionEvaluator next() { + return i; } @Override @@ -45,7 +49,7 @@ public final class ToDoubleFromIntEvaluator extends AbstractConvertFunction.Abst } } - private static double evalValue(IntVector container, int index) { + private double evalValue(IntVector container, int index) { int value = container.getInt(index); return ToDouble.fromInt(value); } @@ -80,29 +84,39 @@ public final class ToDoubleFromIntEvaluator extends AbstractConvertFunction.Abst } } - private static double evalValue(IntBlock container, int index) { + private double evalValue(IntBlock container, int index) { int value = container.getInt(index); return ToDouble.fromInt(value); } + @Override + public String toString() { + return "ToDoubleFromIntEvaluator[" + "i=" + i + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(i); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory i; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory i) { this.source = source; + this.i = i; } @Override public ToDoubleFromIntEvaluator get(DriverContext context) { - return new ToDoubleFromIntEvaluator(field.get(context), source, context); + return new ToDoubleFromIntEvaluator(source, i.get(context), context); } @Override public String toString() { - return "ToDoubleFromIntEvaluator[field=" + field + "]"; + return "ToDoubleFromIntEvaluator[" + "i=" + i + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromLongEvaluator.java index e19f9c4cb443..651ba0f816ae 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromLongEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDoubleFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDoubleFromLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator l; + + public ToDoubleFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator l, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.l = l; } @Override - public String name() { - return "ToDoubleFromLong"; + public EvalOperator.ExpressionEvaluator next() { + return l; } @Override @@ -45,7 +49,7 @@ public final class ToDoubleFromLongEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(LongVector container, int index) { + private double evalValue(LongVector container, int index) { long value = container.getLong(index); return ToDouble.fromLong(value); } @@ -80,29 +84,39 @@ public final class ToDoubleFromLongEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(LongBlock container, int index) { + private double evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToDouble.fromLong(value); } + @Override + public String toString() { + return "ToDoubleFromLongEvaluator[" + "l=" + l + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(l); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory l; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory l) { this.source = source; + this.l = l; } @Override public ToDoubleFromLongEvaluator get(DriverContext context) { - return new ToDoubleFromLongEvaluator(field.get(context), source, context); + return new ToDoubleFromLongEvaluator(source, l.get(context), context); } @Override public String toString() { - return "ToDoubleFromLongEvaluator[field=" + field + "]"; + return "ToDoubleFromLongEvaluator[" + "l=" + l + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromStringEvaluator.java index 4ca942714925..9c9bb3f5a057 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDoubleFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDoubleFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToDoubleFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToDoubleFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -58,7 +62,7 @@ public final class ToDoubleFromStringEvaluator extends AbstractConvertFunction.A } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToDouble.fromKeyword(value); } @@ -98,29 +102,39 @@ public final class ToDoubleFromStringEvaluator extends AbstractConvertFunction.A } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToDouble.fromKeyword(value); } + @Override + public String toString() { + return "ToDoubleFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToDoubleFromStringEvaluator get(DriverContext context) { - return new ToDoubleFromStringEvaluator(field.get(context), source, context); + return new ToDoubleFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToDoubleFromStringEvaluator[field=" + field + "]"; + return "ToDoubleFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromUnsignedLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromUnsignedLongEvaluator.java index 6015e631093a..8e390bf79f68 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromUnsignedLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromUnsignedLongEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToDoubleFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToDoubleFromUnsignedLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator l; + + public ToDoubleFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator l, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.l = l; } @Override - public String name() { - return "ToDoubleFromUnsignedLong"; + public EvalOperator.ExpressionEvaluator next() { + return l; } @Override @@ -45,7 +49,7 @@ public final class ToDoubleFromUnsignedLongEvaluator extends AbstractConvertFunc } } - private static double evalValue(LongVector container, int index) { + private double evalValue(LongVector container, int index) { long value = container.getLong(index); return ToDouble.fromUnsignedLong(value); } @@ -80,29 +84,39 @@ public final class ToDoubleFromUnsignedLongEvaluator extends AbstractConvertFunc } } - private static double evalValue(LongBlock container, int index) { + private double evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToDouble.fromUnsignedLong(value); } + @Override + public String toString() { + return "ToDoubleFromUnsignedLongEvaluator[" + "l=" + l + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(l); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory l; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory l) { this.source = source; + this.l = l; } @Override public ToDoubleFromUnsignedLongEvaluator get(DriverContext context) { - return new ToDoubleFromUnsignedLongEvaluator(field.get(context), source, context); + return new ToDoubleFromUnsignedLongEvaluator(source, l.get(context), context); } @Override public String toString() { - return "ToDoubleFromUnsignedLongEvaluator[field=" + field + "]"; + return "ToDoubleFromUnsignedLongEvaluator[" + "l=" + l + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointFromStringEvaluator.java index 4444256cf6b2..1cbc3946f93f 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToGeoPointFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToGeoPointFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToGeoPointFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToGeoPointFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -57,7 +61,7 @@ public final class ToGeoPointFromStringEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToGeoPoint.fromKeyword(value); } @@ -97,29 +101,39 @@ public final class ToGeoPointFromStringEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToGeoPoint.fromKeyword(value); } + @Override + public String toString() { + return "ToGeoPointFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToGeoPointFromStringEvaluator get(DriverContext context) { - return new ToGeoPointFromStringEvaluator(field.get(context), source, context); + return new ToGeoPointFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToGeoPointFromStringEvaluator[field=" + field + "]"; + return "ToGeoPointFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeFromStringEvaluator.java index ede98457d21d..ad6171cf36bd 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToGeoShapeFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToGeoShapeFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToGeoShapeFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToGeoShapeFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -57,7 +61,7 @@ public final class ToGeoShapeFromStringEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToGeoShape.fromKeyword(value); } @@ -97,29 +101,39 @@ public final class ToGeoShapeFromStringEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToGeoShape.fromKeyword(value); } + @Override + public String toString() { + return "ToGeoShapeFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToGeoShapeFromStringEvaluator get(DriverContext context) { - return new ToGeoShapeFromStringEvaluator(field.get(context), source, context); + return new ToGeoShapeFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToGeoShapeFromStringEvaluator[field=" + field + "]"; + return "ToGeoShapeFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromBooleanEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromBooleanEvaluator.java index 72837d5c7d6a..9cabd771d979 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromBooleanEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromBooleanEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.IntBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToIntegerFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToIntegerFromBooleanEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator bool; + + public ToIntegerFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.bool = bool; } @Override - public String name() { - return "ToIntegerFromBoolean"; + public EvalOperator.ExpressionEvaluator next() { + return bool; } @Override @@ -45,7 +49,7 @@ public final class ToIntegerFromBooleanEvaluator extends AbstractConvertFunction } } - private static int evalValue(BooleanVector container, int index) { + private int evalValue(BooleanVector container, int index) { boolean value = container.getBoolean(index); return ToInteger.fromBoolean(value); } @@ -80,29 +84,39 @@ public final class ToIntegerFromBooleanEvaluator extends AbstractConvertFunction } } - private static int evalValue(BooleanBlock container, int index) { + private int evalValue(BooleanBlock container, int index) { boolean value = container.getBoolean(index); return ToInteger.fromBoolean(value); } + @Override + public String toString() { + return "ToIntegerFromBooleanEvaluator[" + "bool=" + bool + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(bool); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory bool; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory bool) { this.source = source; + this.bool = bool; } @Override public ToIntegerFromBooleanEvaluator get(DriverContext context) { - return new ToIntegerFromBooleanEvaluator(field.get(context), source, context); + return new ToIntegerFromBooleanEvaluator(source, bool.get(context), context); } @Override public String toString() { - return "ToIntegerFromBooleanEvaluator[field=" + field + "]"; + return "ToIntegerFromBooleanEvaluator[" + "bool=" + bool + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromDoubleEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromDoubleEvaluator.java index c45f332f0d22..1d1f97930687 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromDoubleEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromDoubleEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.IntBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToIntegerFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToIntegerFromDoubleEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator dbl; + + public ToIntegerFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator dbl, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.dbl = dbl; } @Override - public String name() { - return "ToIntegerFromDouble"; + public EvalOperator.ExpressionEvaluator next() { + return dbl; } @Override @@ -56,7 +60,7 @@ public final class ToIntegerFromDoubleEvaluator extends AbstractConvertFunction. } } - private static int evalValue(DoubleVector container, int index) { + private int evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToInteger.fromDouble(value); } @@ -95,29 +99,39 @@ public final class ToIntegerFromDoubleEvaluator extends AbstractConvertFunction. } } - private static int evalValue(DoubleBlock container, int index) { + private int evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToInteger.fromDouble(value); } + @Override + public String toString() { + return "ToIntegerFromDoubleEvaluator[" + "dbl=" + dbl + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(dbl); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory dbl; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory dbl) { this.source = source; + this.dbl = dbl; } @Override public ToIntegerFromDoubleEvaluator get(DriverContext context) { - return new ToIntegerFromDoubleEvaluator(field.get(context), source, context); + return new ToIntegerFromDoubleEvaluator(source, dbl.get(context), context); } @Override public String toString() { - return "ToIntegerFromDoubleEvaluator[field=" + field + "]"; + return "ToIntegerFromDoubleEvaluator[" + "dbl=" + dbl + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromLongEvaluator.java index b829a506dc5a..8a318985ccd2 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromLongEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToIntegerFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToIntegerFromLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator lng; + + public ToIntegerFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator lng, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.lng = lng; } @Override - public String name() { - return "ToIntegerFromLong"; + public EvalOperator.ExpressionEvaluator next() { + return lng; } @Override @@ -56,7 +60,7 @@ public final class ToIntegerFromLongEvaluator extends AbstractConvertFunction.Ab } } - private static int evalValue(LongVector container, int index) { + private int evalValue(LongVector container, int index) { long value = container.getLong(index); return ToInteger.fromLong(value); } @@ -95,29 +99,39 @@ public final class ToIntegerFromLongEvaluator extends AbstractConvertFunction.Ab } } - private static int evalValue(LongBlock container, int index) { + private int evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToInteger.fromLong(value); } + @Override + public String toString() { + return "ToIntegerFromLongEvaluator[" + "lng=" + lng + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(lng); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory lng; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory lng) { this.source = source; + this.lng = lng; } @Override public ToIntegerFromLongEvaluator get(DriverContext context) { - return new ToIntegerFromLongEvaluator(field.get(context), source, context); + return new ToIntegerFromLongEvaluator(source, lng.get(context), context); } @Override public String toString() { - return "ToIntegerFromLongEvaluator[field=" + field + "]"; + return "ToIntegerFromLongEvaluator[" + "lng=" + lng + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromStringEvaluator.java index 1a0abf5ed630..1c7f11c9340a 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.IntBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToIntegerFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToIntegerFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToIntegerFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToIntegerFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -58,7 +62,7 @@ public final class ToIntegerFromStringEvaluator extends AbstractConvertFunction. } } - private static int evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private int evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToInteger.fromKeyword(value); } @@ -98,29 +102,39 @@ public final class ToIntegerFromStringEvaluator extends AbstractConvertFunction. } } - private static int evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private int evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToInteger.fromKeyword(value); } + @Override + public String toString() { + return "ToIntegerFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToIntegerFromStringEvaluator get(DriverContext context) { - return new ToIntegerFromStringEvaluator(field.get(context), source, context); + return new ToIntegerFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToIntegerFromStringEvaluator[field=" + field + "]"; + return "ToIntegerFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromUnsignedLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromUnsignedLongEvaluator.java index 433ad4815dc0..8580f6a4d3fb 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromUnsignedLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromUnsignedLongEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToIntegerFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToIntegerFromUnsignedLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator ul; + + public ToIntegerFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator ul, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.ul = ul; } @Override - public String name() { - return "ToIntegerFromUnsignedLong"; + public EvalOperator.ExpressionEvaluator next() { + return ul; } @Override @@ -56,7 +60,7 @@ public final class ToIntegerFromUnsignedLongEvaluator extends AbstractConvertFun } } - private static int evalValue(LongVector container, int index) { + private int evalValue(LongVector container, int index) { long value = container.getLong(index); return ToInteger.fromUnsignedLong(value); } @@ -95,29 +99,39 @@ public final class ToIntegerFromUnsignedLongEvaluator extends AbstractConvertFun } } - private static int evalValue(LongBlock container, int index) { + private int evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToInteger.fromUnsignedLong(value); } + @Override + public String toString() { + return "ToIntegerFromUnsignedLongEvaluator[" + "ul=" + ul + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(ul); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory ul; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory ul) { this.source = source; + this.ul = ul; } @Override public ToIntegerFromUnsignedLongEvaluator get(DriverContext context) { - return new ToIntegerFromUnsignedLongEvaluator(field.get(context), source, context); + return new ToIntegerFromUnsignedLongEvaluator(source, ul.get(context), context); } @Override public String toString() { - return "ToIntegerFromUnsignedLongEvaluator[field=" + field + "]"; + return "ToIntegerFromUnsignedLongEvaluator[" + "ul=" + ul + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromBooleanEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromBooleanEvaluator.java index d74861f4ef11..79bec661413e 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromBooleanEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromBooleanEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToLongFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToLongFromBooleanEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator bool; + + public ToLongFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.bool = bool; } @Override - public String name() { - return "ToLongFromBoolean"; + public EvalOperator.ExpressionEvaluator next() { + return bool; } @Override @@ -45,7 +49,7 @@ public final class ToLongFromBooleanEvaluator extends AbstractConvertFunction.Ab } } - private static long evalValue(BooleanVector container, int index) { + private long evalValue(BooleanVector container, int index) { boolean value = container.getBoolean(index); return ToLong.fromBoolean(value); } @@ -80,29 +84,39 @@ public final class ToLongFromBooleanEvaluator extends AbstractConvertFunction.Ab } } - private static long evalValue(BooleanBlock container, int index) { + private long evalValue(BooleanBlock container, int index) { boolean value = container.getBoolean(index); return ToLong.fromBoolean(value); } + @Override + public String toString() { + return "ToLongFromBooleanEvaluator[" + "bool=" + bool + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(bool); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory bool; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory bool) { this.source = source; + this.bool = bool; } @Override public ToLongFromBooleanEvaluator get(DriverContext context) { - return new ToLongFromBooleanEvaluator(field.get(context), source, context); + return new ToLongFromBooleanEvaluator(source, bool.get(context), context); } @Override public String toString() { - return "ToLongFromBooleanEvaluator[field=" + field + "]"; + return "ToLongFromBooleanEvaluator[" + "bool=" + bool + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromDoubleEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromDoubleEvaluator.java index a63c54184fb8..050eb1bc7c2c 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromDoubleEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromDoubleEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToLongFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToLongFromDoubleEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator dbl; + + public ToLongFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator dbl, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.dbl = dbl; } @Override - public String name() { - return "ToLongFromDouble"; + public EvalOperator.ExpressionEvaluator next() { + return dbl; } @Override @@ -56,7 +60,7 @@ public final class ToLongFromDoubleEvaluator extends AbstractConvertFunction.Abs } } - private static long evalValue(DoubleVector container, int index) { + private long evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToLong.fromDouble(value); } @@ -95,29 +99,39 @@ public final class ToLongFromDoubleEvaluator extends AbstractConvertFunction.Abs } } - private static long evalValue(DoubleBlock container, int index) { + private long evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToLong.fromDouble(value); } + @Override + public String toString() { + return "ToLongFromDoubleEvaluator[" + "dbl=" + dbl + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(dbl); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory dbl; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory dbl) { this.source = source; + this.dbl = dbl; } @Override public ToLongFromDoubleEvaluator get(DriverContext context) { - return new ToLongFromDoubleEvaluator(field.get(context), source, context); + return new ToLongFromDoubleEvaluator(source, dbl.get(context), context); } @Override public String toString() { - return "ToLongFromDoubleEvaluator[field=" + field + "]"; + return "ToLongFromDoubleEvaluator[" + "dbl=" + dbl + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromIntEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromIntEvaluator.java index 95623d0ef267..be940034e8ae 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromIntEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromIntEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToLongFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToLongFromIntEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator i; + + public ToLongFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator i, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.i = i; } @Override - public String name() { - return "ToLongFromInt"; + public EvalOperator.ExpressionEvaluator next() { + return i; } @Override @@ -45,7 +49,7 @@ public final class ToLongFromIntEvaluator extends AbstractConvertFunction.Abstra } } - private static long evalValue(IntVector container, int index) { + private long evalValue(IntVector container, int index) { int value = container.getInt(index); return ToLong.fromInt(value); } @@ -80,29 +84,39 @@ public final class ToLongFromIntEvaluator extends AbstractConvertFunction.Abstra } } - private static long evalValue(IntBlock container, int index) { + private long evalValue(IntBlock container, int index) { int value = container.getInt(index); return ToLong.fromInt(value); } + @Override + public String toString() { + return "ToLongFromIntEvaluator[" + "i=" + i + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(i); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory i; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory i) { this.source = source; + this.i = i; } @Override public ToLongFromIntEvaluator get(DriverContext context) { - return new ToLongFromIntEvaluator(field.get(context), source, context); + return new ToLongFromIntEvaluator(source, i.get(context), context); } @Override public String toString() { - return "ToLongFromIntEvaluator[field=" + field + "]"; + return "ToLongFromIntEvaluator[" + "i=" + i + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromStringEvaluator.java index 283d97606e9a..96264da153be 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromStringEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToLongFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToLongFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToLongFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToLongFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -58,7 +62,7 @@ public final class ToLongFromStringEvaluator extends AbstractConvertFunction.Abs } } - private static long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToLong.fromKeyword(value); } @@ -98,29 +102,39 @@ public final class ToLongFromStringEvaluator extends AbstractConvertFunction.Abs } } - private static long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToLong.fromKeyword(value); } + @Override + public String toString() { + return "ToLongFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToLongFromStringEvaluator get(DriverContext context) { - return new ToLongFromStringEvaluator(field.get(context), source, context); + return new ToLongFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToLongFromStringEvaluator[field=" + field + "]"; + return "ToLongFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromUnsignedLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromUnsignedLongEvaluator.java index 134ea9698c47..51fec7b143d3 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromUnsignedLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromUnsignedLongEvaluator.java @@ -12,6 +12,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToLongFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToLongFromUnsignedLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator ul; + + public ToLongFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator ul, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.ul = ul; } @Override - public String name() { - return "ToLongFromUnsignedLong"; + public EvalOperator.ExpressionEvaluator next() { + return ul; } @Override @@ -55,7 +59,7 @@ public final class ToLongFromUnsignedLongEvaluator extends AbstractConvertFuncti } } - private static long evalValue(LongVector container, int index) { + private long evalValue(LongVector container, int index) { long value = container.getLong(index); return ToLong.fromUnsignedLong(value); } @@ -94,29 +98,39 @@ public final class ToLongFromUnsignedLongEvaluator extends AbstractConvertFuncti } } - private static long evalValue(LongBlock container, int index) { + private long evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToLong.fromUnsignedLong(value); } + @Override + public String toString() { + return "ToLongFromUnsignedLongEvaluator[" + "ul=" + ul + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(ul); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory ul; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory ul) { this.source = source; + this.ul = ul; } @Override public ToLongFromUnsignedLongEvaluator get(DriverContext context) { - return new ToLongFromUnsignedLongEvaluator(field.get(context), source, context); + return new ToLongFromUnsignedLongEvaluator(source, ul.get(context), context); } @Override public String toString() { - return "ToLongFromUnsignedLongEvaluator[field=" + field + "]"; + return "ToLongFromUnsignedLongEvaluator[" + "ul=" + ul + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansEvaluator.java index b1a480878a9c..77dcc52f9f6e 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansEvaluator.java @@ -12,6 +12,7 @@ import org.elasticsearch.compute.data.DoubleVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -19,14 +20,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToRadiansEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToRadiansEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator deg; + + public ToRadiansEvaluator(Source source, EvalOperator.ExpressionEvaluator deg, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.deg = deg; } @Override - public String name() { - return "ToRadians"; + public EvalOperator.ExpressionEvaluator next() { + return deg; } @Override @@ -44,7 +48,7 @@ public final class ToRadiansEvaluator extends AbstractConvertFunction.AbstractEv } } - private static double evalValue(DoubleVector container, int index) { + private double evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToRadians.process(value); } @@ -79,29 +83,39 @@ public final class ToRadiansEvaluator extends AbstractConvertFunction.AbstractEv } } - private static double evalValue(DoubleBlock container, int index) { + private double evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToRadians.process(value); } + @Override + public String toString() { + return "ToRadiansEvaluator[" + "deg=" + deg + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(deg); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory deg; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory deg) { this.source = source; + this.deg = deg; } @Override public ToRadiansEvaluator get(DriverContext context) { - return new ToRadiansEvaluator(field.get(context), source, context); + return new ToRadiansEvaluator(source, deg.get(context), context); } @Override public String toString() { - return "ToRadiansEvaluator[field=" + field + "]"; + return "ToRadiansEvaluator[" + "deg=" + deg + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromBooleanEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromBooleanEvaluator.java index d9d1cecd2af9..3a056a59218c 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromBooleanEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromBooleanEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromBooleanEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator bool; + + public ToStringFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.bool = bool; } @Override - public String name() { - return "ToStringFromBoolean"; + public EvalOperator.ExpressionEvaluator next() { + return bool; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromBooleanEvaluator extends AbstractConvertFunction. } } - private static BytesRef evalValue(BooleanVector container, int index) { + private BytesRef evalValue(BooleanVector container, int index) { boolean value = container.getBoolean(index); return ToString.fromBoolean(value); } @@ -81,29 +85,39 @@ public final class ToStringFromBooleanEvaluator extends AbstractConvertFunction. } } - private static BytesRef evalValue(BooleanBlock container, int index) { + private BytesRef evalValue(BooleanBlock container, int index) { boolean value = container.getBoolean(index); return ToString.fromBoolean(value); } + @Override + public String toString() { + return "ToStringFromBooleanEvaluator[" + "bool=" + bool + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(bool); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory bool; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory bool) { this.source = source; + this.bool = bool; } @Override public ToStringFromBooleanEvaluator get(DriverContext context) { - return new ToStringFromBooleanEvaluator(field.get(context), source, context); + return new ToStringFromBooleanEvaluator(source, bool.get(context), context); } @Override public String toString() { - return "ToStringFromBooleanEvaluator[field=" + field + "]"; + return "ToStringFromBooleanEvaluator[" + "bool=" + bool + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianPointEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianPointEvaluator.java index aeaf940d51ff..03b81c4fe5bf 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianPointEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianPointEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromCartesianPointEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromCartesianPointEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public ToStringFromCartesianPointEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "ToStringFromCartesianPoint"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromCartesianPointEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromCartesianPoint(value); } @@ -82,29 +86,39 @@ public final class ToStringFromCartesianPointEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromCartesianPoint(value); } + @Override + public String toString() { + return "ToStringFromCartesianPointEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public ToStringFromCartesianPointEvaluator get(DriverContext context) { - return new ToStringFromCartesianPointEvaluator(field.get(context), source, context); + return new ToStringFromCartesianPointEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "ToStringFromCartesianPointEvaluator[field=" + field + "]"; + return "ToStringFromCartesianPointEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianShapeEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianShapeEvaluator.java index 2d4c04e6afcd..20bb28df6e19 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianShapeEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianShapeEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromCartesianShapeEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromCartesianShapeEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public ToStringFromCartesianShapeEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "ToStringFromCartesianShape"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromCartesianShapeEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromCartesianShape(value); } @@ -82,29 +86,39 @@ public final class ToStringFromCartesianShapeEvaluator extends AbstractConvertFu } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromCartesianShape(value); } + @Override + public String toString() { + return "ToStringFromCartesianShapeEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public ToStringFromCartesianShapeEvaluator get(DriverContext context) { - return new ToStringFromCartesianShapeEvaluator(field.get(context), source, context); + return new ToStringFromCartesianShapeEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "ToStringFromCartesianShapeEvaluator[field=" + field + "]"; + return "ToStringFromCartesianShapeEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDateNanosEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDateNanosEvaluator.java index 189607a077d7..22d596d5b19a 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDateNanosEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDateNanosEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromDateNanosEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromDateNanosEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator datetime; + + public ToStringFromDateNanosEvaluator(Source source, EvalOperator.ExpressionEvaluator datetime, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.datetime = datetime; } @Override - public String name() { - return "ToStringFromDateNanos"; + public EvalOperator.ExpressionEvaluator next() { + return datetime; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromDateNanosEvaluator extends AbstractConvertFunctio } } - private static BytesRef evalValue(LongVector container, int index) { + private BytesRef evalValue(LongVector container, int index) { long value = container.getLong(index); return ToString.fromDateNanos(value); } @@ -81,29 +85,39 @@ public final class ToStringFromDateNanosEvaluator extends AbstractConvertFunctio } } - private static BytesRef evalValue(LongBlock container, int index) { + private BytesRef evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToString.fromDateNanos(value); } + @Override + public String toString() { + return "ToStringFromDateNanosEvaluator[" + "datetime=" + datetime + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(datetime); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory datetime; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory datetime) { this.source = source; + this.datetime = datetime; } @Override public ToStringFromDateNanosEvaluator get(DriverContext context) { - return new ToStringFromDateNanosEvaluator(field.get(context), source, context); + return new ToStringFromDateNanosEvaluator(source, datetime.get(context), context); } @Override public String toString() { - return "ToStringFromDateNanosEvaluator[field=" + field + "]"; + return "ToStringFromDateNanosEvaluator[" + "datetime=" + datetime + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDatetimeEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDatetimeEvaluator.java index a7f2d537e180..0422df62556f 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDatetimeEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDatetimeEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromDatetimeEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromDatetimeEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator datetime; + + public ToStringFromDatetimeEvaluator(Source source, EvalOperator.ExpressionEvaluator datetime, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.datetime = datetime; } @Override - public String name() { - return "ToStringFromDatetime"; + public EvalOperator.ExpressionEvaluator next() { + return datetime; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromDatetimeEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(LongVector container, int index) { + private BytesRef evalValue(LongVector container, int index) { long value = container.getLong(index); return ToString.fromDatetime(value); } @@ -81,29 +85,39 @@ public final class ToStringFromDatetimeEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(LongBlock container, int index) { + private BytesRef evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToString.fromDatetime(value); } + @Override + public String toString() { + return "ToStringFromDatetimeEvaluator[" + "datetime=" + datetime + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(datetime); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory datetime; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory datetime) { this.source = source; + this.datetime = datetime; } @Override public ToStringFromDatetimeEvaluator get(DriverContext context) { - return new ToStringFromDatetimeEvaluator(field.get(context), source, context); + return new ToStringFromDatetimeEvaluator(source, datetime.get(context), context); } @Override public String toString() { - return "ToStringFromDatetimeEvaluator[field=" + field + "]"; + return "ToStringFromDatetimeEvaluator[" + "datetime=" + datetime + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDoubleEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDoubleEvaluator.java index 29091a037dad..16b57b2ae740 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDoubleEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDoubleEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.DoubleVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromDoubleEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator dbl; + + public ToStringFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator dbl, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.dbl = dbl; } @Override - public String name() { - return "ToStringFromDouble"; + public EvalOperator.ExpressionEvaluator next() { + return dbl; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromDoubleEvaluator extends AbstractConvertFunction.A } } - private static BytesRef evalValue(DoubleVector container, int index) { + private BytesRef evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToString.fromDouble(value); } @@ -81,29 +85,39 @@ public final class ToStringFromDoubleEvaluator extends AbstractConvertFunction.A } } - private static BytesRef evalValue(DoubleBlock container, int index) { + private BytesRef evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToString.fromDouble(value); } + @Override + public String toString() { + return "ToStringFromDoubleEvaluator[" + "dbl=" + dbl + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(dbl); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory dbl; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory dbl) { this.source = source; + this.dbl = dbl; } @Override public ToStringFromDoubleEvaluator get(DriverContext context) { - return new ToStringFromDoubleEvaluator(field.get(context), source, context); + return new ToStringFromDoubleEvaluator(source, dbl.get(context), context); } @Override public String toString() { - return "ToStringFromDoubleEvaluator[field=" + field + "]"; + return "ToStringFromDoubleEvaluator[" + "dbl=" + dbl + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoPointEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoPointEvaluator.java index 5dfdbf37257e..51e8b300a372 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoPointEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoPointEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromGeoPointEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromGeoPointEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public ToStringFromGeoPointEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "ToStringFromGeoPoint"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromGeoPointEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromGeoPoint(value); } @@ -82,29 +86,39 @@ public final class ToStringFromGeoPointEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromGeoPoint(value); } + @Override + public String toString() { + return "ToStringFromGeoPointEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public ToStringFromGeoPointEvaluator get(DriverContext context) { - return new ToStringFromGeoPointEvaluator(field.get(context), source, context); + return new ToStringFromGeoPointEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "ToStringFromGeoPointEvaluator[field=" + field + "]"; + return "ToStringFromGeoPointEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoShapeEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoShapeEvaluator.java index a207b4dbf187..fb1cb50f8681 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoShapeEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoShapeEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromGeoShapeEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromGeoShapeEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public ToStringFromGeoShapeEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "ToStringFromGeoShape"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromGeoShapeEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromGeoShape(value); } @@ -82,29 +86,39 @@ public final class ToStringFromGeoShapeEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromGeoShape(value); } + @Override + public String toString() { + return "ToStringFromGeoShapeEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public ToStringFromGeoShapeEvaluator get(DriverContext context) { - return new ToStringFromGeoShapeEvaluator(field.get(context), source, context); + return new ToStringFromGeoShapeEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "ToStringFromGeoShapeEvaluator[field=" + field + "]"; + return "ToStringFromGeoShapeEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIPEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIPEvaluator.java index a9663c2a4fdf..913e63ea0dd3 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIPEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIPEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromIPEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromIPEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator ip; + + public ToStringFromIPEvaluator(Source source, EvalOperator.ExpressionEvaluator ip, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.ip = ip; } @Override - public String name() { - return "ToStringFromIP"; + public EvalOperator.ExpressionEvaluator next() { + return ip; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromIPEvaluator extends AbstractConvertFunction.Abstr } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromIP(value); } @@ -82,29 +86,39 @@ public final class ToStringFromIPEvaluator extends AbstractConvertFunction.Abstr } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromIP(value); } + @Override + public String toString() { + return "ToStringFromIPEvaluator[" + "ip=" + ip + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(ip); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory ip; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory ip) { this.source = source; + this.ip = ip; } @Override public ToStringFromIPEvaluator get(DriverContext context) { - return new ToStringFromIPEvaluator(field.get(context), source, context); + return new ToStringFromIPEvaluator(source, ip.get(context), context); } @Override public String toString() { - return "ToStringFromIPEvaluator[field=" + field + "]"; + return "ToStringFromIPEvaluator[" + "ip=" + ip + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIntEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIntEvaluator.java index 604061865dcd..d8da5f73078c 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIntEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIntEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.IntVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromIntEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator integer; + + public ToStringFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator integer, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.integer = integer; } @Override - public String name() { - return "ToStringFromInt"; + public EvalOperator.ExpressionEvaluator next() { + return integer; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromIntEvaluator extends AbstractConvertFunction.Abst } } - private static BytesRef evalValue(IntVector container, int index) { + private BytesRef evalValue(IntVector container, int index) { int value = container.getInt(index); return ToString.fromDouble(value); } @@ -81,29 +85,39 @@ public final class ToStringFromIntEvaluator extends AbstractConvertFunction.Abst } } - private static BytesRef evalValue(IntBlock container, int index) { + private BytesRef evalValue(IntBlock container, int index) { int value = container.getInt(index); return ToString.fromDouble(value); } + @Override + public String toString() { + return "ToStringFromIntEvaluator[" + "integer=" + integer + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(integer); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory integer; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory integer) { this.source = source; + this.integer = integer; } @Override public ToStringFromIntEvaluator get(DriverContext context) { - return new ToStringFromIntEvaluator(field.get(context), source, context); + return new ToStringFromIntEvaluator(source, integer.get(context), context); } @Override public String toString() { - return "ToStringFromIntEvaluator[field=" + field + "]"; + return "ToStringFromIntEvaluator[" + "integer=" + integer + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromLongEvaluator.java index c444c5949a4c..5d8eec190fb2 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromLongEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator lng; + + public ToStringFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator lng, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.lng = lng; } @Override - public String name() { - return "ToStringFromLong"; + public EvalOperator.ExpressionEvaluator next() { + return lng; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromLongEvaluator extends AbstractConvertFunction.Abs } } - private static BytesRef evalValue(LongVector container, int index) { + private BytesRef evalValue(LongVector container, int index) { long value = container.getLong(index); return ToString.fromDouble(value); } @@ -81,29 +85,39 @@ public final class ToStringFromLongEvaluator extends AbstractConvertFunction.Abs } } - private static BytesRef evalValue(LongBlock container, int index) { + private BytesRef evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToString.fromDouble(value); } + @Override + public String toString() { + return "ToStringFromLongEvaluator[" + "lng=" + lng + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(lng); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory lng; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory lng) { this.source = source; + this.lng = lng; } @Override public ToStringFromLongEvaluator get(DriverContext context) { - return new ToStringFromLongEvaluator(field.get(context), source, context); + return new ToStringFromLongEvaluator(source, lng.get(context), context); } @Override public String toString() { - return "ToStringFromLongEvaluator[field=" + field + "]"; + return "ToStringFromLongEvaluator[" + "lng=" + lng + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromUnsignedLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromUnsignedLongEvaluator.java index 6c3789ac182a..c3430e22eb64 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromUnsignedLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromUnsignedLongEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromUnsignedLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator lng; + + public ToStringFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator lng, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.lng = lng; } @Override - public String name() { - return "ToStringFromUnsignedLong"; + public EvalOperator.ExpressionEvaluator next() { + return lng; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromUnsignedLongEvaluator extends AbstractConvertFunc } } - private static BytesRef evalValue(LongVector container, int index) { + private BytesRef evalValue(LongVector container, int index) { long value = container.getLong(index); return ToString.fromUnsignedLong(value); } @@ -81,29 +85,39 @@ public final class ToStringFromUnsignedLongEvaluator extends AbstractConvertFunc } } - private static BytesRef evalValue(LongBlock container, int index) { + private BytesRef evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToString.fromUnsignedLong(value); } + @Override + public String toString() { + return "ToStringFromUnsignedLongEvaluator[" + "lng=" + lng + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(lng); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory lng; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory lng) { this.source = source; + this.lng = lng; } @Override public ToStringFromUnsignedLongEvaluator get(DriverContext context) { - return new ToStringFromUnsignedLongEvaluator(field.get(context), source, context); + return new ToStringFromUnsignedLongEvaluator(source, lng.get(context), context); } @Override public String toString() { - return "ToStringFromUnsignedLongEvaluator[field=" + field + "]"; + return "ToStringFromUnsignedLongEvaluator[" + "lng=" + lng + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromVersionEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromVersionEvaluator.java index 183cfaba27e4..bb7e1a3cd897 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromVersionEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromVersionEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToStringFromVersionEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToStringFromVersionEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator version; + + public ToStringFromVersionEvaluator(Source source, EvalOperator.ExpressionEvaluator version, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.version = version; } @Override - public String name() { - return "ToStringFromVersion"; + public EvalOperator.ExpressionEvaluator next() { + return version; } @Override @@ -46,7 +50,7 @@ public final class ToStringFromVersionEvaluator extends AbstractConvertFunction. } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromVersion(value); } @@ -82,29 +86,39 @@ public final class ToStringFromVersionEvaluator extends AbstractConvertFunction. } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToString.fromVersion(value); } + @Override + public String toString() { + return "ToStringFromVersionEvaluator[" + "version=" + version + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(version); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory version; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory version) { this.source = source; + this.version = version; } @Override public ToStringFromVersionEvaluator get(DriverContext context) { - return new ToStringFromVersionEvaluator(field.get(context), source, context); + return new ToStringFromVersionEvaluator(source, version.get(context), context); } @Override public String toString() { - return "ToStringFromVersionEvaluator[field=" + field + "]"; + return "ToStringFromVersionEvaluator[" + "version=" + version + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromBooleanEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromBooleanEvaluator.java index 74d41a048998..06fa5184688a 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromBooleanEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromBooleanEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToUnsignedLongFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToUnsignedLongFromBooleanEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator bool; + + public ToUnsignedLongFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.bool = bool; } @Override - public String name() { - return "ToUnsignedLongFromBoolean"; + public EvalOperator.ExpressionEvaluator next() { + return bool; } @Override @@ -45,7 +49,7 @@ public final class ToUnsignedLongFromBooleanEvaluator extends AbstractConvertFun } } - private static long evalValue(BooleanVector container, int index) { + private long evalValue(BooleanVector container, int index) { boolean value = container.getBoolean(index); return ToUnsignedLong.fromBoolean(value); } @@ -80,29 +84,39 @@ public final class ToUnsignedLongFromBooleanEvaluator extends AbstractConvertFun } } - private static long evalValue(BooleanBlock container, int index) { + private long evalValue(BooleanBlock container, int index) { boolean value = container.getBoolean(index); return ToUnsignedLong.fromBoolean(value); } + @Override + public String toString() { + return "ToUnsignedLongFromBooleanEvaluator[" + "bool=" + bool + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(bool); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory bool; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory bool) { this.source = source; + this.bool = bool; } @Override public ToUnsignedLongFromBooleanEvaluator get(DriverContext context) { - return new ToUnsignedLongFromBooleanEvaluator(field.get(context), source, context); + return new ToUnsignedLongFromBooleanEvaluator(source, bool.get(context), context); } @Override public String toString() { - return "ToUnsignedLongFromBooleanEvaluator[field=" + field + "]"; + return "ToUnsignedLongFromBooleanEvaluator[" + "bool=" + bool + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromDoubleEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromDoubleEvaluator.java index 6f0e1a676920..9593866d2c84 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromDoubleEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromDoubleEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToUnsignedLongFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToUnsignedLongFromDoubleEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator dbl; + + public ToUnsignedLongFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator dbl, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.dbl = dbl; } @Override - public String name() { - return "ToUnsignedLongFromDouble"; + public EvalOperator.ExpressionEvaluator next() { + return dbl; } @Override @@ -56,7 +60,7 @@ public final class ToUnsignedLongFromDoubleEvaluator extends AbstractConvertFunc } } - private static long evalValue(DoubleVector container, int index) { + private long evalValue(DoubleVector container, int index) { double value = container.getDouble(index); return ToUnsignedLong.fromDouble(value); } @@ -95,29 +99,39 @@ public final class ToUnsignedLongFromDoubleEvaluator extends AbstractConvertFunc } } - private static long evalValue(DoubleBlock container, int index) { + private long evalValue(DoubleBlock container, int index) { double value = container.getDouble(index); return ToUnsignedLong.fromDouble(value); } + @Override + public String toString() { + return "ToUnsignedLongFromDoubleEvaluator[" + "dbl=" + dbl + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(dbl); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory dbl; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory dbl) { this.source = source; + this.dbl = dbl; } @Override public ToUnsignedLongFromDoubleEvaluator get(DriverContext context) { - return new ToUnsignedLongFromDoubleEvaluator(field.get(context), source, context); + return new ToUnsignedLongFromDoubleEvaluator(source, dbl.get(context), context); } @Override public String toString() { - return "ToUnsignedLongFromDoubleEvaluator[field=" + field + "]"; + return "ToUnsignedLongFromDoubleEvaluator[" + "dbl=" + dbl + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromIntEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromIntEvaluator.java index f1c65e0e5f1a..998b421d4ae9 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromIntEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromIntEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -21,14 +22,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToUnsignedLongFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToUnsignedLongFromIntEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator i; + + public ToUnsignedLongFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator i, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.i = i; } @Override - public String name() { - return "ToUnsignedLongFromInt"; + public EvalOperator.ExpressionEvaluator next() { + return i; } @Override @@ -56,7 +60,7 @@ public final class ToUnsignedLongFromIntEvaluator extends AbstractConvertFunctio } } - private static long evalValue(IntVector container, int index) { + private long evalValue(IntVector container, int index) { int value = container.getInt(index); return ToUnsignedLong.fromInt(value); } @@ -95,29 +99,39 @@ public final class ToUnsignedLongFromIntEvaluator extends AbstractConvertFunctio } } - private static long evalValue(IntBlock container, int index) { + private long evalValue(IntBlock container, int index) { int value = container.getInt(index); return ToUnsignedLong.fromInt(value); } + @Override + public String toString() { + return "ToUnsignedLongFromIntEvaluator[" + "i=" + i + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(i); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory i; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory i) { this.source = source; + this.i = i; } @Override public ToUnsignedLongFromIntEvaluator get(DriverContext context) { - return new ToUnsignedLongFromIntEvaluator(field.get(context), source, context); + return new ToUnsignedLongFromIntEvaluator(source, i.get(context), context); } @Override public String toString() { - return "ToUnsignedLongFromIntEvaluator[field=" + field + "]"; + return "ToUnsignedLongFromIntEvaluator[" + "i=" + i + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromLongEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromLongEvaluator.java index 5b16dc8bc5b9..5ee30aa71f28 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromLongEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromLongEvaluator.java @@ -12,6 +12,7 @@ import org.elasticsearch.compute.data.LongVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToUnsignedLongFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToUnsignedLongFromLongEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator lng; + + public ToUnsignedLongFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator lng, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.lng = lng; } @Override - public String name() { - return "ToUnsignedLongFromLong"; + public EvalOperator.ExpressionEvaluator next() { + return lng; } @Override @@ -55,7 +59,7 @@ public final class ToUnsignedLongFromLongEvaluator extends AbstractConvertFuncti } } - private static long evalValue(LongVector container, int index) { + private long evalValue(LongVector container, int index) { long value = container.getLong(index); return ToUnsignedLong.fromLong(value); } @@ -94,29 +98,39 @@ public final class ToUnsignedLongFromLongEvaluator extends AbstractConvertFuncti } } - private static long evalValue(LongBlock container, int index) { + private long evalValue(LongBlock container, int index) { long value = container.getLong(index); return ToUnsignedLong.fromLong(value); } + @Override + public String toString() { + return "ToUnsignedLongFromLongEvaluator[" + "lng=" + lng + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(lng); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory lng; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory lng) { this.source = source; + this.lng = lng; } @Override public ToUnsignedLongFromLongEvaluator get(DriverContext context) { - return new ToUnsignedLongFromLongEvaluator(field.get(context), source, context); + return new ToUnsignedLongFromLongEvaluator(source, lng.get(context), context); } @Override public String toString() { - return "ToUnsignedLongFromLongEvaluator[field=" + field + "]"; + return "ToUnsignedLongFromLongEvaluator[" + "lng=" + lng + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromStringEvaluator.java index b13be58bfcbc..a1422cf096d8 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromStringEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.LongBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.InvalidArgumentException; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToUnsignedLongFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToUnsignedLongFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public ToUnsignedLongFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "ToUnsignedLongFromString"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -59,7 +63,7 @@ public final class ToUnsignedLongFromStringEvaluator extends AbstractConvertFunc } } - private static long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToUnsignedLong.fromKeyword(value); } @@ -99,29 +103,39 @@ public final class ToUnsignedLongFromStringEvaluator extends AbstractConvertFunc } } - private static long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private long evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToUnsignedLong.fromKeyword(value); } + @Override + public String toString() { + return "ToUnsignedLongFromStringEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public ToUnsignedLongFromStringEvaluator get(DriverContext context) { - return new ToUnsignedLongFromStringEvaluator(field.get(context), source, context); + return new ToUnsignedLongFromStringEvaluator(source, in.get(context), context); } @Override public String toString() { - return "ToUnsignedLongFromStringEvaluator[field=" + field + "]"; + return "ToUnsignedLongFromStringEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionFromStringEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionFromStringEvaluator.java index b9ad6ded04f1..fb17a111b385 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionFromStringEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionFromStringEvaluator.java @@ -13,6 +13,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; /** @@ -20,14 +21,17 @@ import org.elasticsearch.xpack.esql.core.tree.Source; * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class ToVersionFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public ToVersionFromStringEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator asString; + + public ToVersionFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator asString, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.asString = asString; } @Override - public String name() { - return "ToVersionFromString"; + public EvalOperator.ExpressionEvaluator next() { + return asString; } @Override @@ -46,7 +50,7 @@ public final class ToVersionFromStringEvaluator extends AbstractConvertFunction. } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToVersion.fromKeyword(value); } @@ -82,29 +86,39 @@ public final class ToVersionFromStringEvaluator extends AbstractConvertFunction. } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return ToVersion.fromKeyword(value); } + @Override + public String toString() { + return "ToVersionFromStringEvaluator[" + "asString=" + asString + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(asString); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory asString; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory asString) { this.source = source; + this.asString = asString; } @Override public ToVersionFromStringEvaluator get(DriverContext context) { - return new ToVersionFromStringEvaluator(field.get(context), source, context); + return new ToVersionFromStringEvaluator(source, asString.get(context), context); } @Override public String toString() { - return "ToVersionFromStringEvaluator[field=" + field + "]"; + return "ToVersionFromStringEvaluator[" + "asString=" + asString + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBEvaluator.java index 67530172987c..ca79afe188d0 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StEnvelopeFromWKBEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StEnvelopeFromWKBEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StEnvelopeFromWKBEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StEnvelopeFromWKB"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -58,7 +62,7 @@ public final class StEnvelopeFromWKBEvaluator extends AbstractConvertFunction.Ab } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StEnvelope.fromWellKnownBinary(value); } @@ -98,29 +102,39 @@ public final class StEnvelopeFromWKBEvaluator extends AbstractConvertFunction.Ab } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StEnvelope.fromWellKnownBinary(value); } + @Override + public String toString() { + return "StEnvelopeFromWKBEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StEnvelopeFromWKBEvaluator get(DriverContext context) { - return new StEnvelopeFromWKBEvaluator(field.get(context), source, context); + return new StEnvelopeFromWKBEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StEnvelopeFromWKBEvaluator[field=" + field + "]"; + return "StEnvelopeFromWKBEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBGeoEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBGeoEvaluator.java index 63ac0b27bd46..467ff0758809 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBGeoEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeFromWKBGeoEvaluator.java @@ -14,6 +14,7 @@ import org.elasticsearch.compute.data.BytesRefVector; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -22,14 +23,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StEnvelopeFromWKBGeoEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StEnvelopeFromWKBGeoEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StEnvelopeFromWKBGeoEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StEnvelopeFromWKBGeo"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -58,7 +62,7 @@ public final class StEnvelopeFromWKBGeoEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StEnvelope.fromWellKnownBinaryGeo(value); } @@ -98,29 +102,39 @@ public final class StEnvelopeFromWKBGeoEvaluator extends AbstractConvertFunction } } - private static BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private BytesRef evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StEnvelope.fromWellKnownBinaryGeo(value); } + @Override + public String toString() { + return "StEnvelopeFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StEnvelopeFromWKBGeoEvaluator get(DriverContext context) { - return new StEnvelopeFromWKBGeoEvaluator(field.get(context), source, context); + return new StEnvelopeFromWKBGeoEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StEnvelopeFromWKBGeoEvaluator[field=" + field + "]"; + return "StEnvelopeFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXFromWKBEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXFromWKBEvaluator.java index 9fdffdb4a047..a29c7a9db4a5 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXFromWKBEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXFromWKBEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StXFromWKBEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StXFromWKBEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public StXFromWKBEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "StXFromWKB"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -59,7 +63,7 @@ public final class StXFromWKBEvaluator extends AbstractConvertFunction.AbstractE } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StX.fromWellKnownBinary(value); } @@ -99,29 +103,39 @@ public final class StXFromWKBEvaluator extends AbstractConvertFunction.AbstractE } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StX.fromWellKnownBinary(value); } + @Override + public String toString() { + return "StXFromWKBEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public StXFromWKBEvaluator get(DriverContext context) { - return new StXFromWKBEvaluator(field.get(context), source, context); + return new StXFromWKBEvaluator(source, in.get(context), context); } @Override public String toString() { - return "StXFromWKBEvaluator[field=" + field + "]"; + return "StXFromWKBEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBEvaluator.java index 3e5e70648704..a63b6feaf838 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StXMaxFromWKBEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StXMaxFromWKBEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StXMaxFromWKBEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StXMaxFromWKB"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StXMaxFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMax.fromWellKnownBinary(value); } @@ -99,29 +103,39 @@ public final class StXMaxFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMax.fromWellKnownBinary(value); } + @Override + public String toString() { + return "StXMaxFromWKBEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StXMaxFromWKBEvaluator get(DriverContext context) { - return new StXMaxFromWKBEvaluator(field.get(context), source, context); + return new StXMaxFromWKBEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StXMaxFromWKBEvaluator[field=" + field + "]"; + return "StXMaxFromWKBEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBGeoEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBGeoEvaluator.java index bf0d72af3e25..2b05369d62ef 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBGeoEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxFromWKBGeoEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StXMaxFromWKBGeoEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StXMaxFromWKBGeoEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StXMaxFromWKBGeoEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StXMaxFromWKBGeo"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StXMaxFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMax.fromWellKnownBinaryGeo(value); } @@ -99,29 +103,39 @@ public final class StXMaxFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMax.fromWellKnownBinaryGeo(value); } + @Override + public String toString() { + return "StXMaxFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StXMaxFromWKBGeoEvaluator get(DriverContext context) { - return new StXMaxFromWKBGeoEvaluator(field.get(context), source, context); + return new StXMaxFromWKBGeoEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StXMaxFromWKBGeoEvaluator[field=" + field + "]"; + return "StXMaxFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBEvaluator.java index c1126b482605..f457bb8170e8 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StXMinFromWKBEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StXMinFromWKBEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StXMinFromWKBEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StXMinFromWKB"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StXMinFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMin.fromWellKnownBinary(value); } @@ -99,29 +103,39 @@ public final class StXMinFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMin.fromWellKnownBinary(value); } + @Override + public String toString() { + return "StXMinFromWKBEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StXMinFromWKBEvaluator get(DriverContext context) { - return new StXMinFromWKBEvaluator(field.get(context), source, context); + return new StXMinFromWKBEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StXMinFromWKBEvaluator[field=" + field + "]"; + return "StXMinFromWKBEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBGeoEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBGeoEvaluator.java index feb4610134ce..56421bd391d3 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBGeoEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinFromWKBGeoEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StXMinFromWKBGeoEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StXMinFromWKBGeoEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StXMinFromWKBGeoEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StXMinFromWKBGeo"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StXMinFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMin.fromWellKnownBinaryGeo(value); } @@ -99,29 +103,39 @@ public final class StXMinFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StXMin.fromWellKnownBinaryGeo(value); } + @Override + public String toString() { + return "StXMinFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StXMinFromWKBGeoEvaluator get(DriverContext context) { - return new StXMinFromWKBGeoEvaluator(field.get(context), source, context); + return new StXMinFromWKBGeoEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StXMinFromWKBGeoEvaluator[field=" + field + "]"; + return "StXMinFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYFromWKBEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYFromWKBEvaluator.java index 765f2d20f086..0f3347d6d34f 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYFromWKBEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYFromWKBEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StYFromWKBEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StYFromWKBEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator in; + + public StYFromWKBEvaluator(Source source, EvalOperator.ExpressionEvaluator in, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.in = in; } @Override - public String name() { - return "StYFromWKB"; + public EvalOperator.ExpressionEvaluator next() { + return in; } @Override @@ -59,7 +63,7 @@ public final class StYFromWKBEvaluator extends AbstractConvertFunction.AbstractE } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StY.fromWellKnownBinary(value); } @@ -99,29 +103,39 @@ public final class StYFromWKBEvaluator extends AbstractConvertFunction.AbstractE } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StY.fromWellKnownBinary(value); } + @Override + public String toString() { + return "StYFromWKBEvaluator[" + "in=" + in + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(in); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory in; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory in) { this.source = source; + this.in = in; } @Override public StYFromWKBEvaluator get(DriverContext context) { - return new StYFromWKBEvaluator(field.get(context), source, context); + return new StYFromWKBEvaluator(source, in.get(context), context); } @Override public String toString() { - return "StYFromWKBEvaluator[field=" + field + "]"; + return "StYFromWKBEvaluator[" + "in=" + in + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBEvaluator.java index 6953433fa83b..7121a9abe0a9 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StYMaxFromWKBEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StYMaxFromWKBEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StYMaxFromWKBEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StYMaxFromWKB"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StYMaxFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMax.fromWellKnownBinary(value); } @@ -99,29 +103,39 @@ public final class StYMaxFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMax.fromWellKnownBinary(value); } + @Override + public String toString() { + return "StYMaxFromWKBEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StYMaxFromWKBEvaluator get(DriverContext context) { - return new StYMaxFromWKBEvaluator(field.get(context), source, context); + return new StYMaxFromWKBEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StYMaxFromWKBEvaluator[field=" + field + "]"; + return "StYMaxFromWKBEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBGeoEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBGeoEvaluator.java index 9163932dd5a3..a0041df774c8 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBGeoEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxFromWKBGeoEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StYMaxFromWKBGeoEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StYMaxFromWKBGeoEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StYMaxFromWKBGeoEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StYMaxFromWKBGeo"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StYMaxFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMax.fromWellKnownBinaryGeo(value); } @@ -99,29 +103,39 @@ public final class StYMaxFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMax.fromWellKnownBinaryGeo(value); } + @Override + public String toString() { + return "StYMaxFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StYMaxFromWKBGeoEvaluator get(DriverContext context) { - return new StYMaxFromWKBGeoEvaluator(field.get(context), source, context); + return new StYMaxFromWKBGeoEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StYMaxFromWKBGeoEvaluator[field=" + field + "]"; + return "StYMaxFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBEvaluator.java index 94cd8169a8dc..b8ac6a10f84e 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StYMinFromWKBEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StYMinFromWKBEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StYMinFromWKBEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StYMinFromWKB"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StYMinFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMin.fromWellKnownBinary(value); } @@ -99,29 +103,39 @@ public final class StYMinFromWKBEvaluator extends AbstractConvertFunction.Abstra } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMin.fromWellKnownBinary(value); } + @Override + public String toString() { + return "StYMinFromWKBEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StYMinFromWKBEvaluator get(DriverContext context) { - return new StYMinFromWKBEvaluator(field.get(context), source, context); + return new StYMinFromWKBEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StYMinFromWKBEvaluator[field=" + field + "]"; + return "StYMinFromWKBEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBGeoEvaluator.java b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBGeoEvaluator.java index 751fc84930df..9d10fd812cec 100644 --- a/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBGeoEvaluator.java +++ b/x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinFromWKBGeoEvaluator.java @@ -15,6 +15,7 @@ import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; +import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.tree.Source; import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractConvertFunction; @@ -23,14 +24,17 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.convert.AbstractC * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead. */ public final class StYMinFromWKBGeoEvaluator extends AbstractConvertFunction.AbstractEvaluator { - public StYMinFromWKBGeoEvaluator(EvalOperator.ExpressionEvaluator field, Source source, + private final EvalOperator.ExpressionEvaluator wkb; + + public StYMinFromWKBGeoEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb, DriverContext driverContext) { - super(driverContext, field, source); + super(driverContext, source); + this.wkb = wkb; } @Override - public String name() { - return "StYMinFromWKBGeo"; + public EvalOperator.ExpressionEvaluator next() { + return wkb; } @Override @@ -59,7 +63,7 @@ public final class StYMinFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefVector container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMin.fromWellKnownBinaryGeo(value); } @@ -99,29 +103,39 @@ public final class StYMinFromWKBGeoEvaluator extends AbstractConvertFunction.Abs } } - private static double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { + private double evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { BytesRef value = container.getBytesRef(index, scratchPad); return StYMin.fromWellKnownBinaryGeo(value); } + @Override + public String toString() { + return "StYMinFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; + } + + @Override + public void close() { + Releasables.closeExpectNoException(wkb); + } + public static class Factory implements EvalOperator.ExpressionEvaluator.Factory { private final Source source; - private final EvalOperator.ExpressionEvaluator.Factory field; + private final EvalOperator.ExpressionEvaluator.Factory wkb; - public Factory(EvalOperator.ExpressionEvaluator.Factory field, Source source) { - this.field = field; + public Factory(Source source, EvalOperator.ExpressionEvaluator.Factory wkb) { this.source = source; + this.wkb = wkb; } @Override public StYMinFromWKBGeoEvaluator get(DriverContext context) { - return new StYMinFromWKBGeoEvaluator(field.get(context), source, context); + return new StYMinFromWKBGeoEvaluator(source, wkb.get(context), context); } @Override public String toString() { - return "StYMinFromWKBGeoEvaluator[field=" + field + "]"; + return "StYMinFromWKBGeoEvaluator[" + "wkb=" + wkb + "]"; } } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/AbstractConvertFunction.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/AbstractConvertFunction.java index 8abcdb978e5c..229687b1f669 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/AbstractConvertFunction.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/AbstractConvertFunction.java @@ -9,6 +9,8 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert; import joptsimple.internal.Strings; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.compute.data.Block; import org.elasticsearch.compute.data.Page; @@ -17,9 +19,6 @@ import org.elasticsearch.compute.operator.DriverContext; import org.elasticsearch.compute.operator.EvalOperator; import org.elasticsearch.compute.operator.EvalOperator.ExpressionEvaluator; import org.elasticsearch.compute.operator.Warnings; -import org.elasticsearch.core.Releasables; -import org.elasticsearch.logging.LogManager; -import org.elasticsearch.logging.Logger; import org.elasticsearch.xpack.esql.EsqlIllegalArgumentException; import org.elasticsearch.xpack.esql.core.expression.Expression; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -66,7 +65,7 @@ public abstract class AbstractConvertFunction extends UnaryScalarFunction { if (factory == null) { throw EsqlIllegalArgumentException.illegalDataType(sourceType); } - return factory.build(fieldEval, source()); + return factory.build(source(), fieldEval); } @Override @@ -101,7 +100,7 @@ public abstract class AbstractConvertFunction extends UnaryScalarFunction { @FunctionalInterface interface BuildFactory { - ExpressionEvaluator.Factory build(ExpressionEvaluator.Factory field, Source source); + ExpressionEvaluator.Factory build(Source source, ExpressionEvaluator.Factory field); } /** @@ -128,15 +127,13 @@ public abstract class AbstractConvertFunction extends UnaryScalarFunction { public abstract static class AbstractEvaluator implements EvalOperator.ExpressionEvaluator { - private static final Logger logger = LogManager.getLogger(AbstractEvaluator.class); + private static final Log logger = LogFactory.getLog(AbstractEvaluator.class); protected final DriverContext driverContext; - private final EvalOperator.ExpressionEvaluator fieldEvaluator; private final Warnings warnings; - protected AbstractEvaluator(DriverContext driverContext, EvalOperator.ExpressionEvaluator field, Source source) { + protected AbstractEvaluator(DriverContext driverContext, Source source) { this.driverContext = driverContext; - this.fieldEvaluator = field; this.warnings = Warnings.createWarnings( driverContext.warningsMode(), source.source().getLineNumber(), @@ -145,7 +142,7 @@ public abstract class AbstractConvertFunction extends UnaryScalarFunction { ); } - protected abstract String name(); + protected abstract ExpressionEvaluator next(); /** * Called when evaluating a {@link Block} that contains null values. @@ -161,7 +158,7 @@ public abstract class AbstractConvertFunction extends UnaryScalarFunction { @Override public final Block eval(Page page) { - try (Block block = fieldEvaluator.eval(page)) { + try (Block block = next().eval(page)) { Vector vector = block.asVector(); return vector == null ? evalBlock(block) : evalVector(vector); } @@ -171,16 +168,5 @@ public abstract class AbstractConvertFunction extends UnaryScalarFunction { logger.trace("conversion failure", exception); warnings.registerException(exception); } - - @Override - public final String toString() { - return name() + "Evaluator[field=" + fieldEvaluator + "]"; - } - - @Override - public void close() { - // TODO toString allocates - we should probably check breakers there too - Releasables.closeExpectNoException(fieldEvaluator); - } } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java new file mode 100644 index 000000000000..e83c85614f24 --- /dev/null +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIp.java @@ -0,0 +1,232 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.xpack.esql.expression.function.scalar.convert; + +import org.apache.lucene.document.InetAddressPoint; +import org.apache.lucene.util.BytesRef; +import org.elasticsearch.common.breaker.CircuitBreaker; +import org.elasticsearch.common.network.InetAddresses; +import org.elasticsearch.compute.ann.ConvertEvaluator; +import org.elasticsearch.compute.ann.Fixed; +import org.elasticsearch.compute.operator.BreakingBytesRefBuilder; +import org.elasticsearch.compute.operator.EvalOperator; + +import java.net.InetAddress; + +/** + * Fast IP parsing suitable for embedding in an {@link EvalOperator.ExpressionEvaluator} + * because they don't allocate memory on every run. Instead, it converts directly from + * utf-8 encoded strings into {@link InetAddressPoint} encoded ips. + *

+ * This contains three parsing methods to handle the three ways ipv4 addresses + * have historically handled leading 0s, namely, {@link #leadingZerosRejected reject} them, + * treat them as {@link #leadingZerosAreDecimal decimal} numbers, and treat them as + * {@link #leadingZerosAreOctal} numbers. + *

+ *

+ * Note: We say "directly from utf-8" but, really, all of the digits in an ip are + * in the traditional 7-bit ascii range where utf-8 overlaps. So we just treat everything + * as 7-bit ascii. Anything that isn't in the range is an invalid ip anyway. Much love + * for the designers of utf-8 for making it this way. + *

+ */ +public class ParseIp { + private static final byte[] IPV4_PREFIX = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1 }; + + static final AbstractConvertFunction.BuildFactory FROM_KEYWORD_LEADING_ZEROS_REJECTED = (source, field) -> { + return new ParseIpLeadingZerosRejectedEvaluator.Factory(source, field, driverContext -> buildScratch(driverContext.breaker())); + }; + + public static BreakingBytesRefBuilder buildScratch(CircuitBreaker breaker) { + BreakingBytesRefBuilder scratch = new BreakingBytesRefBuilder(breaker, "to_ip", 16); + scratch.setLength(InetAddressPoint.BYTES); + return scratch; + } + + /** + * Parse an IP address, rejecting v4 addresses with leading 0s. This aligns + * exactly with {@link InetAddresses#forString(String)}. + *
    + *
  • 192.168.1.1 : valid
  • + *
  • 192.168.0.1 : valid
  • + *
  • 192.168.01.1 : invalid
  • + *
+ * @param scratch A "scratch" memory space build by {@link #buildScratch} + */ + @ConvertEvaluator(extraName = "LeadingZerosRejected", warnExceptions = { IllegalArgumentException.class }) + public static BytesRef leadingZerosRejected( + BytesRef string, + @Fixed(includeInToString = false, scope = Fixed.Scope.THREAD_LOCAL) BreakingBytesRefBuilder scratch + ) { + /* + * If this is an ipv6 address then delegate to InetAddresses.forString + * because we don't have anything nice for parsing those. + */ + int end = string.offset + string.length; + if (isV6(string, end)) { + InetAddress inetAddress = InetAddresses.forString(string.utf8ToString()); + return new BytesRef(InetAddressPoint.encode(inetAddress)); + } + + System.arraycopy(IPV4_PREFIX, 0, scratch.bytes(), 0, IPV4_PREFIX.length); + int offset = string.offset; + for (int dest = IPV4_PREFIX.length; dest < InetAddressPoint.BYTES; dest++) { + if (offset >= end) { + throw invalid(string); + } + if (string.bytes[offset] == '0') { + // Lone zeros are just 0, but a 0 with numbers after it are invalid + offset++; + if (offset == end || string.bytes[offset] == '.') { + scratch.bytes()[dest] = (byte) 0; + offset++; + continue; + } + throw invalid(string); + } + int v = digit(string, offset++); + while (offset < end && string.bytes[offset] != '.') { + v = v * 10 + digit(string, offset++); + } + offset++; + if (v > 255) { + throw invalid(string); + } + scratch.bytes()[dest] = (byte) v; + } + return scratch.bytesRefView(); + } + + /** + * Parse an IP address, interpreting v4 addresses with leading 0s as + * decimal numbers. + *
    + *
  • 192.168.1.1 : valid
  • + *
  • 192.168.0.1 : valid
  • + *
  • 192.168.01.1 : valid
  • + *
  • 192.168.09.1 : valid
  • + *
  • 192.168.010.1 : valid
  • + *
+ * @param scratch A "scratch" memory space build by {@link #buildScratch} + */ + @ConvertEvaluator(extraName = "LeadingZerosAreDecimal", warnExceptions = { IllegalArgumentException.class }) + public static BytesRef leadingZerosAreDecimal( + BytesRef string, + @Fixed(includeInToString = false, scope = Fixed.Scope.THREAD_LOCAL) BreakingBytesRefBuilder scratch + ) { + /* + * If this is an ipv6 address then delegate to InetAddresses.forString + * because we don't have anything nice for parsing those. + */ + int end = string.offset + string.length; + if (isV6(string, end)) { + InetAddress inetAddress = InetAddresses.forString(string.utf8ToString()); + return new BytesRef(InetAddressPoint.encode(inetAddress)); + } + + System.arraycopy(IPV4_PREFIX, 0, scratch.bytes(), 0, IPV4_PREFIX.length); + int offset = string.offset; + for (int dest = IPV4_PREFIX.length; dest < InetAddressPoint.BYTES; dest++) { + if (offset >= end) { + throw invalid(string); + } + int v = digit(string, offset++); + while (offset < end && string.bytes[offset] != '.') { + v = v * 10 + digit(string, offset++); + } + offset++; + if (v > 255) { + throw invalid(string); + } + scratch.bytes()[dest] = (byte) v; + } + return scratch.bytesRefView(); + } + + /** + * Parse an IP address, interpreting v4 addresses with leading 0s as + * octal numbers. + *
    + *
  • 192.168.1.1 : valid
  • + *
  • 192.168.0.1 : valid
  • + *
  • 192.168.01.1 : valid
  • + *
  • 192.168.09.1 : invalid
  • + *
  • 192.168.010.1 : valid but would print as 192.168.8.1
  • + *
+ * @param scratch A "scratch" memory space build by {@link #buildScratch} + */ + @ConvertEvaluator(extraName = "LeadingZerosAreOctal", warnExceptions = { IllegalArgumentException.class }) + public static BytesRef leadingZerosAreOctal( + BytesRef string, + @Fixed(includeInToString = false, scope = Fixed.Scope.THREAD_LOCAL) BreakingBytesRefBuilder scratch + ) { + /* + * If this is an ipv6 address then delegate to InetAddresses.forString + * because we don't have anything nice for parsing those. + */ + int end = string.offset + string.length; + if (isV6(string, end)) { + InetAddress inetAddress = InetAddresses.forString(string.utf8ToString()); + return new BytesRef(InetAddressPoint.encode(inetAddress)); + } + + System.arraycopy(IPV4_PREFIX, 0, scratch.bytes(), 0, IPV4_PREFIX.length); + int offset = string.offset; + for (int dest = IPV4_PREFIX.length; dest < InetAddressPoint.BYTES; dest++) { + if (offset >= end) { + throw invalid(string); + } + int v; + if (string.bytes[offset] == '0') { + // Octal + offset++; + v = 0; + while (offset < end && string.bytes[offset] != '.') { + v = v * 8 + octalDigit(string, offset++); + } + offset++; + } else { + // Decimal + v = digit(string, offset++); + while (offset < end && string.bytes[offset] != '.') { + v = v * 10 + digit(string, offset++); + } + offset++; + } + scratch.bytes()[dest] = (byte) v; + } + return scratch.bytesRefView(); + } + + private static int digit(BytesRef string, int offset) { + if (string.bytes[offset] < '0' && '9' < string.bytes[offset]) { + throw invalid(string); + } + return string.bytes[offset] - '0'; + } + + private static int octalDigit(BytesRef string, int offset) { + if (string.bytes[offset] < '0' && '7' < string.bytes[offset]) { + throw invalid(string); + } + return string.bytes[offset] - '0'; + } + + private static IllegalArgumentException invalid(BytesRef string) { + return new IllegalArgumentException("'" + string.utf8ToString() + "' is not an IP string literal."); + } + + private static boolean isV6(BytesRef string, int end) { + for (int i = string.offset; i < end; i++) { + if (string.bytes[i] == ':') { + return true; + } + } + return false; + } +} diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBoolean.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBoolean.java index 8f4abeb38628..3d60c0c5df8d 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBoolean.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBoolean.java @@ -42,7 +42,7 @@ public class ToBoolean extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(BOOLEAN, (field, source) -> field), + Map.entry(BOOLEAN, (source, field) -> field), Map.entry(KEYWORD, ToBooleanFromStringEvaluator.Factory::new), Map.entry(TEXT, ToBooleanFromStringEvaluator.Factory::new), Map.entry(SEMANTIC_TEXT, ToBooleanFromStringEvaluator.Factory::new), diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPoint.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPoint.java index 92ae2cd0ade5..351d07063479 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPoint.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPoint.java @@ -37,7 +37,7 @@ public class ToCartesianPoint extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(CARTESIAN_POINT, (fieldEval, source) -> fieldEval), + Map.entry(CARTESIAN_POINT, (source, fieldEval) -> fieldEval), Map.entry(KEYWORD, ToCartesianPointFromStringEvaluator.Factory::new), Map.entry(TEXT, ToCartesianPointFromStringEvaluator.Factory::new), Map.entry(SEMANTIC_TEXT, ToCartesianPointFromStringEvaluator.Factory::new) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShape.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShape.java index 83e66e9e3190..53d7f187f73a 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShape.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShape.java @@ -38,8 +38,8 @@ public class ToCartesianShape extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(CARTESIAN_POINT, (fieldEval, source) -> fieldEval), - Map.entry(CARTESIAN_SHAPE, (fieldEval, source) -> fieldEval), + Map.entry(CARTESIAN_POINT, (source, fieldEval) -> fieldEval), + Map.entry(CARTESIAN_SHAPE, (source, fieldEval) -> fieldEval), Map.entry(KEYWORD, ToCartesianShapeFromStringEvaluator.Factory::new), Map.entry(TEXT, ToCartesianShapeFromStringEvaluator.Factory::new), Map.entry(SEMANTIC_TEXT, ToCartesianShapeFromStringEvaluator.Factory::new) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanos.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanos.java index 006d3105159f..1b5dc4ad119e 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanos.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanos.java @@ -47,7 +47,7 @@ public class ToDateNanos extends AbstractConvertFunction { private static final Map EVALUATORS = Map.ofEntries( Map.entry(DATETIME, ToDateNanosFromDatetimeEvaluator.Factory::new), - Map.entry(DATE_NANOS, (field, source) -> field), + Map.entry(DATE_NANOS, (source, field) -> field), Map.entry(LONG, ToDateNanosFromLongEvaluator.Factory::new), Map.entry(KEYWORD, ToDateNanosFromStringEvaluator.Factory::new), Map.entry(TEXT, ToDateNanosFromStringEvaluator.Factory::new), diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetime.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetime.java index b25d9b2b9909..1908fd39fe19 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetime.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetime.java @@ -43,9 +43,9 @@ public class ToDatetime extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(DATETIME, (field, source) -> field), + Map.entry(DATETIME, (source, field) -> field), Map.entry(DATE_NANOS, ToDatetimeFromDateNanosEvaluator.Factory::new), - Map.entry(LONG, (field, source) -> field), + Map.entry(LONG, (source, field) -> field), Map.entry(KEYWORD, ToDatetimeFromStringEvaluator.Factory::new), Map.entry(TEXT, ToDatetimeFromStringEvaluator.Factory::new), Map.entry(SEMANTIC_TEXT, ToDatetimeFromStringEvaluator.Factory::new), diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegrees.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegrees.java index 4eb6662e3e97..d49bc2bcbe42 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegrees.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegrees.java @@ -42,11 +42,11 @@ public class ToDegrees extends AbstractConvertFunction implements EvaluatorMappe private static final Map EVALUATORS = Map.ofEntries( Map.entry(DOUBLE, ToDegreesEvaluator.Factory::new), - Map.entry(INTEGER, (field, source) -> new ToDegreesEvaluator.Factory(new ToDoubleFromIntEvaluator.Factory(field, source), source)), - Map.entry(LONG, (field, source) -> new ToDegreesEvaluator.Factory(new ToDoubleFromLongEvaluator.Factory(field, source), source)), + Map.entry(INTEGER, (source, field) -> new ToDegreesEvaluator.Factory(source, new ToDoubleFromIntEvaluator.Factory(source, field))), + Map.entry(LONG, (source, field) -> new ToDegreesEvaluator.Factory(source, new ToDoubleFromLongEvaluator.Factory(source, field))), Map.entry( UNSIGNED_LONG, - (field, source) -> new ToDegreesEvaluator.Factory(new ToDoubleFromUnsignedLongEvaluator.Factory(field, source), source) + (source, field) -> new ToDegreesEvaluator.Factory(source, new ToDoubleFromUnsignedLongEvaluator.Factory(source, field)) ) ); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDouble.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDouble.java index 76320920359b..9e57d7b8fc0a 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDouble.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDouble.java @@ -40,7 +40,7 @@ public class ToDouble extends AbstractConvertFunction { public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "ToDouble", ToDouble::new); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(DOUBLE, (fieldEval, source) -> fieldEval), + Map.entry(DOUBLE, (source, fieldEval) -> fieldEval), Map.entry(BOOLEAN, ToDoubleFromBooleanEvaluator.Factory::new), Map.entry(DATETIME, ToDoubleFromLongEvaluator.Factory::new), // CastLongToDoubleEvaluator would be a candidate, but not MV'd Map.entry(KEYWORD, ToDoubleFromStringEvaluator.Factory::new), @@ -49,7 +49,7 @@ public class ToDouble extends AbstractConvertFunction { Map.entry(UNSIGNED_LONG, ToDoubleFromUnsignedLongEvaluator.Factory::new), Map.entry(LONG, ToDoubleFromLongEvaluator.Factory::new), // CastLongToDoubleEvaluator would be a candidate, but not MV'd Map.entry(INTEGER, ToDoubleFromIntEvaluator.Factory::new), // CastIntToDoubleEvaluator would be a candidate, but not MV'd - Map.entry(DataType.COUNTER_DOUBLE, (field, source) -> field), + Map.entry(DataType.COUNTER_DOUBLE, (source, field) -> field), Map.entry(DataType.COUNTER_INTEGER, ToDoubleFromIntEvaluator.Factory::new), Map.entry(DataType.COUNTER_LONG, ToDoubleFromLongEvaluator.Factory::new) ); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPoint.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPoint.java index 42af06a40553..9eb9e3691be1 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPoint.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPoint.java @@ -37,7 +37,7 @@ public class ToGeoPoint extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(GEO_POINT, (fieldEval, source) -> fieldEval), + Map.entry(GEO_POINT, (source, fieldEval) -> fieldEval), Map.entry(KEYWORD, ToGeoPointFromStringEvaluator.Factory::new), Map.entry(TEXT, ToGeoPointFromStringEvaluator.Factory::new), Map.entry(SEMANTIC_TEXT, ToGeoPointFromStringEvaluator.Factory::new) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShape.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShape.java index b5b6db2752b0..d8b1e81f4331 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShape.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShape.java @@ -38,8 +38,8 @@ public class ToGeoShape extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(GEO_POINT, (fieldEval, source) -> fieldEval), - Map.entry(GEO_SHAPE, (fieldEval, source) -> fieldEval), + Map.entry(GEO_POINT, (source, fieldEval) -> fieldEval), + Map.entry(GEO_SHAPE, (source, fieldEval) -> fieldEval), Map.entry(KEYWORD, ToGeoShapeFromStringEvaluator.Factory::new), Map.entry(TEXT, ToGeoShapeFromStringEvaluator.Factory::new), Map.entry(SEMANTIC_TEXT, ToGeoShapeFromStringEvaluator.Factory::new) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIP.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIP.java index 2b8597f56ee1..262c20259a8d 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIP.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIP.java @@ -7,10 +7,8 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert; -import org.apache.lucene.util.BytesRef; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.compute.ann.ConvertEvaluator; import org.elasticsearch.xpack.esql.core.expression.Expression; import org.elasticsearch.xpack.esql.core.tree.NodeInfo; import org.elasticsearch.xpack.esql.core.tree.Source; @@ -27,16 +25,16 @@ import static org.elasticsearch.xpack.esql.core.type.DataType.IP; import static org.elasticsearch.xpack.esql.core.type.DataType.KEYWORD; import static org.elasticsearch.xpack.esql.core.type.DataType.SEMANTIC_TEXT; import static org.elasticsearch.xpack.esql.core.type.DataType.TEXT; -import static org.elasticsearch.xpack.esql.type.EsqlDataTypeConverter.stringToIP; +import static org.elasticsearch.xpack.esql.expression.function.scalar.convert.ParseIp.FROM_KEYWORD_LEADING_ZEROS_REJECTED; public class ToIP extends AbstractConvertFunction { public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "ToIP", ToIP::new); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(IP, (field, source) -> field), - Map.entry(KEYWORD, ToIPFromStringEvaluator.Factory::new), - Map.entry(TEXT, ToIPFromStringEvaluator.Factory::new), - Map.entry(SEMANTIC_TEXT, ToIPFromStringEvaluator.Factory::new) + Map.entry(IP, (source, field) -> field), + Map.entry(KEYWORD, FROM_KEYWORD_LEADING_ZEROS_REJECTED), + Map.entry(TEXT, FROM_KEYWORD_LEADING_ZEROS_REJECTED), + Map.entry(SEMANTIC_TEXT, FROM_KEYWORD_LEADING_ZEROS_REJECTED) ); @FunctionInfo( @@ -92,9 +90,4 @@ public class ToIP extends AbstractConvertFunction { protected NodeInfo info() { return NodeInfo.create(this, ToIP::new, field()); } - - @ConvertEvaluator(extraName = "FromString", warnExceptions = { IllegalArgumentException.class }) - static BytesRef fromKeyword(BytesRef asString) { - return stringToIP(asString); - } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToInteger.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToInteger.java index 910d47150643..142a2ff2c4bb 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToInteger.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToInteger.java @@ -46,7 +46,7 @@ public class ToInteger extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(INTEGER, (fieldEval, source) -> fieldEval), + Map.entry(INTEGER, (source, fieldEval) -> fieldEval), Map.entry(BOOLEAN, ToIntegerFromBooleanEvaluator.Factory::new), Map.entry(DATETIME, ToIntegerFromLongEvaluator.Factory::new), Map.entry(KEYWORD, ToIntegerFromStringEvaluator.Factory::new), @@ -55,7 +55,7 @@ public class ToInteger extends AbstractConvertFunction { Map.entry(DOUBLE, ToIntegerFromDoubleEvaluator.Factory::new), Map.entry(UNSIGNED_LONG, ToIntegerFromUnsignedLongEvaluator.Factory::new), Map.entry(LONG, ToIntegerFromLongEvaluator.Factory::new), - Map.entry(COUNTER_INTEGER, (fieldEval, source) -> fieldEval) + Map.entry(COUNTER_INTEGER, (source, fieldEval) -> fieldEval) ); @FunctionInfo( diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLong.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLong.java index b52e74609327..f29c10aa0465 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLong.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLong.java @@ -42,9 +42,9 @@ public class ToLong extends AbstractConvertFunction { public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "ToLong", ToLong::new); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(LONG, (fieldEval, source) -> fieldEval), - Map.entry(DATETIME, (fieldEval, source) -> fieldEval), - Map.entry(DATE_NANOS, (fieldEval, source) -> fieldEval), + Map.entry(LONG, (source, fieldEval) -> fieldEval), + Map.entry(DATETIME, (source, fieldEval) -> fieldEval), + Map.entry(DATE_NANOS, (source, fieldEval) -> fieldEval), Map.entry(BOOLEAN, ToLongFromBooleanEvaluator.Factory::new), Map.entry(KEYWORD, ToLongFromStringEvaluator.Factory::new), Map.entry(TEXT, ToLongFromStringEvaluator.Factory::new), @@ -52,7 +52,7 @@ public class ToLong extends AbstractConvertFunction { Map.entry(DOUBLE, ToLongFromDoubleEvaluator.Factory::new), Map.entry(UNSIGNED_LONG, ToLongFromUnsignedLongEvaluator.Factory::new), Map.entry(INTEGER, ToLongFromIntEvaluator.Factory::new), // CastIntToLongEvaluator would be a candidate, but not MV'd - Map.entry(DataType.COUNTER_LONG, (field, source) -> field), + Map.entry(DataType.COUNTER_LONG, (source, field) -> field), Map.entry(DataType.COUNTER_INTEGER, ToLongFromIntEvaluator.Factory::new) ); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadians.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadians.java index a73c75a4e823..a4c1b556af23 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadians.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadians.java @@ -41,11 +41,11 @@ public class ToRadians extends AbstractConvertFunction implements EvaluatorMappe private static final Map EVALUATORS = Map.ofEntries( Map.entry(DOUBLE, ToRadiansEvaluator.Factory::new), - Map.entry(INTEGER, (field, source) -> new ToRadiansEvaluator.Factory(new ToDoubleFromIntEvaluator.Factory(field, source), source)), - Map.entry(LONG, (field, source) -> new ToRadiansEvaluator.Factory(new ToDoubleFromLongEvaluator.Factory(field, source), source)), + Map.entry(INTEGER, (source, field) -> new ToRadiansEvaluator.Factory(source, new ToDoubleFromIntEvaluator.Factory(source, field))), + Map.entry(LONG, (source, field) -> new ToRadiansEvaluator.Factory(source, new ToDoubleFromLongEvaluator.Factory(source, field))), Map.entry( UNSIGNED_LONG, - (field, source) -> new ToRadiansEvaluator.Factory(new ToDoubleFromUnsignedLongEvaluator.Factory(field, source), source) + (source, field) -> new ToRadiansEvaluator.Factory(source, new ToDoubleFromUnsignedLongEvaluator.Factory(source, field)) ) ); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToString.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToString.java index 2c8ecd794ef0..c5096b110b5b 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToString.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToString.java @@ -52,7 +52,7 @@ public class ToString extends AbstractConvertFunction implements EvaluatorMapper public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "ToString", ToString::new); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(KEYWORD, (fieldEval, source) -> fieldEval), + Map.entry(KEYWORD, (source, fieldEval) -> fieldEval), Map.entry(BOOLEAN, ToStringFromBooleanEvaluator.Factory::new), Map.entry(DATETIME, ToStringFromDatetimeEvaluator.Factory::new), Map.entry(DATE_NANOS, ToStringFromDateNanosEvaluator.Factory::new), @@ -60,8 +60,8 @@ public class ToString extends AbstractConvertFunction implements EvaluatorMapper Map.entry(DOUBLE, ToStringFromDoubleEvaluator.Factory::new), Map.entry(LONG, ToStringFromLongEvaluator.Factory::new), Map.entry(INTEGER, ToStringFromIntEvaluator.Factory::new), - Map.entry(TEXT, (fieldEval, source) -> fieldEval), - Map.entry(SEMANTIC_TEXT, (fieldEval, source) -> fieldEval), + Map.entry(TEXT, (source, fieldEval) -> fieldEval), + Map.entry(SEMANTIC_TEXT, (source, fieldEval) -> fieldEval), Map.entry(VERSION, ToStringFromVersionEvaluator.Factory::new), Map.entry(UNSIGNED_LONG, ToStringFromUnsignedLongEvaluator.Factory::new), Map.entry(GEO_POINT, ToStringFromGeoPointEvaluator.Factory::new), diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLong.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLong.java index 93df809d34c1..fc2c8f60d8d2 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLong.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLong.java @@ -47,7 +47,7 @@ public class ToUnsignedLong extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(UNSIGNED_LONG, (fieldEval, source) -> fieldEval), + Map.entry(UNSIGNED_LONG, (source, fieldEval) -> fieldEval), Map.entry(DATETIME, ToUnsignedLongFromLongEvaluator.Factory::new), Map.entry(BOOLEAN, ToUnsignedLongFromBooleanEvaluator.Factory::new), Map.entry(KEYWORD, ToUnsignedLongFromStringEvaluator.Factory::new), diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersion.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersion.java index 296ddb35c3c4..21cad88a5d24 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersion.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersion.java @@ -37,7 +37,7 @@ public class ToVersion extends AbstractConvertFunction { ); private static final Map EVALUATORS = Map.ofEntries( - Map.entry(VERSION, (fieldEval, source) -> fieldEval), + Map.entry(VERSION, (source, fieldEval) -> fieldEval), Map.entry(KEYWORD, ToVersionFromStringEvaluator.Factory::new), Map.entry(TEXT, ToVersionFromStringEvaluator.Factory::new), Map.entry(SEMANTIC_TEXT, ToVersionFromStringEvaluator.Factory::new) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelope.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelope.java index ca243efcc285..eac374ac9d61 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelope.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelope.java @@ -91,9 +91,9 @@ public class StEnvelope extends UnaryScalarFunction { @Override public EvalOperator.ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) { if (field().dataType() == GEO_POINT || field().dataType() == DataType.GEO_SHAPE) { - return new StEnvelopeFromWKBGeoEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StEnvelopeFromWKBGeoEvaluator.Factory(source(), toEvaluator.apply(field())); } - return new StEnvelopeFromWKBEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StEnvelopeFromWKBEvaluator.Factory(source(), toEvaluator.apply(field())); } @Override diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StX.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StX.java index d1d85b03eb18..1d8126a90ded 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StX.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StX.java @@ -72,7 +72,7 @@ public class StX extends UnaryScalarFunction { @Override public EvalOperator.ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) { - return new StXFromWKBEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StXFromWKBEvaluator.Factory(source(), toEvaluator.apply(field())); } @Override diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMax.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMax.java index 69eede1c5fac..4bf01e61f89e 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMax.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMax.java @@ -76,9 +76,9 @@ public class StXMax extends UnaryScalarFunction { @Override public EvalOperator.ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) { if (field().dataType() == GEO_POINT || field().dataType() == DataType.GEO_SHAPE) { - return new StXMaxFromWKBGeoEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StXMaxFromWKBGeoEvaluator.Factory(source(), toEvaluator.apply(field())); } - return new StXMaxFromWKBEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StXMaxFromWKBEvaluator.Factory(source(), toEvaluator.apply(field())); } @Override diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMin.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMin.java index b29a547ab0af..f19f53ee7eae 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMin.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMin.java @@ -76,9 +76,9 @@ public class StXMin extends UnaryScalarFunction { @Override public EvalOperator.ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) { if (field().dataType() == GEO_POINT || field().dataType() == DataType.GEO_SHAPE) { - return new StXMinFromWKBGeoEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StXMinFromWKBGeoEvaluator.Factory(source(), toEvaluator.apply(field())); } - return new StXMinFromWKBEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StXMinFromWKBEvaluator.Factory(source(), toEvaluator.apply(field())); } @Override diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StY.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StY.java index 2056dcaed87a..0425f1ffa632 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StY.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StY.java @@ -72,7 +72,7 @@ public class StY extends UnaryScalarFunction { @Override public EvalOperator.ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) { - return new StYFromWKBEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StYFromWKBEvaluator.Factory(source(), toEvaluator.apply(field())); } @Override diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMax.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMax.java index 981b500bcaef..87298b879694 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMax.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMax.java @@ -76,9 +76,9 @@ public class StYMax extends UnaryScalarFunction { @Override public EvalOperator.ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) { if (field().dataType() == GEO_POINT || field().dataType() == DataType.GEO_SHAPE) { - return new StYMaxFromWKBGeoEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StYMaxFromWKBGeoEvaluator.Factory(source(), toEvaluator.apply(field())); } - return new StYMaxFromWKBEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StYMaxFromWKBEvaluator.Factory(source(), toEvaluator.apply(field())); } @Override diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMin.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMin.java index 882aeb30afae..d300312b16ee 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMin.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMin.java @@ -76,9 +76,9 @@ public class StYMin extends UnaryScalarFunction { @Override public EvalOperator.ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) { if (field().dataType() == GEO_POINT || field().dataType() == DataType.GEO_SHAPE) { - return new StYMinFromWKBGeoEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StYMinFromWKBGeoEvaluator.Factory(source(), toEvaluator.apply(field())); } - return new StYMinFromWKBEvaluator.Factory(toEvaluator.apply(field()), source()); + return new StYMinFromWKBEvaluator.Factory(source(), toEvaluator.apply(field())); } @Override diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java new file mode 100644 index 000000000000..1a7a78a880db --- /dev/null +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpTests.java @@ -0,0 +1,206 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.xpack.esql.expression.function.scalar.convert; + +import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; + +import org.apache.lucene.document.InetAddressPoint; +import org.apache.lucene.util.BytesRef; +import org.elasticsearch.common.breaker.NoopCircuitBreaker; +import org.elasticsearch.common.network.InetAddresses; +import org.elasticsearch.common.network.NetworkAddress; +import org.elasticsearch.compute.operator.BreakingBytesRefBuilder; +import org.elasticsearch.test.ESTestCase; + +import java.net.InetAddress; +import java.util.List; +import java.util.function.BiFunction; +import java.util.function.Supplier; + +import static org.hamcrest.Matchers.equalTo; + +public class ParseIpTests extends ESTestCase { + @ParametersFactory(argumentFormatting = "%s") + public static Iterable parameters() { + List strs = List.of( + new TestCase("192.168.1.1", true, true, true), + new TestCase("192.168.0.1", true, true, true), + new TestCase("255.255.255.255", true, true, true), + new TestCase("1.1.1.1", true, true, true), + new TestCase("0.0.0.0", true, true, true), + + new TestCase("192.168.01.1", false, true, true), + new TestCase("192.168.0255.1", false, true, true), + + new TestCase("1", false, false, false), + new TestCase("0", false, false, false), + new TestCase("255.1", false, false, false), + new TestCase("255.0", false, false, false), + new TestCase("255.255.1", false, false, false), + new TestCase("255.255.0", false, false, false), + new TestCase(new Supplier<>() { + @Override + public String get() { + return NetworkAddress.format(randomIp(true)); + } + + @Override + public String toString() { + return "v4"; + } + }, true, true, true), + new TestCase(new Supplier<>() { + @Override + public String get() { + return NetworkAddress.format(randomIp(false)); + } + + @Override + public String toString() { + return "v6"; + } + }, true, true, true) + ); + return strs.stream().map(s -> new Object[] { s }).toList(); + } + + private record TestCase( + Supplier str, + boolean validLeadingZerosRejected, + boolean validLeadingZerosAreDecimal, + boolean validLeadingZerosAreOctal + ) { + TestCase(String str, boolean validLeadingZerosRejected, boolean validLeadingZerosAreDecimal, boolean validLeadingZerosAreOctal) { + this(new Supplier<>() { + @Override + public String get() { + return str; + } + + @Override + public String toString() { + return str; + } + }, validLeadingZerosRejected, validLeadingZerosAreDecimal, validLeadingZerosAreOctal); + } + } + + private final TestCase testCase; + private final String str; + + public ParseIpTests(TestCase testCase) { + this.testCase = testCase; + this.str = testCase.str.get(); + } + + public void testLeadingZerosRejecting() { + if (testCase.validLeadingZerosRejected) { + InetAddress inetAddress = InetAddresses.forString(str); + BytesRef expected = new BytesRef(InetAddressPoint.encode(inetAddress)); + success(ParseIp::leadingZerosRejected, expected); + } else { + failure(ParseIp::leadingZerosRejected); + } + } + + public void testLeadingZerosAreDecimal() { + if (testCase.validLeadingZerosAreDecimal) { + InetAddress inetAddress = InetAddresses.forString(leadingZerosAreDecimalToIp(str)); + BytesRef expected = new BytesRef(InetAddressPoint.encode(inetAddress)); + success(ParseIp::leadingZerosAreDecimal, expected); + } else { + failure(ParseIp::leadingZerosAreDecimal); + } + } + + public void testLeadingZerosAreOctal() { + if (testCase.validLeadingZerosAreOctal) { + InetAddress inetAddress = InetAddresses.forString(leadingZerosAreOctalToIp(str)); + BytesRef expected = new BytesRef(InetAddressPoint.encode(inetAddress)); + success(ParseIp::leadingZerosAreOctal, expected); + } else { + failure(ParseIp::leadingZerosAreOctal); + } + } + + private void success(BiFunction fn, BytesRef expected) { + try (BreakingBytesRefBuilder scratch = ParseIp.buildScratch(new NoopCircuitBreaker("request"))) { + assertThat(fn.apply(new BytesRef(str), scratch), equalTo(expected)); + } + } + + private void failure(BiFunction fn) { + try (BreakingBytesRefBuilder scratch = ParseIp.buildScratch(new NoopCircuitBreaker("request"))) { + Exception thrown = expectThrows(IllegalArgumentException.class, () -> fn.apply(new BytesRef(str), scratch)); + assertThat(thrown.getMessage(), equalTo("'" + str + "' is not an IP string literal.")); + } + } + + public static String leadingZerosAreDecimalToIp(String ip) { + if (ip.contains(":")) { + // v6 ip, don't change it. + return ip; + } + StringBuilder b = new StringBuilder(); + boolean lastWasBreak = true; + boolean lastWasZero = false; + for (int i = 0; i < ip.length(); i++) { + char c = ip.charAt(i); + if (lastWasBreak && c == '0') { + lastWasZero = true; + continue; + } + if (c == '.') { + if (lastWasZero) { + b.append('0'); + } + lastWasBreak = true; + } else { + lastWasBreak = false; + } + lastWasZero = false; + b.append(c); + } + if (lastWasZero) { + b.append('0'); + } + return b.toString(); + } + + public static String leadingZerosAreOctalToIp(String ip) { + if (ip.contains(":")) { + // v6 ip, don't change it. + return ip; + } + StringBuilder b = new StringBuilder(); + boolean lastWasBreak = true; + boolean octalMode = false; + int current = 0; + for (int i = 0; i < ip.length(); i++) { + char c = ip.charAt(i); + if (lastWasBreak && c == '0') { + octalMode = true; + continue; + } + if (c == '.') { + lastWasBreak = true; + b.append(current).append('.'); + current = 0; + continue; + } + lastWasBreak = false; + if (octalMode) { + current = current * 8 + (c - '0'); + } else { + current = current * 10 + (c - '0'); + } + } + b.append(current); + return b.toString(); + } +} diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanTests.java index 93a833f29cd0..704941535689 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanTests.java @@ -38,7 +38,7 @@ public class ToBooleanTests extends AbstractScalarFunctionTestCase { TestCaseSupplier.forUnaryInt( suppliers, - "ToBooleanFromIntEvaluator[field=" + read + "]", + "ToBooleanFromIntEvaluator[i=" + read + "]", DataType.BOOLEAN, i -> i != 0, Integer.MIN_VALUE, @@ -47,7 +47,7 @@ public class ToBooleanTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryLong( suppliers, - "ToBooleanFromLongEvaluator[field=" + read + "]", + "ToBooleanFromLongEvaluator[l=" + read + "]", DataType.BOOLEAN, l -> l != 0, Long.MIN_VALUE, @@ -56,7 +56,7 @@ public class ToBooleanTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - "ToBooleanFromUnsignedLongEvaluator[field=" + read + "]", + "ToBooleanFromUnsignedLongEvaluator[ul=" + read + "]", DataType.BOOLEAN, ul -> ul.compareTo(BigInteger.ZERO) != 0, BigInteger.ZERO, @@ -65,7 +65,7 @@ public class ToBooleanTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryDouble( suppliers, - "ToBooleanFromDoubleEvaluator[field=" + read + "]", + "ToBooleanFromDoubleEvaluator[d=" + read + "]", DataType.BOOLEAN, d -> d != 0d, Double.NEGATIVE_INFINITY, @@ -74,7 +74,7 @@ public class ToBooleanTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryStrings( suppliers, - "ToBooleanFromStringEvaluator[field=" + read + "]", + "ToBooleanFromStringEvaluator[keyword=" + read + "]", DataType.BOOLEAN, bytesRef -> String.valueOf(bytesRef).toLowerCase(Locale.ROOT).equals("true"), emptyList() diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointTests.java index 7d08029d919e..7455b8c8f948 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointTests.java @@ -36,7 +36,7 @@ public class ToCartesianPointTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields final String attribute = "Attribute[channel=0]"; - final Function evaluatorName = s -> "ToCartesianPoint" + s + "Evaluator[field=" + attribute + "]"; + final Function evaluatorName = s -> "ToCartesianPoint" + s + "Evaluator[in=" + attribute + "]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryCartesianPoint(suppliers, attribute, DataType.CARTESIAN_POINT, v -> v, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeTests.java index 3f0a7999b8dd..7270764a451c 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeTests.java @@ -36,7 +36,7 @@ public class ToCartesianShapeTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields final String attribute = "Attribute[channel=0]"; - final Function evaluatorName = s -> "ToCartesianShape" + s + "Evaluator[field=" + attribute + "]"; + final Function evaluatorName = s -> "ToCartesianShape" + s + "Evaluator[in=" + attribute + "]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryCartesianPoint(suppliers, attribute, DataType.CARTESIAN_SHAPE, v -> v, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosTests.java index da32bb84aff1..7984202755e4 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosTests.java @@ -47,7 +47,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - "ToDateNanosFromDatetimeEvaluator[field=" + read + "]", + "ToDateNanosFromDatetimeEvaluator[in=" + read + "]", TestCaseSupplier.dateCases(0, DateUtils.MAX_NANOSECOND_INSTANT.toEpochMilli()), DataType.DATE_NANOS, i -> DateUtils.toNanoSeconds(((Instant) i).toEpochMilli()), @@ -55,7 +55,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryLong( suppliers, - "ToDateNanosFromLongEvaluator[field=" + read + "]", + "ToDateNanosFromLongEvaluator[in=" + read + "]", DataType.DATE_NANOS, l -> l, 0, @@ -64,7 +64,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryLong( suppliers, - "ToDateNanosFromLongEvaluator[field=" + read + "]", + "ToDateNanosFromLongEvaluator[in=" + read + "]", DataType.DATE_NANOS, l -> null, Long.MIN_VALUE, @@ -76,7 +76,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - "ToLongFromUnsignedLongEvaluator[field=" + read + "]", + "ToLongFromUnsignedLongEvaluator[ul=" + read + "]", DataType.DATE_NANOS, BigInteger::longValueExact, BigInteger.ZERO, @@ -85,7 +85,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - "ToLongFromUnsignedLongEvaluator[field=" + read + "]", + "ToLongFromUnsignedLongEvaluator[ul=" + read + "]", DataType.DATE_NANOS, bi -> null, BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.TWO), @@ -97,7 +97,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryDouble( suppliers, - "ToDateNanosFromDoubleEvaluator[field=" + read + "]", + "ToDateNanosFromDoubleEvaluator[in=" + read + "]", DataType.DATE_NANOS, d -> null, Double.NEGATIVE_INFINITY, @@ -109,7 +109,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryDouble( suppliers, - "ToDateNanosFromDoubleEvaluator[field=" + read + "]", + "ToDateNanosFromDoubleEvaluator[in=" + read + "]", DataType.DATE_NANOS, d -> null, 9.223372036854777E18, // a "convenient" value larger than `(double) Long.MAX_VALUE` (== ...776E18) @@ -121,7 +121,7 @@ public class ToDateNanosTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryStrings( suppliers, - "ToDateNanosFromStringEvaluator[field=" + read + "]", + "ToDateNanosFromStringEvaluator[in=" + read + "]", DataType.DATE_NANOS, bytesRef -> null, bytesRef -> List.of( diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeTests.java index d2189ebbc396..44ebd6c251f9 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeTests.java @@ -47,7 +47,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - "ToDatetimeFromDateNanosEvaluator[field=" + read + "]", + "ToDatetimeFromDateNanosEvaluator[in=" + read + "]", TestCaseSupplier.dateNanosCases(), DataType.DATETIME, i -> DateUtils.toMilliSeconds(DateUtils.toLong((Instant) i)), @@ -56,7 +56,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { TestCaseSupplier.forUnaryInt( suppliers, - "ToLongFromIntEvaluator[field=" + read + "]", + "ToLongFromIntEvaluator[i=" + read + "]", DataType.DATETIME, i -> ((Integer) i).longValue(), Integer.MIN_VALUE, @@ -66,7 +66,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { TestCaseSupplier.forUnaryLong(suppliers, read, DataType.DATETIME, l -> l, Long.MIN_VALUE, Long.MAX_VALUE, emptyList()); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - "ToLongFromUnsignedLongEvaluator[field=" + read + "]", + "ToLongFromUnsignedLongEvaluator[ul=" + read + "]", DataType.DATETIME, BigInteger::longValueExact, BigInteger.ZERO, @@ -75,7 +75,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - "ToLongFromUnsignedLongEvaluator[field=" + read + "]", + "ToLongFromUnsignedLongEvaluator[ul=" + read + "]", DataType.DATETIME, bi -> null, BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.TWO), @@ -87,7 +87,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryDouble( suppliers, - "ToLongFromDoubleEvaluator[field=" + read + "]", + "ToLongFromDoubleEvaluator[dbl=" + read + "]", DataType.DATETIME, d -> null, Double.NEGATIVE_INFINITY, @@ -99,7 +99,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryDouble( suppliers, - "ToLongFromDoubleEvaluator[field=" + read + "]", + "ToLongFromDoubleEvaluator[dbl=" + read + "]", DataType.DATETIME, d -> null, 9.223372036854777E18, // a "convenient" value larger than `(double) Long.MAX_VALUE` (== ...776E18) @@ -111,7 +111,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryStrings( suppliers, - "ToDatetimeFromStringEvaluator[field=" + read + "]", + "ToDatetimeFromStringEvaluator[in=" + read + "]", DataType.DATETIME, bytesRef -> null, bytesRef -> List.of( @@ -124,7 +124,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - "ToDatetimeFromStringEvaluator[field=" + read + "]", + "ToDatetimeFromStringEvaluator[in=" + read + "]", List.of( new TestCaseSupplier.TypedDataSupplier( "", @@ -139,7 +139,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - "ToDatetimeFromStringEvaluator[field=" + read + "]", + "ToDatetimeFromStringEvaluator[in=" + read + "]", List.of( new TestCaseSupplier.TypedDataSupplier( "", @@ -159,7 +159,7 @@ public class ToDatetimeTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - "ToDatetimeFromStringEvaluator[field=" + read + "]", + "ToDatetimeFromStringEvaluator[in=" + read + "]", List.of( new TestCaseSupplier.TypedDataSupplier( "", diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesTests.java index 5de5721d3fd6..92dbbdb57efa 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesTests.java @@ -19,7 +19,7 @@ import org.elasticsearch.xpack.esql.expression.function.TestCaseSupplier; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; -import java.util.function.Function; +import java.util.function.BiFunction; import java.util.function.Supplier; public class ToDegreesTests extends AbstractScalarFunctionTestCase { @@ -30,12 +30,16 @@ public class ToDegreesTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { // TODO multivalue fields - Function evaluatorName = eval -> "ToDegreesEvaluator[field=" + eval + "[field=Attribute[channel=0]]]"; + BiFunction evaluatorName = (eval, f) -> "ToDegreesEvaluator[deg=" + + eval + + "[" + + f + + "=Attribute[channel=0]]]"; List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryInt( suppliers, - evaluatorName.apply("ToDoubleFromIntEvaluator"), + evaluatorName.apply("ToDoubleFromIntEvaluator", "i"), DataType.DOUBLE, Math::toDegrees, Integer.MIN_VALUE, @@ -44,7 +48,7 @@ public class ToDegreesTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("ToDoubleFromLongEvaluator"), + evaluatorName.apply("ToDoubleFromLongEvaluator", "l"), DataType.DOUBLE, Math::toDegrees, Long.MIN_VALUE, @@ -53,14 +57,14 @@ public class ToDegreesTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - evaluatorName.apply("ToDoubleFromUnsignedLongEvaluator"), + evaluatorName.apply("ToDoubleFromUnsignedLongEvaluator", "l"), DataType.DOUBLE, ul -> Math.toDegrees(ul.doubleValue()), BigInteger.ZERO, UNSIGNED_LONG_MAX, List.of() ); - TestCaseSupplier.forUnaryDouble(suppliers, "ToDegreesEvaluator[field=Attribute[channel=0]]", DataType.DOUBLE, d -> { + TestCaseSupplier.forUnaryDouble(suppliers, "ToDegreesEvaluator[deg=Attribute[channel=0]]", DataType.DOUBLE, d -> { double deg = Math.toDegrees(d); return Double.isNaN(deg) || Double.isInfinite(deg) ? null : deg; }, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, d -> { @@ -74,7 +78,7 @@ public class ToDegreesTests extends AbstractScalarFunctionTestCase { }); TestCaseSupplier.unary( suppliers, - "ToDegreesEvaluator[field=Attribute[channel=0]]", + "ToDegreesEvaluator[deg=Attribute[channel=0]]", List.of( new TestCaseSupplier.TypedDataSupplier("Double.MAX_VALUE", () -> Double.MAX_VALUE, DataType.DOUBLE), new TestCaseSupplier.TypedDataSupplier("-Double.MAX_VALUE", () -> -Double.MAX_VALUE, DataType.DOUBLE), diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleTests.java index c7253e1b8059..ddefde86b76a 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleTests.java @@ -24,7 +24,7 @@ import java.math.BigInteger; import java.time.Instant; import java.util.ArrayList; import java.util.List; -import java.util.function.Function; +import java.util.function.BiFunction; import java.util.function.Supplier; public class ToDoubleTests extends AbstractScalarFunctionTestCase { @@ -36,7 +36,7 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields String read = "Attribute[channel=0]"; - Function evaluatorName = s -> "ToDoubleFrom" + s + "Evaluator[field=" + read + "]"; + BiFunction evaluatorName = (s, f) -> "ToDoubleFrom" + s + "Evaluator[" + f + "=" + read + "]"; List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryDouble( @@ -49,17 +49,17 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { List.of() ); - TestCaseSupplier.forUnaryBoolean(suppliers, evaluatorName.apply("Boolean"), DataType.DOUBLE, b -> b ? 1d : 0d, List.of()); + TestCaseSupplier.forUnaryBoolean(suppliers, evaluatorName.apply("Boolean", "bool"), DataType.DOUBLE, b -> b ? 1d : 0d, List.of()); TestCaseSupplier.unary( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "l"), TestCaseSupplier.dateCases(), DataType.DOUBLE, i -> (double) ((Instant) i).toEpochMilli(), List.of() ); // random strings that don't look like a double - TestCaseSupplier.forUnaryStrings(suppliers, evaluatorName.apply("String"), DataType.DOUBLE, bytesRef -> null, bytesRef -> { + TestCaseSupplier.forUnaryStrings(suppliers, evaluatorName.apply("String", "in"), DataType.DOUBLE, bytesRef -> null, bytesRef -> { var exception = expectThrows( InvalidArgumentException.class, () -> EsqlDataTypeConverter.stringToDouble(bytesRef.utf8ToString()) @@ -71,7 +71,7 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { }); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - evaluatorName.apply("UnsignedLong"), + evaluatorName.apply("UnsignedLong", "l"), DataType.DOUBLE, BigInteger::doubleValue, BigInteger.ZERO, @@ -80,7 +80,7 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "l"), DataType.DOUBLE, l -> (double) l, Long.MIN_VALUE, @@ -89,7 +89,7 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryInt( suppliers, - evaluatorName.apply("Int"), + evaluatorName.apply("Int", "i"), DataType.DOUBLE, i -> (double) i, Integer.MIN_VALUE, @@ -100,7 +100,7 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { // strings of random numbers TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.castToDoubleSuppliersFromRange(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY) .stream() .map( @@ -126,7 +126,7 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - evaluatorName.apply("Int"), + evaluatorName.apply("Int", "i"), List.of(new TestCaseSupplier.TypedDataSupplier("counter", () -> randomInt(1000), DataType.COUNTER_INTEGER)), DataType.DOUBLE, l -> ((Integer) l).doubleValue(), @@ -134,7 +134,7 @@ public class ToDoubleTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "l"), List.of(new TestCaseSupplier.TypedDataSupplier("counter", () -> randomLongBetween(1, 1000), DataType.COUNTER_LONG)), DataType.DOUBLE, l -> ((Long) l).doubleValue(), diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointTests.java index f15d260aecf4..883ab30415b5 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointTests.java @@ -36,7 +36,7 @@ public class ToGeoPointTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields final String attribute = "Attribute[channel=0]"; - final Function evaluatorName = s -> "ToGeoPoint" + s + "Evaluator[field=" + attribute + "]"; + final Function evaluatorName = s -> "ToGeoPoint" + s + "Evaluator[in=" + attribute + "]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, attribute, DataType.GEO_POINT, v -> v, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeTests.java index 0f2c41feb3b0..5b75bded802d 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeTests.java @@ -36,7 +36,7 @@ public class ToGeoShapeTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields final String attribute = "Attribute[channel=0]"; - final Function evaluatorName = s -> "ToGeoShape" + s + "Evaluator[field=" + attribute + "]"; + final Function evaluatorName = s -> "ToGeoShape" + s + "Evaluator[in=" + attribute + "]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, attribute, DataType.GEO_SHAPE, v -> v, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIPTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIPTests.java index 0bd3164a53a7..e666d7c6defe 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIPTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIPTests.java @@ -34,7 +34,7 @@ public class ToIPTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { String read = "Attribute[channel=0]"; - String stringEvaluator = "ToIPFromStringEvaluator[field=" + read + "]"; + String stringEvaluator = "ParseIpLeadingZerosRejectedEvaluator[string=" + read + "]"; List suppliers = new ArrayList<>(); // convert from IP to IP diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerTests.java index 4b3dee96652d..23928a08a103 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerTests.java @@ -22,7 +22,7 @@ import java.math.BigInteger; import java.time.Instant; import java.util.ArrayList; import java.util.List; -import java.util.function.Function; +import java.util.function.BiFunction; import java.util.function.Supplier; import static org.elasticsearch.xpack.esql.core.type.DataTypeConverter.safeToInt; @@ -36,17 +36,17 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields String read = "Attribute[channel=0]"; - Function evaluatorName = s -> "ToIntegerFrom" + s + "Evaluator[field=" + read + "]"; + BiFunction evaluatorName = (s, f) -> "ToIntegerFrom" + s + "Evaluator[" + f + "=" + read + "]"; List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryInt(suppliers, read, DataType.INTEGER, i -> i, Integer.MIN_VALUE, Integer.MAX_VALUE, List.of()); - TestCaseSupplier.forUnaryBoolean(suppliers, evaluatorName.apply("Boolean"), DataType.INTEGER, b -> b ? 1 : 0, List.of()); + TestCaseSupplier.forUnaryBoolean(suppliers, evaluatorName.apply("Boolean", "bool"), DataType.INTEGER, b -> b ? 1 : 0, List.of()); // datetimes that fall within Integer's range TestCaseSupplier.unary( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), dateCases(0, Integer.MAX_VALUE), DataType.INTEGER, l -> Long.valueOf(((Instant) l).toEpochMilli()).intValue(), @@ -55,7 +55,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // datetimes that fall outside Integer's range TestCaseSupplier.unary( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), dateCases(Integer.MAX_VALUE + 1L, Long.MAX_VALUE), DataType.INTEGER, l -> null, @@ -69,7 +69,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // random strings that don't look like an Integer TestCaseSupplier.forUnaryStrings( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), DataType.INTEGER, bytesRef -> null, bytesRef -> List.of( @@ -82,7 +82,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from doubles within Integer's range TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.INTEGER, d -> safeToInt(Math.round(d)), Integer.MIN_VALUE, @@ -92,7 +92,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from doubles outside Integer's range, negative TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.INTEGER, d -> null, Double.NEGATIVE_INFINITY, @@ -105,7 +105,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from doubles outside Integer's range, positive TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.INTEGER, d -> null, Integer.MAX_VALUE + 1d, @@ -119,7 +119,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from unsigned_long within Integer's range TestCaseSupplier.forUnaryUnsignedLong( suppliers, - evaluatorName.apply("UnsignedLong"), + evaluatorName.apply("UnsignedLong", "ul"), DataType.INTEGER, BigInteger::intValue, BigInteger.ZERO, @@ -129,7 +129,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from unsigned_long outside Integer's range TestCaseSupplier.forUnaryUnsignedLong( suppliers, - evaluatorName.apply("UnsignedLong"), + evaluatorName.apply("UnsignedLong", "ul"), DataType.INTEGER, ul -> null, BigInteger.valueOf(Integer.MAX_VALUE).add(BigInteger.ONE), @@ -144,7 +144,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from long, within Integer's range TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), DataType.INTEGER, l -> (int) l, Integer.MIN_VALUE, @@ -154,7 +154,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from long, outside Integer's range, negative TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), DataType.INTEGER, l -> null, Long.MIN_VALUE, @@ -168,7 +168,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // from long, outside Integer's range, positive TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), DataType.INTEGER, l -> null, Integer.MAX_VALUE + 1L, @@ -182,7 +182,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // strings of random ints within Integer's range TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.intCases(Integer.MIN_VALUE, Integer.MAX_VALUE, true) .stream() .map( @@ -200,7 +200,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // strings of random doubles within Integer's range TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(Integer.MIN_VALUE, Integer.MAX_VALUE, true) .stream() .map( @@ -218,7 +218,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // strings of random doubles outside Integer's range, negative TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(Double.NEGATIVE_INFINITY, Integer.MIN_VALUE - 1d, true) .stream() .map( @@ -241,7 +241,7 @@ public class ToIntegerTests extends AbstractScalarFunctionTestCase { // strings of random doubles outside Integer's range, positive TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(Integer.MAX_VALUE + 1d, Double.POSITIVE_INFINITY, true) .stream() .map( diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongTests.java index 150980e3f300..6224f5148284 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongTests.java @@ -23,7 +23,7 @@ import java.math.BigInteger; import java.time.Instant; import java.util.ArrayList; import java.util.List; -import java.util.function.Function; +import java.util.function.BiFunction; import java.util.function.Supplier; public class ToLongTests extends AbstractScalarFunctionTestCase { @@ -35,12 +35,12 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields String read = "Attribute[channel=0]"; - Function evaluatorName = s -> "ToLongFrom" + s + "Evaluator[field=" + read + "]"; + BiFunction evaluatorName = (s, f) -> "ToLongFrom" + s + "Evaluator[" + f + "=" + read + "]"; List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryLong(suppliers, read, DataType.LONG, l -> l, Long.MIN_VALUE, Long.MAX_VALUE, List.of()); - TestCaseSupplier.forUnaryBoolean(suppliers, evaluatorName.apply("Boolean"), DataType.LONG, b -> b ? 1L : 0L, List.of()); + TestCaseSupplier.forUnaryBoolean(suppliers, evaluatorName.apply("Boolean", "bool"), DataType.LONG, b -> b ? 1L : 0L, List.of()); // datetimes TestCaseSupplier.unary( @@ -62,7 +62,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // random strings that don't look like a long TestCaseSupplier.forUnaryStrings( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), DataType.LONG, bytesRef -> null, bytesRef -> List.of( @@ -75,7 +75,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // from doubles within long's range TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.LONG, Math::round, Long.MIN_VALUE, @@ -85,7 +85,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // from doubles outside long's range, negative TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.LONG, d -> null, Double.NEGATIVE_INFINITY, @@ -98,7 +98,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // from doubles outside long's range, positive TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.LONG, d -> null, Long.MAX_VALUE + 1d, @@ -112,7 +112,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // from unsigned_long within long's range TestCaseSupplier.forUnaryUnsignedLong( suppliers, - evaluatorName.apply("UnsignedLong"), + evaluatorName.apply("UnsignedLong", "ul"), DataType.LONG, BigInteger::longValue, BigInteger.ZERO, @@ -121,7 +121,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - evaluatorName.apply("UnsignedLong"), + evaluatorName.apply("UnsignedLong", "ul"), DataType.LONG, ul -> null, BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.ONE), @@ -136,7 +136,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // from integer TestCaseSupplier.forUnaryInt( suppliers, - evaluatorName.apply("Int"), + evaluatorName.apply("Int", "i"), DataType.LONG, l -> (long) l, Integer.MIN_VALUE, @@ -147,7 +147,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // strings of random longs TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.longCases(Long.MIN_VALUE, Long.MAX_VALUE, true) .stream() .map( @@ -165,7 +165,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // strings of random doubles within long's range TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(Long.MIN_VALUE, Long.MAX_VALUE, true) .stream() .map( @@ -183,7 +183,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // strings of random doubles outside integer's range, negative TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(Double.NEGATIVE_INFINITY, Long.MIN_VALUE - 1d, true) .stream() .map( @@ -206,7 +206,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { // strings of random doubles outside integer's range, positive TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(Long.MAX_VALUE + 1d, Double.POSITIVE_INFINITY, true) .stream() .map( @@ -237,7 +237,7 @@ public class ToLongTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - evaluatorName.apply("Int"), + evaluatorName.apply("Int", "i"), List.of(new TestCaseSupplier.TypedDataSupplier("counter", ESTestCase::randomInt, DataType.COUNTER_INTEGER)), DataType.LONG, l -> ((Integer) l).longValue(), diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansTests.java index 92a5bdac99db..e1834d6dfc2d 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansTests.java @@ -19,7 +19,7 @@ import org.elasticsearch.xpack.esql.expression.function.TestCaseSupplier; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; -import java.util.function.Function; +import java.util.function.BiFunction; import java.util.function.Supplier; public class ToRadiansTests extends AbstractScalarFunctionTestCase { @@ -30,12 +30,16 @@ public class ToRadiansTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { // TODO multivalue fields - Function evaluatorName = eval -> "ToRadiansEvaluator[field=" + eval + "[field=Attribute[channel=0]]]"; + BiFunction evaluatorName = (eval, f) -> "ToRadiansEvaluator[deg=" + + eval + + "[" + + f + + "=Attribute[channel=0]]]"; List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryInt( suppliers, - evaluatorName.apply("ToDoubleFromIntEvaluator"), + evaluatorName.apply("ToDoubleFromIntEvaluator", "i"), DataType.DOUBLE, Math::toRadians, Integer.MIN_VALUE, @@ -44,7 +48,7 @@ public class ToRadiansTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("ToDoubleFromLongEvaluator"), + evaluatorName.apply("ToDoubleFromLongEvaluator", "l"), DataType.DOUBLE, Math::toRadians, Long.MIN_VALUE, @@ -53,7 +57,7 @@ public class ToRadiansTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - evaluatorName.apply("ToDoubleFromUnsignedLongEvaluator"), + evaluatorName.apply("ToDoubleFromUnsignedLongEvaluator", "l"), DataType.DOUBLE, ul -> Math.toRadians(ul.doubleValue()), BigInteger.ZERO, @@ -62,7 +66,7 @@ public class ToRadiansTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryDouble( suppliers, - "ToRadiansEvaluator[field=Attribute[channel=0]]", + "ToRadiansEvaluator[deg=Attribute[channel=0]]", DataType.DOUBLE, Math::toRadians, Double.NEGATIVE_INFINITY, diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringTests.java index e5a80de5b5eb..f766deb2e168 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringTests.java @@ -41,7 +41,7 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryInt( suppliers, - "ToStringFromIntEvaluator[field=" + read + "]", + "ToStringFromIntEvaluator[integer=" + read + "]", DataType.KEYWORD, i -> new BytesRef(Integer.toString(i)), Integer.MIN_VALUE, @@ -50,7 +50,7 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryLong( suppliers, - "ToStringFromLongEvaluator[field=" + read + "]", + "ToStringFromLongEvaluator[lng=" + read + "]", DataType.KEYWORD, l -> new BytesRef(Long.toString(l)), Long.MIN_VALUE, @@ -59,7 +59,7 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryUnsignedLong( suppliers, - "ToStringFromUnsignedLongEvaluator[field=" + read + "]", + "ToStringFromUnsignedLongEvaluator[lng=" + read + "]", DataType.KEYWORD, ul -> new BytesRef(ul.toString()), BigInteger.ZERO, @@ -68,7 +68,7 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryDouble( suppliers, - "ToStringFromDoubleEvaluator[field=" + read + "]", + "ToStringFromDoubleEvaluator[dbl=" + read + "]", DataType.KEYWORD, d -> new BytesRef(Double.toString(d)), Double.NEGATIVE_INFINITY, @@ -77,14 +77,14 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryBoolean( suppliers, - "ToStringFromBooleanEvaluator[field=" + read + "]", + "ToStringFromBooleanEvaluator[bool=" + read + "]", DataType.KEYWORD, b -> new BytesRef(b.toString()), List.of() ); TestCaseSupplier.unary( suppliers, - "ToStringFromDatetimeEvaluator[field=" + read + "]", + "ToStringFromDatetimeEvaluator[datetime=" + read + "]", TestCaseSupplier.dateCases(), DataType.KEYWORD, i -> new BytesRef(DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.formatMillis(DateUtils.toLongMillis((Instant) i))), @@ -92,7 +92,7 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.unary( suppliers, - "ToStringFromDateNanosEvaluator[field=" + read + "]", + "ToStringFromDateNanosEvaluator[datetime=" + read + "]", TestCaseSupplier.dateNanosCases(), DataType.KEYWORD, i -> new BytesRef(DateFieldMapper.DEFAULT_DATE_TIME_NANOS_FORMATTER.formatNanos(DateUtils.toLong((Instant) i))), @@ -100,35 +100,35 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { ); TestCaseSupplier.forUnaryGeoPoint( suppliers, - "ToStringFromGeoPointEvaluator[field=" + read + "]", + "ToStringFromGeoPointEvaluator[wkb=" + read + "]", DataType.KEYWORD, wkb -> new BytesRef(GEO.wkbToWkt(wkb)), List.of() ); TestCaseSupplier.forUnaryCartesianPoint( suppliers, - "ToStringFromCartesianPointEvaluator[field=" + read + "]", + "ToStringFromCartesianPointEvaluator[wkb=" + read + "]", DataType.KEYWORD, wkb -> new BytesRef(CARTESIAN.wkbToWkt(wkb)), List.of() ); TestCaseSupplier.forUnaryGeoShape( suppliers, - "ToStringFromGeoShapeEvaluator[field=" + read + "]", + "ToStringFromGeoShapeEvaluator[wkb=" + read + "]", DataType.KEYWORD, wkb -> new BytesRef(GEO.wkbToWkt(wkb)), List.of() ); TestCaseSupplier.forUnaryCartesianShape( suppliers, - "ToStringFromCartesianShapeEvaluator[field=" + read + "]", + "ToStringFromCartesianShapeEvaluator[wkb=" + read + "]", DataType.KEYWORD, wkb -> new BytesRef(CARTESIAN.wkbToWkt(wkb)), List.of() ); TestCaseSupplier.forUnaryIp( suppliers, - "ToStringFromIPEvaluator[field=" + read + "]", + "ToStringFromIPEvaluator[ip=" + read + "]", DataType.KEYWORD, ip -> new BytesRef(DocValueFormat.IP.format(ip)), List.of() @@ -136,7 +136,7 @@ public class ToStringTests extends AbstractScalarFunctionTestCase { TestCaseSupplier.forUnaryStrings(suppliers, read, DataType.KEYWORD, bytesRef -> bytesRef, List.of()); TestCaseSupplier.forUnaryVersion( suppliers, - "ToStringFromVersionEvaluator[field=" + read + "]", + "ToStringFromVersionEvaluator[version=" + read + "]", DataType.KEYWORD, v -> new BytesRef(v.toString()), List.of() diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongTests.java index 4a94c00a2f95..9d8e3daaef0e 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongTests.java @@ -22,7 +22,7 @@ import java.math.BigInteger; import java.time.Instant; import java.util.ArrayList; import java.util.List; -import java.util.function.Function; +import java.util.function.BiFunction; import java.util.function.Supplier; import static org.elasticsearch.xpack.esql.core.type.DataTypeConverter.safeToUnsignedLong; @@ -37,7 +37,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields String read = "Attribute[channel=0]"; - Function evaluatorName = s -> "ToUnsignedLongFrom" + s + "Evaluator[field=" + read + "]"; + BiFunction evaluatorName = (s, f) -> "ToUnsignedLongFrom" + s + "Evaluator[" + f + "=" + read + "]"; List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryUnsignedLong( @@ -52,7 +52,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { TestCaseSupplier.forUnaryBoolean( suppliers, - evaluatorName.apply("Boolean"), + evaluatorName.apply("Boolean", "bool"), DataType.UNSIGNED_LONG, b -> b ? BigInteger.ONE : BigInteger.ZERO, List.of() @@ -61,27 +61,33 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // datetimes TestCaseSupplier.unary( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), TestCaseSupplier.dateCases(), DataType.UNSIGNED_LONG, instant -> BigInteger.valueOf(((Instant) instant).toEpochMilli()), List.of() ); // random strings that don't look like an unsigned_long - TestCaseSupplier.forUnaryStrings(suppliers, evaluatorName.apply("String"), DataType.UNSIGNED_LONG, bytesRef -> null, bytesRef -> { - // BigDecimal, used to parse unsigned_longs will throw NFEs with different messages depending on empty string, first - // non-number character after a number-looking like prefix, or string starting with "e", maybe others -- safer to take - // this shortcut here. - Exception e = expectThrows(NumberFormatException.class, () -> new BigDecimal(bytesRef.utf8ToString())); - return List.of( - "Line 1:1: evaluation of [source] failed, treating result as null. Only first 20 failures recorded.", - "Line 1:1: java.lang.NumberFormatException: " + e.getMessage() - ); - }); + TestCaseSupplier.forUnaryStrings( + suppliers, + evaluatorName.apply("String", "in"), + DataType.UNSIGNED_LONG, + bytesRef -> null, + bytesRef -> { + // BigDecimal, used to parse unsigned_longs will throw NFEs with different messages depending on empty string, first + // non-number character after a number-looking like prefix, or string starting with "e", maybe others -- safer to take + // this shortcut here. + Exception e = expectThrows(NumberFormatException.class, () -> new BigDecimal(bytesRef.utf8ToString())); + return List.of( + "Line 1:1: evaluation of [source] failed, treating result as null. Only first 20 failures recorded.", + "Line 1:1: java.lang.NumberFormatException: " + e.getMessage() + ); + } + ); // from doubles within unsigned_long's range TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.UNSIGNED_LONG, d -> BigDecimal.valueOf(d).toBigInteger(), // note: not: new BigDecimal(d).toBigInteger 0d, @@ -91,7 +97,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // from doubles outside unsigned_long's range, negative TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.UNSIGNED_LONG, d -> null, Double.NEGATIVE_INFINITY, @@ -104,7 +110,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // from doubles outside Long's range, positive TestCaseSupplier.forUnaryDouble( suppliers, - evaluatorName.apply("Double"), + evaluatorName.apply("Double", "dbl"), DataType.UNSIGNED_LONG, d -> null, UNSIGNED_LONG_MAX_AS_DOUBLE + 10e5, @@ -118,7 +124,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // from long within unsigned_long's range TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), DataType.UNSIGNED_LONG, BigInteger::valueOf, 0L, @@ -128,7 +134,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // from long outside unsigned_long's range TestCaseSupplier.forUnaryLong( suppliers, - evaluatorName.apply("Long"), + evaluatorName.apply("Long", "lng"), DataType.UNSIGNED_LONG, unused -> null, Long.MIN_VALUE, @@ -142,7 +148,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // from int within unsigned_long's range TestCaseSupplier.forUnaryInt( suppliers, - evaluatorName.apply("Int"), + evaluatorName.apply("Int", "i"), DataType.UNSIGNED_LONG, BigInteger::valueOf, 0, @@ -152,7 +158,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // from int outside unsigned_long's range TestCaseSupplier.forUnaryInt( suppliers, - evaluatorName.apply("Int"), + evaluatorName.apply("Int", "i"), DataType.UNSIGNED_LONG, unused -> null, Integer.MIN_VALUE, @@ -166,7 +172,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // strings of random unsigned_longs TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.ulongCases(BigInteger.ZERO, UNSIGNED_LONG_MAX, true) .stream() .map( @@ -184,7 +190,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // strings of random doubles within unsigned_long's range TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(0, UNSIGNED_LONG_MAX_AS_DOUBLE, true) .stream() .map( @@ -202,7 +208,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // strings of random doubles outside unsigned_long's range, negative TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(Double.NEGATIVE_INFINITY, -1d, true) .stream() .map( @@ -225,7 +231,7 @@ public class ToUnsignedLongTests extends AbstractScalarFunctionTestCase { // strings of random doubles outside Integer's range, positive TestCaseSupplier.unary( suppliers, - evaluatorName.apply("String"), + evaluatorName.apply("String", "in"), TestCaseSupplier.doubleCases(UNSIGNED_LONG_MAX_AS_DOUBLE + 10e5, Double.POSITIVE_INFINITY, true) .stream() .map( diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionTests.java index 3a3026d1db67..6a3259c99717 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToVersionTests.java @@ -31,7 +31,7 @@ public class ToVersionTests extends AbstractScalarFunctionTestCase { public static Iterable parameters() { // TODO multivalue fields String read = "Attribute[channel=0]"; - String stringEvaluator = "ToVersionFromStringEvaluator[field=" + read + "]"; + String stringEvaluator = "ToVersionFromStringEvaluator[asString=" + read + "]"; List suppliers = new ArrayList<>(); // Converting and IP to an IP doesn't change anything. Everything should succeed. diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeTests.java index 6b0449788b1c..5359990619b1 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StEnvelopeTests.java @@ -36,8 +36,8 @@ public class StEnvelopeTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { - String expectedGeo = "StEnvelopeFromWKBGeoEvaluator[field=Attribute[channel=0]]"; - String expectedCartesian = "StEnvelopeFromWKBEvaluator[field=Attribute[channel=0]]"; + String expectedGeo = "StEnvelopeFromWKBGeoEvaluator[wkb=Attribute[channel=0]]"; + String expectedCartesian = "StEnvelopeFromWKBEvaluator[wkb=Attribute[channel=0]]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, expectedGeo, GEO_SHAPE, StEnvelopeTests::valueOfGeo, List.of()); TestCaseSupplier.forUnaryCartesianPoint( diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxTests.java index aa7ced1d4251..32c0acbfb0b3 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMaxTests.java @@ -35,8 +35,8 @@ public class StXMaxTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { - String expectedGeo = "StXMaxFromWKBGeoEvaluator[field=Attribute[channel=0]]"; - String expectedCartesian = "StXMaxFromWKBEvaluator[field=Attribute[channel=0]]"; + String expectedGeo = "StXMaxFromWKBGeoEvaluator[wkb=Attribute[channel=0]]"; + String expectedCartesian = "StXMaxFromWKBEvaluator[wkb=Attribute[channel=0]]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, expectedGeo, DOUBLE, StXMaxTests::valueOfGeo, List.of()); TestCaseSupplier.forUnaryCartesianPoint(suppliers, expectedCartesian, DOUBLE, StXMaxTests::valueOfCartesian, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinTests.java index f728f50cc626..c029546ee65d 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXMinTests.java @@ -35,8 +35,8 @@ public class StXMinTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { - String expectedGeo = "StXMinFromWKBGeoEvaluator[field=Attribute[channel=0]]"; - String expectedCartesian = "StXMinFromWKBEvaluator[field=Attribute[channel=0]]"; + String expectedGeo = "StXMinFromWKBGeoEvaluator[wkb=Attribute[channel=0]]"; + String expectedCartesian = "StXMinFromWKBEvaluator[wkb=Attribute[channel=0]]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, expectedGeo, DOUBLE, StXMinTests::valueOfGeo, List.of()); TestCaseSupplier.forUnaryCartesianPoint(suppliers, expectedCartesian, DOUBLE, StXMinTests::valueOfCartesian, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXTests.java index 4e14c23a1bba..c9658247efba 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StXTests.java @@ -32,7 +32,7 @@ public class StXTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { - String expectedEvaluator = "StXFromWKBEvaluator[field=Attribute[channel=0]]"; + String expectedEvaluator = "StXFromWKBEvaluator[in=Attribute[channel=0]]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, expectedEvaluator, DOUBLE, StXTests::valueOf, List.of()); TestCaseSupplier.forUnaryCartesianPoint(suppliers, expectedEvaluator, DOUBLE, StXTests::valueOf, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxTests.java index 9aeda6b10623..494ca43e9f3a 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMaxTests.java @@ -35,8 +35,8 @@ public class StYMaxTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { - String expectedGeo = "StYMaxFromWKBGeoEvaluator[field=Attribute[channel=0]]"; - String expectedCartesian = "StYMaxFromWKBEvaluator[field=Attribute[channel=0]]"; + String expectedGeo = "StYMaxFromWKBGeoEvaluator[wkb=Attribute[channel=0]]"; + String expectedCartesian = "StYMaxFromWKBEvaluator[wkb=Attribute[channel=0]]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, expectedGeo, DOUBLE, StYMaxTests::valueOfGeo, List.of()); TestCaseSupplier.forUnaryCartesianPoint(suppliers, expectedCartesian, DOUBLE, StYMaxTests::valueOfCartesian, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinTests.java index db577b536048..01c04fdd1684 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYMinTests.java @@ -35,8 +35,8 @@ public class StYMinTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { - String expectedGeo = "StYMinFromWKBGeoEvaluator[field=Attribute[channel=0]]"; - String expectedCartesian = "StYMinFromWKBEvaluator[field=Attribute[channel=0]]"; + String expectedGeo = "StYMinFromWKBGeoEvaluator[wkb=Attribute[channel=0]]"; + String expectedCartesian = "StYMinFromWKBEvaluator[wkb=Attribute[channel=0]]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, expectedGeo, DOUBLE, StYMinTests::valueOfGeo, List.of()); TestCaseSupplier.forUnaryCartesianPoint(suppliers, expectedCartesian, DOUBLE, StYMinTests::valueOfCartesian, List.of()); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYTests.java index 33ee6f6c4cdc..90b139cb850f 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/spatial/StYTests.java @@ -32,7 +32,7 @@ public class StYTests extends AbstractScalarFunctionTestCase { @ParametersFactory public static Iterable parameters() { - String expectedEvaluator = "StYFromWKBEvaluator[field=Attribute[channel=0]]"; + String expectedEvaluator = "StYFromWKBEvaluator[in=Attribute[channel=0]]"; final List suppliers = new ArrayList<>(); TestCaseSupplier.forUnaryGeoPoint(suppliers, expectedEvaluator, DOUBLE, StYTests::valueOf, List.of()); TestCaseSupplier.forUnaryCartesianPoint(suppliers, expectedEvaluator, DOUBLE, StYTests::valueOf, List.of());