Browse Source

ESQL: Track memory in evaluators (#133392) (#133587)

If you write very very large ESQL queries you can spend a lot of memory
on the expression evaluators themselves. You can certainly do it in real
life, but our tests do something like:
```
FROM foo
| EVAL a0001 = n + 1
| EVAL a0002 = a0001 + 1
| EVAL a0003 = a0002 + 1
...
| EVAL a5000 = a4999 + 1
| STATS MAX(a5000)
```

Each evaluator costs like 200 bytes a pop. For thousands of evaluators
this adds up. So! We have to track it.

Nhat had suggested charging a flat 200 bytes a pop. I thought about it
and decided that it'd be pretty easy to get the actual size. Most of the
evaluators are generated and it's a fairly small generated change to
pick that up. So I did.

We *do* build the evaluators before we cost them, but that's fine
because they are very very small. So long as we account for them, I
think it's safe.
Nik Everett 1 month ago
parent
commit
13bc8f0c38
100 changed files with 1058 additions and 31 deletions
  1. 5 0
      benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/AggregatorBenchmark.java
  2. 1 1
      benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/EvalBenchmark.java
  3. 5 0
      docs/changelog/133392.yaml
  4. 1 1
      docs/reference/query-languages/esql/_snippets/functions/description/md5.md
  5. 2 1
      docs/reference/query-languages/esql/_snippets/functions/parameters/categorize.md
  6. 1 1
      docs/reference/query-languages/esql/kibana/definition/functions/md5.json
  7. 1 1
      docs/reference/query-languages/esql/kibana/docs/functions/md5.md
  8. 16 1
      x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/Literal.java
  9. 3 0
      x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConvertEvaluatorImplementer.java
  10. 57 0
      x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorImplementer.java
  11. 10 0
      x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/MvEvaluatorImplementer.java
  12. 1 0
      x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/Types.java
  13. 7 0
      x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneQueryExpressionEvaluator.java
  14. 87 10
      x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/EvalOperator.java
  15. 11 1
      x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/mvdedupe/MultivalueDedupe.java
  16. 5 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/ConstantBooleanExpressionEvaluator.java
  17. 5 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/FilteredGroupingAggregatorFunctionTests.java
  18. 2 2
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneQueryEvaluatorTests.java
  19. 3 3
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneQueryExpressionEvaluatorTests.java
  20. 3 3
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneQueryScoreEvaluatorTests.java
  21. 5 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/read/ValueSourceReaderTypeConversionTests.java
  22. 5 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/AddGarbageRowsSourceOperator.java
  23. 5 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/ColumnExtractOperatorTests.java
  24. 6 1
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/DriverTests.java
  25. 10 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/EvalOperatorTests.java
  26. 5 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/FilterOperatorTests.java
  27. 10 0
      x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/StringExtractOperatorTests.java
  28. 13 1
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceBooleanEvaluator.java
  29. 13 1
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceBytesRefEvaluator.java
  30. 13 1
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceDoubleEvaluator.java
  31. 13 1
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceIntEvaluator.java
  32. 13 1
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceLongEvaluator.java
  33. 13 0
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InBooleanEvaluator.java
  34. 13 0
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InBytesRefEvaluator.java
  35. 13 0
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InDoubleEvaluator.java
  36. 13 0
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InIntEvaluator.java
  37. 13 0
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InLongEvaluator.java
  38. 13 0
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InMillisNanosEvaluator.java
  39. 13 0
      x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InNanosMillisEvaluator.java
  40. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestBooleanEvaluator.java
  41. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestBytesRefEvaluator.java
  42. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestDoubleEvaluator.java
  43. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestIntEvaluator.java
  44. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestLongEvaluator.java
  45. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastBooleanEvaluator.java
  46. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastBytesRefEvaluator.java
  47. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastDoubleEvaluator.java
  48. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastIntEvaluator.java
  49. 12 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastLongEvaluator.java
  50. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/FromBase64Evaluator.java
  51. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreDecimalEvaluator.java
  52. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreOctalEvaluator.java
  53. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosRejectedEvaluator.java
  54. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBase64Evaluator.java
  55. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromDoubleEvaluator.java
  56. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromIntEvaluator.java
  57. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromLongEvaluator.java
  58. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromStringEvaluator.java
  59. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromUnsignedLongEvaluator.java
  60. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointFromStringEvaluator.java
  61. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeFromStringEvaluator.java
  62. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDatetimeEvaluator.java
  63. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDoubleEvaluator.java
  64. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromLongEvaluator.java
  65. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromStringEvaluator.java
  66. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromDateNanosEvaluator.java
  67. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromStringEvaluator.java
  68. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesEvaluator.java
  69. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromBooleanEvaluator.java
  70. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromIntEvaluator.java
  71. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromLongEvaluator.java
  72. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromStringEvaluator.java
  73. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromUnsignedLongEvaluator.java
  74. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointFromStringEvaluator.java
  75. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeFromStringEvaluator.java
  76. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromBooleanEvaluator.java
  77. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromDoubleEvaluator.java
  78. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromLongEvaluator.java
  79. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromStringEvaluator.java
  80. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromUnsignedLongEvaluator.java
  81. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromBooleanEvaluator.java
  82. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromDoubleEvaluator.java
  83. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromIntEvaluator.java
  84. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromStringEvaluator.java
  85. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromUnsignedLongEvaluator.java
  86. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansEvaluator.java
  87. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromBooleanEvaluator.java
  88. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianPointEvaluator.java
  89. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianShapeEvaluator.java
  90. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDateNanosEvaluator.java
  91. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDatetimeEvaluator.java
  92. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDoubleEvaluator.java
  93. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoPointEvaluator.java
  94. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoShapeEvaluator.java
  95. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIPEvaluator.java
  96. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIntEvaluator.java
  97. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromLongEvaluator.java
  98. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromUnsignedLongEvaluator.java
  99. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromVersionEvaluator.java
  100. 10 0
      x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromBooleanEvaluator.java

+ 5 - 0
benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/AggregatorBenchmark.java

@@ -666,6 +666,11 @@ public class AggregatorBenchmark {
                 return mask;
             }
 
+            @Override
+            public long baseRamBytesUsed() {
+                return 0;
+            }
+
             @Override
             public void close() {
                 mask.close();

+ 1 - 1
benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/EvalBenchmark.java

@@ -144,7 +144,7 @@ public class EvalBenchmark {
     public String operation;
 
     private static Operator operator(String operation) {
-        return new EvalOperator(driverContext.blockFactory(), evaluator(operation));
+        return new EvalOperator(driverContext, evaluator(operation));
     }
 
     private static EvalOperator.ExpressionEvaluator evaluator(String operation) {

+ 5 - 0
docs/changelog/133392.yaml

@@ -0,0 +1,5 @@
+pr: 133392
+summary: Track memory in evaluators
+area: ES|QL
+type: bug
+issues: []

+ 1 - 1
docs/reference/query-languages/esql/_snippets/functions/description/md5.md

@@ -2,5 +2,5 @@
 
 **Description**
 
-Computes the MD5 hash of the input.
+Computes the MD5 hash of the input (if the MD5 hash is available on the JVM).
 

+ 2 - 1
docs/reference/query-languages/esql/_snippets/functions/parameters/categorize.md

@@ -3,4 +3,5 @@
 **Parameters**
 
 `field`
-:   Expression to categorize
+:   Expression to categorize
+

+ 1 - 1
docs/reference/query-languages/esql/kibana/definition/functions/md5.json

@@ -2,7 +2,7 @@
   "comment" : "This is generated by ESQL's AbstractFunctionTestCase. Do not edit it. See ../README.md for how to regenerate it.",
   "type" : "scalar",
   "name" : "md5",
-  "description" : "Computes the MD5 hash of the input.",
+  "description" : "Computes the MD5 hash of the input (if the MD5 hash is available on the JVM).",
   "signatures" : [
     {
       "params" : [

+ 1 - 1
docs/reference/query-languages/esql/kibana/docs/functions/md5.md

@@ -1,7 +1,7 @@
 % This is generated by ESQL's AbstractFunctionTestCase. Do not edit it. See ../README.md for how to regenerate it.
 
 ### MD5
-Computes the MD5 hash of the input.
+Computes the MD5 hash of the input (if the MD5 hash is available on the JVM).
 
 ```esql
 FROM sample_data

+ 16 - 1
x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/Literal.java

@@ -6,7 +6,9 @@
  */
 package org.elasticsearch.xpack.esql.core.expression;
 
+import org.apache.lucene.util.Accountable;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.TransportVersions;
 import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
 import org.elasticsearch.common.io.stream.StreamInput;
@@ -35,7 +37,9 @@ import static org.elasticsearch.xpack.esql.core.util.SpatialCoordinateTypes.GEO;
 /**
  * Literal or constant.
  */
-public class Literal extends LeafExpression {
+public class Literal extends LeafExpression implements Accountable {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(Literal.class);
+
     public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(
         Expression.class,
         "Literal",
@@ -169,6 +173,17 @@ public class Literal extends LeafExpression {
         return toString() + "[" + dataType + "]";
     }
 
+    @Override
+    public long ramBytesUsed() {
+        long ramBytesUsed = BASE_RAM_BYTES_USED;
+        if (value instanceof BytesRef b) {
+            ramBytesUsed += b.length;
+        } else {
+            ramBytesUsed += RamUsageEstimator.sizeOfObject(value);
+        }
+        return ramBytesUsed;
+    }
+
     /**
      * Utility method for creating a literal out of a foldable expression.
      * Throws an exception if the expression is not foldable.

+ 3 - 0
x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConvertEvaluatorImplementer.java

@@ -23,6 +23,7 @@ import javax.lang.model.element.TypeElement;
 import javax.lang.model.type.TypeMirror;
 import javax.lang.model.util.Elements;
 
+import static org.elasticsearch.compute.gen.EvaluatorImplementer.baseRamBytesUsed;
 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;
@@ -98,6 +99,7 @@ public class ConvertEvaluatorImplementer {
         builder.addJavadoc("This class is generated. Edit {@code " + getClass().getSimpleName() + "} instead.");
         builder.addModifiers(Modifier.PUBLIC, Modifier.FINAL);
         builder.superclass(ABSTRACT_CONVERT_FUNCTION_EVALUATOR);
+        builder.addField(baseRamBytesUsed(implementation));
 
         for (EvaluatorImplementer.ProcessFunctionArg a : processFunction.args) {
             a.declareField(builder);
@@ -113,6 +115,7 @@ public class ConvertEvaluatorImplementer {
         }
         builder.addMethod(processFunction.toStringMethod(implementation));
         builder.addMethod(processFunction.close());
+        builder.addMethod(processFunction.baseRamBytesUsed());
         builder.addType(factory());
         return builder.build();
     }

+ 57 - 0
x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/EvaluatorImplementer.java

@@ -9,6 +9,7 @@ package org.elasticsearch.compute.gen;
 
 import com.squareup.javapoet.ArrayTypeName;
 import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.FieldSpec;
 import com.squareup.javapoet.JavaFile;
 import com.squareup.javapoet.MethodSpec;
 import com.squareup.javapoet.ParameterizedTypeName;
@@ -47,6 +48,7 @@ import static org.elasticsearch.compute.gen.Types.EXPRESSION_EVALUATOR_FACTORY;
 import static org.elasticsearch.compute.gen.Types.INT_BLOCK;
 import static org.elasticsearch.compute.gen.Types.LONG_BLOCK;
 import static org.elasticsearch.compute.gen.Types.PAGE;
+import static org.elasticsearch.compute.gen.Types.RAM_USAGE_ESIMATOR;
 import static org.elasticsearch.compute.gen.Types.RELEASABLE;
 import static org.elasticsearch.compute.gen.Types.RELEASABLES;
 import static org.elasticsearch.compute.gen.Types.SOURCE;
@@ -96,6 +98,7 @@ public class EvaluatorImplementer {
         builder.addJavadoc("This class is generated. Edit {@code " + getClass().getSimpleName() + "} instead.");
         builder.addModifiers(Modifier.PUBLIC, Modifier.FINAL);
         builder.addSuperinterface(EXPRESSION_EVALUATOR);
+        builder.addField(baseRamBytesUsed(implementation));
         builder.addType(factory());
 
         builder.addField(SOURCE, "source", Modifier.PRIVATE, Modifier.FINAL);
@@ -106,6 +109,7 @@ public class EvaluatorImplementer {
 
         builder.addMethod(ctor());
         builder.addMethod(eval());
+        builder.addMethod(processFunction.baseRamBytesUsed());
 
         if (processOutputsMultivalued) {
             if (processFunction.args.stream().anyMatch(x -> x instanceof FixedProcessFunctionArg == false)) {
@@ -123,6 +127,19 @@ public class EvaluatorImplementer {
         return builder.build();
     }
 
+    static FieldSpec baseRamBytesUsed(ClassName implementation) {
+        FieldSpec.Builder builder = FieldSpec.builder(
+            TypeName.LONG,
+            "BASE_RAM_BYTES_USED",
+            Modifier.PRIVATE,
+            Modifier.STATIC,
+            Modifier.FINAL
+        );
+        builder.initializer("$T.shallowSizeOfInstance($T.class)", RAM_USAGE_ESIMATOR, implementation);
+
+        return builder.build();
+    }
+
     private MethodSpec ctor() {
         MethodSpec.Builder builder = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC);
         builder.addParameter(SOURCE, "source");
@@ -411,6 +428,11 @@ public class EvaluatorImplementer {
          * The string to close this argument or {@code null}.
          */
         String closeInvocation();
+
+        /**
+         * Invokes {@code baseRamBytesUsed} on sub-expressions an
+         */
+        void sumBaseRamBytesUsed(MethodSpec.Builder builder);
     }
 
     record StandardProcessFunctionArg(TypeName type, String name) implements ProcessFunctionArg {
@@ -535,6 +557,11 @@ public class EvaluatorImplementer {
         public String closeInvocation() {
             return name;
         }
+
+        @Override
+        public void sumBaseRamBytesUsed(MethodSpec.Builder builder) {
+            builder.addStatement("baseRamBytesUsed += $L.baseRamBytesUsed()", name);
+        }
     }
 
     private record ArrayProcessFunctionArg(TypeName componentType, String name) implements ProcessFunctionArg {
@@ -667,6 +694,13 @@ public class EvaluatorImplementer {
         public String closeInvocation() {
             return "() -> Releasables.close(" + name + ")";
         }
+
+        @Override
+        public void sumBaseRamBytesUsed(MethodSpec.Builder builder) {
+            builder.beginControlFlow("for ($T e : $L)", EXPRESSION_EVALUATOR, name);
+            builder.addStatement("baseRamBytesUsed += e.baseRamBytesUsed()");
+            builder.endControlFlow();
+        }
     }
 
     record FixedProcessFunctionArg(TypeName type, String name, boolean includeInToString, Scope scope, boolean releasable)
@@ -769,6 +803,9 @@ public class EvaluatorImplementer {
         public String closeInvocation() {
             return releasable ? name : null;
         }
+
+        @Override
+        public void sumBaseRamBytesUsed(MethodSpec.Builder builder) {}
     }
 
     private record BuilderProcessFunctionArg(ClassName type, String name) implements ProcessFunctionArg {
@@ -853,6 +890,9 @@ public class EvaluatorImplementer {
         public String closeInvocation() {
             return null;
         }
+
+        @Override
+        public void sumBaseRamBytesUsed(MethodSpec.Builder builder) {}
     }
 
     private record BlockProcessFunctionArg(TypeName type, String name) implements ProcessFunctionArg {
@@ -940,6 +980,11 @@ public class EvaluatorImplementer {
         public String closeInvocation() {
             return name;
         }
+
+        @Override
+        public void sumBaseRamBytesUsed(MethodSpec.Builder builder) {
+            builder.addStatement("baseRamBytesUsed += $L.baseRamBytesUsed()", name);
+        }
     }
 
     static class ProcessFunction {
@@ -1085,6 +1130,18 @@ public class EvaluatorImplementer {
             }
             return builder.build();
         }
+
+        MethodSpec baseRamBytesUsed() {
+            MethodSpec.Builder builder = MethodSpec.methodBuilder("baseRamBytesUsed").addAnnotation(Override.class);
+            builder.addModifiers(Modifier.PUBLIC).returns(TypeName.LONG);
+
+            builder.addStatement("long baseRamBytesUsed = BASE_RAM_BYTES_USED");
+            for (ProcessFunctionArg arg : args) {
+                arg.sumBaseRamBytesUsed(builder);
+            }
+            builder.addStatement("return baseRamBytesUsed");
+            return builder.build();
+        }
     }
 
     static boolean isBlockType(TypeName type) {

+ 10 - 0
x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/MvEvaluatorImplementer.java

@@ -137,6 +137,7 @@ public class MvEvaluatorImplementer {
             builder.addField(SOURCE, "source", Modifier.PRIVATE, Modifier.FINAL);
             builder.addField(WARNINGS, "warnings", Modifier.PRIVATE);
         }
+        builder.addField(EvaluatorImplementer.baseRamBytesUsed(implementation));
 
         builder.addMethod(ctor());
         builder.addMethod(name());
@@ -159,6 +160,7 @@ public class MvEvaluatorImplementer {
         if (warnExceptions.isEmpty() == false) {
             builder.addMethod(EvaluatorImplementer.warnings());
         }
+        builder.addMethod(baseRamBytesUsed());
         return builder.build();
     }
 
@@ -581,4 +583,12 @@ public class MvEvaluatorImplementer {
             }
         }
     }
+
+    MethodSpec baseRamBytesUsed() {
+        MethodSpec.Builder builder = MethodSpec.methodBuilder("baseRamBytesUsed").addAnnotation(Override.class);
+        builder.addModifiers(Modifier.PUBLIC).returns(TypeName.LONG);
+
+        builder.addStatement("return BASE_RAM_BYTES_USED + field.baseRamBytesUsed()");
+        return builder.build();
+    }
 }

+ 1 - 0
x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/Types.java

@@ -42,6 +42,7 @@ public class Types {
 
     static final ClassName CIRCUIT_BREAKER = ClassName.get("org.elasticsearch.common.breaker", "CircuitBreaker");
     static final ClassName BIG_ARRAYS = ClassName.get("org.elasticsearch.common.util", "BigArrays");
+    static final ClassName RAM_USAGE_ESIMATOR = ClassName.get("org.apache.lucene.util", "RamUsageEstimator");
 
     static final ClassName BOOLEAN_BLOCK = ClassName.get(DATA_PACKAGE, "BooleanBlock");
     static final ClassName BYTES_REF_BLOCK = ClassName.get(DATA_PACKAGE, "BytesRefBlock");

+ 7 - 0
x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneQueryExpressionEvaluator.java

@@ -10,6 +10,7 @@ package org.elasticsearch.compute.lucene;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Scorable;
 import org.apache.lucene.search.ScoreMode;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BlockFactory;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -29,6 +30,7 @@ import java.io.IOException;
 public class LuceneQueryExpressionEvaluator extends LuceneQueryEvaluator<BooleanVector.Builder>
     implements
         EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(LuceneQueryExpressionEvaluator.class);
 
     LuceneQueryExpressionEvaluator(BlockFactory blockFactory, ShardConfig[] shards) {
         super(blockFactory, shards);
@@ -64,6 +66,11 @@ public class LuceneQueryExpressionEvaluator extends LuceneQueryEvaluator<Boolean
         builder.appendBoolean(true);
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        return BASE_RAM_BYTES_USED;
+    }
+
     public record Factory(ShardConfig[] shardConfigs) implements EvalOperator.ExpressionEvaluator.Factory {
         @Override
         public EvalOperator.ExpressionEvaluator get(DriverContext context) {

+ 87 - 10
x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/EvalOperator.java

@@ -7,8 +7,11 @@
 
 package org.elasticsearch.compute.operator;
 
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.RamUsageEstimator;
+import org.elasticsearch.common.breaker.CircuitBreaker;
+import org.elasticsearch.common.util.BigArrays;
 import org.elasticsearch.compute.data.Block;
-import org.elasticsearch.compute.data.BlockFactory;
 import org.elasticsearch.compute.data.Page;
 import org.elasticsearch.core.Releasable;
 import org.elasticsearch.core.Releasables;
@@ -18,12 +21,13 @@ import org.elasticsearch.core.Releasables;
  * new block which is appended to the page.
  */
 public class EvalOperator extends AbstractPageMappingOperator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(EvalOperator.class);
 
     public record EvalOperatorFactory(ExpressionEvaluator.Factory evaluator) implements OperatorFactory {
 
         @Override
         public Operator get(DriverContext driverContext) {
-            return new EvalOperator(driverContext.blockFactory(), evaluator.get(driverContext));
+            return new EvalOperator(driverContext, evaluator.get(driverContext));
         }
 
         @Override
@@ -32,12 +36,13 @@ public class EvalOperator extends AbstractPageMappingOperator {
         }
     }
 
-    private final BlockFactory blockFactory;
+    private final DriverContext ctx;
     private final ExpressionEvaluator evaluator;
 
-    public EvalOperator(BlockFactory blockFactory, ExpressionEvaluator evaluator) {
-        this.blockFactory = blockFactory;
+    public EvalOperator(DriverContext ctx, ExpressionEvaluator evaluator) {
+        this.ctx = ctx;
         this.evaluator = evaluator;
+        ctx.breaker().addEstimateBytesAndMaybeBreak(BASE_RAM_BYTES_USED + evaluator.baseRamBytesUsed(), "ESQL");
     }
 
     @Override
@@ -53,14 +58,77 @@ public class EvalOperator extends AbstractPageMappingOperator {
 
     @Override
     public void close() {
-        Releasables.closeExpectNoException(evaluator, super::close);
+        Releasables.closeExpectNoException(
+            evaluator,
+            () -> ctx.breaker().addWithoutBreaking(-BASE_RAM_BYTES_USED - evaluator.baseRamBytesUsed()),
+            super::close
+        );
     }
 
     /**
      * Evaluates an expression {@code a + b} or {@code log(c)} one {@link Page} at a time.
+     * <h2>Eval</h2>
+     * <p>
+     *     The primary interface is the {@link ExpressionEvaluator#eval(Page)} method which
+     *     performs the actual evaluation. Generally implementations are built in a tree structure
+     *     with member {@link ExpressionEvaluator} for each of their parameters. So
+     *     {@linkplain ExpressionEvaluator#eval(Page)} will typically look like:
+     * </p>
+     * <pre>{@code
+     *   Block lhs = this.lhs.eval(page);
+     *   Block rhs = this.lhs.eval(page);
+     *   try (Block.Builder result = ...) {
+     *       for (int p = 0; p < lhs.getPositionCount(); p++) {
+     *           result.add(doTheThing(lhs.get(p), rhs.get(p)));
+     *       }
+     *   }
+     * }</pre>
+     * <p>
+     *     There are hundreds of them and none of them look just like that, but that's the theory.
+     *     Get {@link Block}s from the children, then evaluate all the rows in a tight loop that
+     *     hopefully can get vectorized.
+     * </p>
+     * <p>
+     *     Implementations need not be thread safe. A new one is built for each {@link Driver} and
+     *     {@linkplain Driver}s are only ever run in one thread at a time. Many implementations
+     *     allocate "scratch" buffers for temporary memory that they reuse on each call to
+     *     {@linkplain ExpressionEvaluator#eval}.
+     * </p>
+     * <p>
+     *     Implementations <strong>must</strong> be ok with being called in by different threads,
+     *     though never at the same time. It's possible that the instance belonging to a particular
+     *     {@linkplain Driver} is called on thread {@code A} many times. And then the driver yields.
+     *     After a few seconds the {@linkplain Driver} could be woken on thread {@code B} and will
+     *     then call {@linkplain ExpressionEvaluator#eval(Page)}. No two threads will ever call
+     *     {@linkplain ExpressionEvaluator#eval(Page)} at the same time on the same instance.
+     *     This rarely matters, but some implementations that interact directly with Lucene will need
+     *     to check that the {@link Thread#currentThread()} is the same as the previous thread. If
+     *     it isn't they'll need to reinit Lucene stuff.
+     * </p>
+     * <h2>Memory tracking</h2>
+     * <p>
+     *     Implementations should track their memory usage because it's possible for us a single
+     *     ESQL operation to make hundreds of them. Unlike with {@link Accountable} we have a
+     *     {@link ExpressionEvaluator#baseRamBytesUsed} which can be read just after creation
+     *     and is the sum of the ram usage of the tree of {@link ExpressionEvaluator}s while
+     *     "empty". If an implementation much allocate any scratch memory this is not included.
+     * </p>
+     * <p>
+     *     {@link ExpressionEvaluator#baseRamBytesUsed} memory is tracked in {@link EvalOperator}.
+     *     Implementation that don't allocate any scratch memory need only implement this and
+     *     use {@link DriverContext#blockFactory()} to build results.
+     * </p>
+     * <p>
+     *     Implementations that <strong>do</strong> allocate memory should use {@link BreakingBytesRefBuilder}
+     *     or {@link BigArrays} or some other safe allocation mechanism. If that isn't possible
+     *     they should communicate with the {@link CircuitBreaker} directly via {@link DriverContext#breaker}.
+     * </p>
      */
     public interface ExpressionEvaluator extends Releasable {
-        /** A Factory for creating ExpressionEvaluators. */
+        /**
+         * A Factory for creating ExpressionEvaluators. This <strong>must</strong>
+         * be thread safe.
+         */
         interface Factory {
             ExpressionEvaluator get(DriverContext context);
 
@@ -81,6 +149,12 @@ public class EvalOperator extends AbstractPageMappingOperator {
          * @return the returned Block has its own reference and the caller is responsible for releasing it.
          */
         Block eval(Page page);
+
+        /**
+         * Heap used by the evaluator <strong>excluding</strong> any memory that's separately tracked
+         * like the {@link BreakingBytesRefBuilder} used for string concat.
+         */
+        long baseRamBytesUsed();
     }
 
     public static final ExpressionEvaluator.Factory CONSTANT_NULL_FACTORY = new ExpressionEvaluator.Factory() {
@@ -93,14 +167,17 @@ public class EvalOperator extends AbstractPageMappingOperator {
                 }
 
                 @Override
-                public void close() {
-
-                }
+                public void close() {}
 
                 @Override
                 public String toString() {
                     return CONSTANT_NULL_NAME;
                 }
+
+                @Override
+                public long baseRamBytesUsed() {
+                    return 0;
+                }
             };
         }
 

+ 11 - 1
x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/mvdedupe/MultivalueDedupe.java

@@ -7,6 +7,7 @@
 
 package org.elasticsearch.compute.operator.mvdedupe;
 
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BlockFactory;
 import org.elasticsearch.compute.data.BooleanBlock;
@@ -164,6 +165,8 @@ public final class MultivalueDedupe {
     }
 
     private static class Evaluator implements ExpressionEvaluator {
+        private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(Evaluator.class);
+
         private final BlockFactory blockFactory;
         private final ExpressionEvaluator field;
         private final BiFunction<BlockFactory, Block, Block> dedupe;
@@ -187,7 +190,14 @@ public final class MultivalueDedupe {
         }
 
         @Override
-        public void close() {}
+        public long baseRamBytesUsed() {
+            return BASE_RAM_BYTES_USED + field.baseRamBytesUsed();
+        }
+
+        @Override
+        public void close() {
+            field.close();
+        }
     }
 
     private MultivalueDedupe() {}

+ 5 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/ConstantBooleanExpressionEvaluator.java

@@ -36,6 +36,11 @@ public record ConstantBooleanExpressionEvaluator(BlockFactory factory, boolean v
         }
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        return 0;
+    }
+
     @Override
     public void close() {}
 

+ 5 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/FilteredGroupingAggregatorFunctionTests.java

@@ -192,6 +192,11 @@ public class FilteredGroupingAggregatorFunctionTests extends GroupingAggregatorF
             }
         }
 
+        @Override
+        public long baseRamBytesUsed() {
+            return 0;
+        }
+
         @Override
         public void close() {
             if (unclosed.remove(tracker) == false) {

+ 2 - 2
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneQueryEvaluatorTests.java

@@ -218,7 +218,7 @@ public abstract class LuceneQueryEvaluatorTests<T extends Vector, U extends Vect
             );
             LuceneQueryEvaluator.ShardConfig[] shards = new LuceneQueryEvaluator.ShardConfig[] {
                 new LuceneQueryEvaluator.ShardConfig(searcher.rewrite(query), searcher) };
-            operators.add(createOperator(blockFactory, shards));
+            operators.add(createOperator(driverContext, shards));
             List<Page> results = new ArrayList<>();
             Driver driver = TestDriverFactory.create(
                 driverContext,
@@ -297,7 +297,7 @@ public abstract class LuceneQueryEvaluatorTests<T extends Vector, U extends Vect
     /**
      * Create the operator to test
      */
-    protected abstract Operator createOperator(BlockFactory blockFactory, LuceneQueryEvaluator.ShardConfig[] shards);
+    protected abstract Operator createOperator(DriverContext driverContext, LuceneQueryEvaluator.ShardConfig[] shards);
 
     /**
      * Should the test use scoring?

+ 3 - 3
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneQueryExpressionEvaluatorTests.java

@@ -8,10 +8,10 @@
 package org.elasticsearch.compute.lucene;
 
 import org.apache.lucene.search.Scorable;
-import org.elasticsearch.compute.data.BlockFactory;
 import org.elasticsearch.compute.data.BooleanVector;
 import org.elasticsearch.compute.data.Page;
 import org.elasticsearch.compute.lucene.LuceneQueryEvaluator.DenseCollector;
+import org.elasticsearch.compute.operator.DriverContext;
 import org.elasticsearch.compute.operator.EvalOperator;
 import org.elasticsearch.compute.operator.Operator;
 
@@ -38,8 +38,8 @@ public class LuceneQueryExpressionEvaluatorTests extends LuceneQueryEvaluatorTes
     }
 
     @Override
-    protected Operator createOperator(BlockFactory blockFactory, LuceneQueryEvaluator.ShardConfig[] shards) {
-        return new EvalOperator(blockFactory, new LuceneQueryExpressionEvaluator(blockFactory, shards));
+    protected Operator createOperator(DriverContext ctx, LuceneQueryEvaluator.ShardConfig[] shards) {
+        return new EvalOperator(ctx, new LuceneQueryExpressionEvaluator(ctx.blockFactory(), shards));
     }
 
     @Override

+ 3 - 3
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneQueryScoreEvaluatorTests.java

@@ -8,9 +8,9 @@
 package org.elasticsearch.compute.lucene;
 
 import org.apache.lucene.search.Scorable;
-import org.elasticsearch.compute.data.BlockFactory;
 import org.elasticsearch.compute.data.DoubleVector;
 import org.elasticsearch.compute.data.Page;
+import org.elasticsearch.compute.operator.DriverContext;
 import org.elasticsearch.compute.operator.Operator;
 import org.elasticsearch.compute.operator.ScoreOperator;
 
@@ -47,8 +47,8 @@ public class LuceneQueryScoreEvaluatorTests extends LuceneQueryEvaluatorTests<Do
     }
 
     @Override
-    protected Operator createOperator(BlockFactory blockFactory, LuceneQueryEvaluator.ShardConfig[] shards) {
-        return new ScoreOperator(blockFactory, new LuceneQueryScoreEvaluator(blockFactory, shards), 1);
+    protected Operator createOperator(DriverContext ctx, LuceneQueryEvaluator.ShardConfig[] shards) {
+        return new ScoreOperator(ctx.blockFactory(), new LuceneQueryScoreEvaluator(ctx.blockFactory(), shards), 1);
     }
 
     @Override

+ 5 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/read/ValueSourceReaderTypeConversionTests.java

@@ -1663,6 +1663,11 @@ public class ValueSourceReaderTypeConversionTests extends AnyOperatorTestCase {
                     return blockConverter.convert(block);
                 }
 
+                @Override
+                public long baseRamBytesUsed() {
+                    return 0;
+                }
+
                 @Override
                 public void close() {}
             };

+ 5 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/AddGarbageRowsSourceOperator.java

@@ -39,6 +39,11 @@ public class AddGarbageRowsSourceOperator extends SourceOperator {
                 return block;
             }
 
+            @Override
+            public long baseRamBytesUsed() {
+                return 0;
+            }
+
             @Override
             public void close() {}
         };

+ 5 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/ColumnExtractOperatorTests.java

@@ -65,6 +65,11 @@ public class ColumnExtractOperatorTests extends OperatorTestCase {
                     return input;
                 }
 
+                @Override
+                public long baseRamBytesUsed() {
+                    return 0;
+                }
+
                 @Override
                 public void close() {}
             },

+ 6 - 1
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/DriverTests.java

@@ -371,7 +371,7 @@ public class DriverTests extends ESTestCase {
             final AtomicInteger processedRows = new AtomicInteger(0);
             var sinkHandler = new ExchangeSinkHandler(driverContext.blockFactory(), positions, System::currentTimeMillis);
             var sinkOperator = new ExchangeSinkOperator(sinkHandler.createExchangeSink(() -> {}));
-            final var delayOperator = new EvalOperator(driverContext.blockFactory(), new EvalOperator.ExpressionEvaluator() {
+            final var delayOperator = new EvalOperator(driverContext, new EvalOperator.ExpressionEvaluator() {
                 @Override
                 public Block eval(Page page) {
                     for (int i = 0; i < page.getPositionCount(); i++) {
@@ -383,6 +383,11 @@ public class DriverTests extends ESTestCase {
                     return driverContext.blockFactory().newConstantBooleanBlockWith(true, page.getPositionCount());
                 }
 
+                @Override
+                public long baseRamBytesUsed() {
+                    return 0;
+                }
+
                 @Override
                 public void close() {
 

+ 10 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/EvalOperatorTests.java

@@ -46,6 +46,11 @@ public class EvalOperatorTests extends OperatorTestCase {
             }
         }
 
+        @Override
+        public long baseRamBytesUsed() {
+            return 1;
+        }
+
         @Override
         public String toString() {
             return "Addition[lhs=" + lhs + ", rhs=" + rhs + ']';
@@ -63,6 +68,11 @@ public class EvalOperatorTests extends OperatorTestCase {
             return block;
         }
 
+        @Override
+        public long baseRamBytesUsed() {
+            return 2;
+        }
+
         @Override
         public void close() {}
     }

+ 5 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/FilterOperatorTests.java

@@ -44,6 +44,11 @@ public class FilterOperatorTests extends OperatorTestCase {
             return result.build().asBlock();
         }
 
+        @Override
+        public long baseRamBytesUsed() {
+            return 0;
+        }
+
         @Override
         public String toString() {
             return "SameLastDigit[lhs=" + lhs + ", rhs=" + rhs + ']';

+ 10 - 0
x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/StringExtractOperatorTests.java

@@ -53,6 +53,11 @@ public class StringExtractOperatorTests extends OperatorTestCase {
                     return block;
                 }
 
+                @Override
+                public long baseRamBytesUsed() {
+                    return 0;
+                }
+
                 @Override
                 public void close() {}
             },
@@ -94,6 +99,11 @@ public class StringExtractOperatorTests extends OperatorTestCase {
                 return block;
             }
 
+            @Override
+            public long baseRamBytesUsed() {
+                return 0;
+            }
+
             @Override
             public void close() {}
         }, new FirstWord("test"), driverContext());

+ 13 - 1
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceBooleanEvaluator.java

@@ -8,6 +8,7 @@
 package org.elasticsearch.xpack.esql.expression.function.scalar.nulls;
 
 // begin generated imports
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.Page;
@@ -25,12 +26,14 @@ import java.util.stream.IntStream;
 
 /**
  * {@link EvalOperator.ExpressionEvaluator} implementation for {@link Coalesce}.
- * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
+ * This class is generated. Edit {@code X-CoalesceEvaluator.java.st} instead.
  */
 abstract sealed class CoalesceBooleanEvaluator implements EvalOperator.ExpressionEvaluator permits
     CoalesceBooleanEvaluator.CoalesceBooleanEagerEvaluator, //
     CoalesceBooleanEvaluator.CoalesceBooleanLazyEvaluator {
 
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(CoalesceBooleanEvaluator.class);
+
     static ExpressionEvaluator.Factory toEvaluator(EvaluatorMapper.ToEvaluator toEvaluator, List<Expression> children) {
         List<ExpressionEvaluator.Factory> childEvaluators = children.stream().map(toEvaluator::apply).toList();
         if (childEvaluators.stream().allMatch(ExpressionEvaluator.Factory::eagerEvalSafeInLazy)) {
@@ -130,6 +133,15 @@ abstract sealed class CoalesceBooleanEvaluator implements EvalOperator.Expressio
         return getClass().getSimpleName() + "[values=" + evaluators + ']';
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        for (ExpressionEvaluator e : evaluators) {
+            baseRamBytesUsed += e.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public final void close() {
         Releasables.closeExpectNoException(() -> Releasables.close(evaluators));

+ 13 - 1
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceBytesRefEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.nulls;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.Page;
@@ -26,12 +27,14 @@ import java.util.stream.IntStream;
 
 /**
  * {@link EvalOperator.ExpressionEvaluator} implementation for {@link Coalesce}.
- * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
+ * This class is generated. Edit {@code X-CoalesceEvaluator.java.st} instead.
  */
 abstract sealed class CoalesceBytesRefEvaluator implements EvalOperator.ExpressionEvaluator permits
     CoalesceBytesRefEvaluator.CoalesceBytesRefEagerEvaluator, //
     CoalesceBytesRefEvaluator.CoalesceBytesRefLazyEvaluator {
 
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(CoalesceBytesRefEvaluator.class);
+
     static ExpressionEvaluator.Factory toEvaluator(EvaluatorMapper.ToEvaluator toEvaluator, List<Expression> children) {
         List<ExpressionEvaluator.Factory> childEvaluators = children.stream().map(toEvaluator::apply).toList();
         if (childEvaluators.stream().allMatch(ExpressionEvaluator.Factory::eagerEvalSafeInLazy)) {
@@ -131,6 +134,15 @@ abstract sealed class CoalesceBytesRefEvaluator implements EvalOperator.Expressi
         return getClass().getSimpleName() + "[values=" + evaluators + ']';
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        for (ExpressionEvaluator e : evaluators) {
+            baseRamBytesUsed += e.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public final void close() {
         Releasables.closeExpectNoException(() -> Releasables.close(evaluators));

+ 13 - 1
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceDoubleEvaluator.java

@@ -8,6 +8,7 @@
 package org.elasticsearch.xpack.esql.expression.function.scalar.nulls;
 
 // begin generated imports
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.Page;
@@ -25,12 +26,14 @@ import java.util.stream.IntStream;
 
 /**
  * {@link EvalOperator.ExpressionEvaluator} implementation for {@link Coalesce}.
- * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
+ * This class is generated. Edit {@code X-CoalesceEvaluator.java.st} instead.
  */
 abstract sealed class CoalesceDoubleEvaluator implements EvalOperator.ExpressionEvaluator permits
     CoalesceDoubleEvaluator.CoalesceDoubleEagerEvaluator, //
     CoalesceDoubleEvaluator.CoalesceDoubleLazyEvaluator {
 
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(CoalesceDoubleEvaluator.class);
+
     static ExpressionEvaluator.Factory toEvaluator(EvaluatorMapper.ToEvaluator toEvaluator, List<Expression> children) {
         List<ExpressionEvaluator.Factory> childEvaluators = children.stream().map(toEvaluator::apply).toList();
         if (childEvaluators.stream().allMatch(ExpressionEvaluator.Factory::eagerEvalSafeInLazy)) {
@@ -130,6 +133,15 @@ abstract sealed class CoalesceDoubleEvaluator implements EvalOperator.Expression
         return getClass().getSimpleName() + "[values=" + evaluators + ']';
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        for (ExpressionEvaluator e : evaluators) {
+            baseRamBytesUsed += e.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public final void close() {
         Releasables.closeExpectNoException(() -> Releasables.close(evaluators));

+ 13 - 1
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceIntEvaluator.java

@@ -8,6 +8,7 @@
 package org.elasticsearch.xpack.esql.expression.function.scalar.nulls;
 
 // begin generated imports
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.IntBlock;
 import org.elasticsearch.compute.data.Page;
@@ -25,12 +26,14 @@ import java.util.stream.IntStream;
 
 /**
  * {@link EvalOperator.ExpressionEvaluator} implementation for {@link Coalesce}.
- * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
+ * This class is generated. Edit {@code X-CoalesceEvaluator.java.st} instead.
  */
 abstract sealed class CoalesceIntEvaluator implements EvalOperator.ExpressionEvaluator permits
     CoalesceIntEvaluator.CoalesceIntEagerEvaluator, //
     CoalesceIntEvaluator.CoalesceIntLazyEvaluator {
 
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(CoalesceIntEvaluator.class);
+
     static ExpressionEvaluator.Factory toEvaluator(EvaluatorMapper.ToEvaluator toEvaluator, List<Expression> children) {
         List<ExpressionEvaluator.Factory> childEvaluators = children.stream().map(toEvaluator::apply).toList();
         if (childEvaluators.stream().allMatch(ExpressionEvaluator.Factory::eagerEvalSafeInLazy)) {
@@ -130,6 +133,15 @@ abstract sealed class CoalesceIntEvaluator implements EvalOperator.ExpressionEva
         return getClass().getSimpleName() + "[values=" + evaluators + ']';
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        for (ExpressionEvaluator e : evaluators) {
+            baseRamBytesUsed += e.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public final void close() {
         Releasables.closeExpectNoException(() -> Releasables.close(evaluators));

+ 13 - 1
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/function/scalar/nulls/CoalesceLongEvaluator.java

@@ -8,6 +8,7 @@
 package org.elasticsearch.xpack.esql.expression.function.scalar.nulls;
 
 // begin generated imports
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.LongBlock;
 import org.elasticsearch.compute.data.Page;
@@ -25,12 +26,14 @@ import java.util.stream.IntStream;
 
 /**
  * {@link EvalOperator.ExpressionEvaluator} implementation for {@link Coalesce}.
- * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
+ * This class is generated. Edit {@code X-CoalesceEvaluator.java.st} instead.
  */
 abstract sealed class CoalesceLongEvaluator implements EvalOperator.ExpressionEvaluator permits
     CoalesceLongEvaluator.CoalesceLongEagerEvaluator, //
     CoalesceLongEvaluator.CoalesceLongLazyEvaluator {
 
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(CoalesceLongEvaluator.class);
+
     static ExpressionEvaluator.Factory toEvaluator(EvaluatorMapper.ToEvaluator toEvaluator, List<Expression> children) {
         List<ExpressionEvaluator.Factory> childEvaluators = children.stream().map(toEvaluator::apply).toList();
         if (childEvaluators.stream().allMatch(ExpressionEvaluator.Factory::eagerEvalSafeInLazy)) {
@@ -130,6 +133,15 @@ abstract sealed class CoalesceLongEvaluator implements EvalOperator.ExpressionEv
         return getClass().getSimpleName() + "[values=" + evaluators + ']';
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        for (ExpressionEvaluator e : evaluators) {
+            baseRamBytesUsed += e.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public final void close() {
         Releasables.closeExpectNoException(() -> Releasables.close(evaluators));

+ 13 - 0
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InBooleanEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.predicate.operator.comparison;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanBlock;
@@ -31,6 +32,8 @@ import java.util.BitSet;
  * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
  */
 public class InBooleanEvaluator implements EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(InBooleanEvaluator.class);
+
     private final Source source;
 
     private final EvalOperator.ExpressionEvaluator lhs;
@@ -169,6 +172,16 @@ public class InBooleanEvaluator implements EvalOperator.ExpressionEvaluator {
         return "InBooleanEvaluator[" + "lhs=" + lhs + ", rhs=" + Arrays.toString(rhs) + "]";
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        baseRamBytesUsed += lhs.baseRamBytesUsed();
+        for (EvalOperator.ExpressionEvaluator r : rhs) {
+            baseRamBytesUsed += r.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public void close() {
         Releasables.closeExpectNoException(lhs, () -> Releasables.close(rhs));

+ 13 - 0
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InBytesRefEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.predicate.operator.comparison;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BytesRefBlock;
@@ -31,6 +32,8 @@ import java.util.BitSet;
  * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
  */
 public class InBytesRefEvaluator implements EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(InBytesRefEvaluator.class);
+
     private final Source source;
 
     private final EvalOperator.ExpressionEvaluator lhs;
@@ -159,6 +162,16 @@ public class InBytesRefEvaluator implements EvalOperator.ExpressionEvaluator {
         return "InBytesRefEvaluator[" + "lhs=" + lhs + ", rhs=" + Arrays.toString(rhs) + "]";
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        baseRamBytesUsed += lhs.baseRamBytesUsed();
+        for (EvalOperator.ExpressionEvaluator r : rhs) {
+            baseRamBytesUsed += r.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public void close() {
         Releasables.closeExpectNoException(lhs, () -> Releasables.close(rhs));

+ 13 - 0
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InDoubleEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.predicate.operator.comparison;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.DoubleBlock;
@@ -31,6 +32,8 @@ import java.util.BitSet;
  * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
  */
 public class InDoubleEvaluator implements EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(InDoubleEvaluator.class);
+
     private final Source source;
 
     private final EvalOperator.ExpressionEvaluator lhs;
@@ -149,6 +152,16 @@ public class InDoubleEvaluator implements EvalOperator.ExpressionEvaluator {
         return "InDoubleEvaluator[" + "lhs=" + lhs + ", rhs=" + Arrays.toString(rhs) + "]";
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        baseRamBytesUsed += lhs.baseRamBytesUsed();
+        for (EvalOperator.ExpressionEvaluator r : rhs) {
+            baseRamBytesUsed += r.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public void close() {
         Releasables.closeExpectNoException(lhs, () -> Releasables.close(rhs));

+ 13 - 0
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InIntEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.predicate.operator.comparison;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.IntBlock;
@@ -31,6 +32,8 @@ import java.util.BitSet;
  * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
  */
 public class InIntEvaluator implements EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(InIntEvaluator.class);
+
     private final Source source;
 
     private final EvalOperator.ExpressionEvaluator lhs;
@@ -149,6 +152,16 @@ public class InIntEvaluator implements EvalOperator.ExpressionEvaluator {
         return "InIntEvaluator[" + "lhs=" + lhs + ", rhs=" + Arrays.toString(rhs) + "]";
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        baseRamBytesUsed += lhs.baseRamBytesUsed();
+        for (EvalOperator.ExpressionEvaluator r : rhs) {
+            baseRamBytesUsed += r.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public void close() {
         Releasables.closeExpectNoException(lhs, () -> Releasables.close(rhs));

+ 13 - 0
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InLongEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.predicate.operator.comparison;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -31,6 +32,8 @@ import java.util.BitSet;
  * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
  */
 public class InLongEvaluator implements EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(InLongEvaluator.class);
+
     private final Source source;
 
     private final EvalOperator.ExpressionEvaluator lhs;
@@ -149,6 +152,16 @@ public class InLongEvaluator implements EvalOperator.ExpressionEvaluator {
         return "InLongEvaluator[" + "lhs=" + lhs + ", rhs=" + Arrays.toString(rhs) + "]";
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        baseRamBytesUsed += lhs.baseRamBytesUsed();
+        for (EvalOperator.ExpressionEvaluator r : rhs) {
+            baseRamBytesUsed += r.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public void close() {
         Releasables.closeExpectNoException(lhs, () -> Releasables.close(rhs));

+ 13 - 0
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InMillisNanosEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.predicate.operator.comparison;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -31,6 +32,8 @@ import java.util.BitSet;
  * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
  */
 public class InMillisNanosEvaluator implements EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(InMillisNanosEvaluator.class);
+
     private final Source source;
 
     private final EvalOperator.ExpressionEvaluator lhs;
@@ -149,6 +152,16 @@ public class InMillisNanosEvaluator implements EvalOperator.ExpressionEvaluator
         return "InMillisNanosEvaluator[" + "lhs=" + lhs + ", rhs=" + Arrays.toString(rhs) + "]";
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        baseRamBytesUsed += lhs.baseRamBytesUsed();
+        for (EvalOperator.ExpressionEvaluator r : rhs) {
+            baseRamBytesUsed += r.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public void close() {
         Releasables.closeExpectNoException(lhs, () -> Releasables.close(rhs));

+ 13 - 0
x-pack/plugin/esql/src/main/generated-src/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/InNanosMillisEvaluator.java

@@ -9,6 +9,7 @@ package org.elasticsearch.xpack.esql.expression.predicate.operator.comparison;
 
 // begin generated imports
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -31,6 +32,8 @@ import java.util.BitSet;
  * This class is generated. Edit {@code X-InEvaluator.java.st} instead.
  */
 public class InNanosMillisEvaluator implements EvalOperator.ExpressionEvaluator {
+    private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(InNanosMillisEvaluator.class);
+
     private final Source source;
 
     private final EvalOperator.ExpressionEvaluator lhs;
@@ -149,6 +152,16 @@ public class InNanosMillisEvaluator implements EvalOperator.ExpressionEvaluator
         return "InNanosMillisEvaluator[" + "lhs=" + lhs + ", rhs=" + Arrays.toString(rhs) + "]";
     }
 
+    @Override
+    public long baseRamBytesUsed() {
+        long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+        baseRamBytesUsed += lhs.baseRamBytesUsed();
+        for (EvalOperator.ExpressionEvaluator r : rhs) {
+            baseRamBytesUsed += r.baseRamBytesUsed();
+        }
+        return baseRamBytesUsed;
+    }
+
     @Override
     public void close() {
         Releasables.closeExpectNoException(lhs, () -> Releasables.close(rhs));

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestBooleanEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class GreatestBooleanEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(GreatestBooleanEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class GreatestBooleanEvaluator implements EvalOperator.ExpressionEv
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public BooleanBlock eval(int positionCount, BooleanBlock[] valuesBlocks) {
     try(BooleanBlock.Builder result = driverContext.blockFactory().newBooleanBlockBuilder(positionCount)) {
       boolean[] valuesValues = new boolean[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestBytesRefEvaluator.java

@@ -9,6 +9,7 @@ import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -25,6 +26,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class GreatestBytesRefEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(GreatestBytesRefEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -58,6 +61,15 @@ public final class GreatestBytesRefEvaluator implements EvalOperator.ExpressionE
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public BytesRefBlock eval(int positionCount, BytesRefBlock[] valuesBlocks) {
     try(BytesRefBlock.Builder result = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) {
       BytesRef[] valuesValues = new BytesRef[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestDoubleEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.DoubleVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class GreatestDoubleEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(GreatestDoubleEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class GreatestDoubleEvaluator implements EvalOperator.ExpressionEva
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public DoubleBlock eval(int positionCount, DoubleBlock[] valuesBlocks) {
     try(DoubleBlock.Builder result = driverContext.blockFactory().newDoubleBlockBuilder(positionCount)) {
       double[] valuesValues = new double[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestIntEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.IntBlock;
 import org.elasticsearch.compute.data.IntVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class GreatestIntEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(GreatestIntEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class GreatestIntEvaluator implements EvalOperator.ExpressionEvalua
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public IntBlock eval(int positionCount, IntBlock[] valuesBlocks) {
     try(IntBlock.Builder result = driverContext.blockFactory().newIntBlockBuilder(positionCount)) {
       int[] valuesValues = new int[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/GreatestLongEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.LongBlock;
 import org.elasticsearch.compute.data.LongVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class GreatestLongEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(GreatestLongEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class GreatestLongEvaluator implements EvalOperator.ExpressionEvalu
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public LongBlock eval(int positionCount, LongBlock[] valuesBlocks) {
     try(LongBlock.Builder result = driverContext.blockFactory().newLongBlockBuilder(positionCount)) {
       long[] valuesValues = new long[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastBooleanEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class LeastBooleanEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(LeastBooleanEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class LeastBooleanEvaluator implements EvalOperator.ExpressionEvalu
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public BooleanBlock eval(int positionCount, BooleanBlock[] valuesBlocks) {
     try(BooleanBlock.Builder result = driverContext.blockFactory().newBooleanBlockBuilder(positionCount)) {
       boolean[] valuesValues = new boolean[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastBytesRefEvaluator.java

@@ -9,6 +9,7 @@ import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -25,6 +26,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class LeastBytesRefEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(LeastBytesRefEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -58,6 +61,15 @@ public final class LeastBytesRefEvaluator implements EvalOperator.ExpressionEval
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public BytesRefBlock eval(int positionCount, BytesRefBlock[] valuesBlocks) {
     try(BytesRefBlock.Builder result = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) {
       BytesRef[] valuesValues = new BytesRef[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastDoubleEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.DoubleVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class LeastDoubleEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(LeastDoubleEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class LeastDoubleEvaluator implements EvalOperator.ExpressionEvalua
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public DoubleBlock eval(int positionCount, DoubleBlock[] valuesBlocks) {
     try(DoubleBlock.Builder result = driverContext.blockFactory().newDoubleBlockBuilder(positionCount)) {
       double[] valuesValues = new double[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastIntEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.IntBlock;
 import org.elasticsearch.compute.data.IntVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class LeastIntEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(LeastIntEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class LeastIntEvaluator implements EvalOperator.ExpressionEvaluator
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public IntBlock eval(int positionCount, IntBlock[] valuesBlocks) {
     try(IntBlock.Builder result = driverContext.blockFactory().newIntBlockBuilder(positionCount)) {
       int[] valuesValues = new int[values.length];

+ 12 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/LeastLongEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import java.util.Arrays;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.LongBlock;
 import org.elasticsearch.compute.data.LongVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class LeastLongEvaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(LeastLongEvaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator[] values;
@@ -57,6 +60,15 @@ public final class LeastLongEvaluator implements EvalOperator.ExpressionEvaluato
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    for (EvalOperator.ExpressionEvaluator e : values) {
+      baseRamBytesUsed += e.baseRamBytesUsed();
+    }
+    return baseRamBytesUsed;
+  }
+
   public LongBlock eval(int positionCount, LongBlock[] valuesBlocks) {
     try(LongBlock.Builder result = driverContext.blockFactory().newLongBlockBuilder(positionCount)) {
       long[] valuesValues = new long[values.length];

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/FromBase64Evaluator.java

@@ -10,6 +10,7 @@ import java.lang.String;
 import java.util.function.Function;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -25,6 +26,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class FromBase64Evaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(FromBase64Evaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator field;
@@ -54,6 +57,13 @@ public final class FromBase64Evaluator implements EvalOperator.ExpressionEvaluat
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += field.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public BytesRefBlock eval(int positionCount, BytesRefBlock fieldBlock) {
     try(BytesRefBlock.Builder result = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) {
       BytesRef fieldScratch = new BytesRef();

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreDecimalEvaluator.java

@@ -9,6 +9,7 @@ import java.lang.Override;
 import java.lang.String;
 import java.util.function.Function;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ParseIpLeadingZerosAreDecimalEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ParseIpLeadingZerosAreDecimalEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator string;
 
   private final BreakingBytesRefBuilder scratch;
@@ -122,6 +125,13 @@ public final class ParseIpLeadingZerosAreDecimalEvaluator extends AbstractConver
     Releasables.closeExpectNoException(string, scratch);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += string.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosAreOctalEvaluator.java

@@ -9,6 +9,7 @@ import java.lang.Override;
 import java.lang.String;
 import java.util.function.Function;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ParseIpLeadingZerosAreOctalEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ParseIpLeadingZerosAreOctalEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator string;
 
   private final BreakingBytesRefBuilder scratch;
@@ -122,6 +125,13 @@ public final class ParseIpLeadingZerosAreOctalEvaluator extends AbstractConvertF
     Releasables.closeExpectNoException(string, scratch);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += string.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ParseIpLeadingZerosRejectedEvaluator.java

@@ -9,6 +9,7 @@ import java.lang.Override;
 import java.lang.String;
 import java.util.function.Function;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -24,6 +25,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ParseIpLeadingZerosRejectedEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ParseIpLeadingZerosRejectedEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator string;
 
   private final BreakingBytesRefBuilder scratch;
@@ -122,6 +125,13 @@ public final class ParseIpLeadingZerosRejectedEvaluator extends AbstractConvertF
     Releasables.closeExpectNoException(string, scratch);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += string.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBase64Evaluator.java

@@ -11,6 +11,7 @@ import java.lang.String;
 import java.util.function.Function;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -26,6 +27,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code EvaluatorImplementer} instead.
  */
 public final class ToBase64Evaluator implements EvalOperator.ExpressionEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToBase64Evaluator.class);
+
   private final Source source;
 
   private final EvalOperator.ExpressionEvaluator field;
@@ -55,6 +58,13 @@ public final class ToBase64Evaluator implements EvalOperator.ExpressionEvaluator
     }
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += field.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public BytesRefBlock eval(int positionCount, BytesRefBlock fieldBlock) {
     try(BytesRefBlock.Builder result = driverContext.blockFactory().newBytesRefBlockBuilder(positionCount)) {
       BytesRef fieldScratch = new BytesRef();

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromDoubleEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.DoubleBlock;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToBooleanFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToBooleanFromDoubleEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator d;
 
   public ToBooleanFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator d,
@@ -99,6 +102,13 @@ public final class ToBooleanFromDoubleEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(d);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += d.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromIntEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.IntBlock;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToBooleanFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToBooleanFromIntEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator i;
 
   public ToBooleanFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator i,
@@ -99,6 +102,13 @@ public final class ToBooleanFromIntEvaluator extends AbstractConvertFunction.Abs
     Releasables.closeExpectNoException(i);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += i.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromLongEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToBooleanFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToBooleanFromLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator l;
 
   public ToBooleanFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator l,
@@ -99,6 +102,13 @@ public final class ToBooleanFromLongEvaluator extends AbstractConvertFunction.Ab
     Releasables.closeExpectNoException(l);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += l.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromStringEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BytesRefBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToBooleanFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToBooleanFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator keyword;
 
   public ToBooleanFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator keyword,
@@ -102,6 +105,13 @@ public final class ToBooleanFromStringEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(keyword);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += keyword.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToBooleanFromUnsignedLongEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToBooleanFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToBooleanFromUnsignedLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator ul;
 
   public ToBooleanFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator ul,
@@ -99,6 +102,13 @@ public final class ToBooleanFromUnsignedLongEvaluator extends AbstractConvertFun
     Releasables.closeExpectNoException(ul);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += ul.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianPointFromStringEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToCartesianPointFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToCartesianPointFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToCartesianPointFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -116,6 +119,13 @@ public final class ToCartesianPointFromStringEvaluator extends AbstractConvertFu
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToCartesianShapeFromStringEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToCartesianShapeFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToCartesianShapeFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToCartesianShapeFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -116,6 +119,13 @@ public final class ToCartesianShapeFromStringEvaluator extends AbstractConvertFu
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDatetimeEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.LongBlock;
 import org.elasticsearch.compute.data.LongVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDateNanosFromDatetimeEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDateNanosFromDatetimeEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToDateNanosFromDatetimeEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -113,6 +116,13 @@ public final class ToDateNanosFromDatetimeEvaluator extends AbstractConvertFunct
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromDoubleEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.DoubleVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDateNanosFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDateNanosFromDoubleEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToDateNanosFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -115,6 +118,13 @@ public final class ToDateNanosFromDoubleEvaluator extends AbstractConvertFunctio
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromLongEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.LongBlock;
 import org.elasticsearch.compute.data.LongVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDateNanosFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDateNanosFromLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToDateNanosFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -113,6 +116,13 @@ public final class ToDateNanosFromLongEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDateNanosFromStringEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDateNanosFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDateNanosFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToDateNanosFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -117,6 +120,13 @@ public final class ToDateNanosFromStringEvaluator extends AbstractConvertFunctio
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromDateNanosEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.LongBlock;
 import org.elasticsearch.compute.data.LongVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDatetimeFromDateNanosEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDatetimeFromDateNanosEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToDatetimeFromDateNanosEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -113,6 +116,13 @@ public final class ToDatetimeFromDateNanosEvaluator extends AbstractConvertFunct
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDatetimeFromStringEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDatetimeFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDatetimeFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToDatetimeFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -117,6 +120,13 @@ public final class ToDatetimeFromStringEvaluator extends AbstractConvertFunction
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDegreesEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.ArithmeticException;
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.DoubleVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDegreesEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDegreesEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator deg;
 
   public ToDegreesEvaluator(Source source, EvalOperator.ExpressionEvaluator deg,
@@ -113,6 +116,13 @@ public final class ToDegreesEvaluator extends AbstractConvertFunction.AbstractEv
     Releasables.closeExpectNoException(deg);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += deg.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromBooleanEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDoubleFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDoubleFromBooleanEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator bool;
 
   public ToDoubleFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool,
@@ -99,6 +102,13 @@ public final class ToDoubleFromBooleanEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(bool);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += bool.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromIntEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.IntBlock;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDoubleFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDoubleFromIntEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator i;
 
   public ToDoubleFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator i,
@@ -99,6 +102,13 @@ public final class ToDoubleFromIntEvaluator extends AbstractConvertFunction.Abst
     Releasables.closeExpectNoException(i);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += i.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromLongEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDoubleFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDoubleFromLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator l;
 
   public ToDoubleFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator l,
@@ -99,6 +102,13 @@ public final class ToDoubleFromLongEvaluator extends AbstractConvertFunction.Abs
     Releasables.closeExpectNoException(l);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += l.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromStringEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDoubleFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDoubleFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToDoubleFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -117,6 +120,13 @@ public final class ToDoubleFromStringEvaluator extends AbstractConvertFunction.A
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDoubleFromUnsignedLongEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToDoubleFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToDoubleFromUnsignedLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator l;
 
   public ToDoubleFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator l,
@@ -99,6 +102,13 @@ public final class ToDoubleFromUnsignedLongEvaluator extends AbstractConvertFunc
     Releasables.closeExpectNoException(l);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += l.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoPointFromStringEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToGeoPointFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToGeoPointFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToGeoPointFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -116,6 +119,13 @@ public final class ToGeoPointFromStringEvaluator extends AbstractConvertFunction
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToGeoShapeFromStringEvaluator.java

@@ -8,6 +8,7 @@ import java.lang.IllegalArgumentException;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToGeoShapeFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToGeoShapeFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToGeoShapeFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -116,6 +119,13 @@ public final class ToGeoShapeFromStringEvaluator extends AbstractConvertFunction
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromBooleanEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToIntegerFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToIntegerFromBooleanEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator bool;
 
   public ToIntegerFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool,
@@ -99,6 +102,13 @@ public final class ToIntegerFromBooleanEvaluator extends AbstractConvertFunction
     Releasables.closeExpectNoException(bool);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += bool.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromDoubleEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.DoubleVector;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToIntegerFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToIntegerFromDoubleEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator dbl;
 
   public ToIntegerFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator dbl,
@@ -114,6 +117,13 @@ public final class ToIntegerFromDoubleEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(dbl);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += dbl.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromLongEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.IntBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToIntegerFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToIntegerFromLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator lng;
 
   public ToIntegerFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator lng,
@@ -114,6 +117,13 @@ public final class ToIntegerFromLongEvaluator extends AbstractConvertFunction.Ab
     Releasables.closeExpectNoException(lng);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += lng.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromStringEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToIntegerFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToIntegerFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToIntegerFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -117,6 +120,13 @@ public final class ToIntegerFromStringEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToIntegerFromUnsignedLongEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.IntBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToIntegerFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToIntegerFromUnsignedLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator ul;
 
   public ToIntegerFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator ul,
@@ -114,6 +117,13 @@ public final class ToIntegerFromUnsignedLongEvaluator extends AbstractConvertFun
     Releasables.closeExpectNoException(ul);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += ul.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromBooleanEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToLongFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToLongFromBooleanEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator bool;
 
   public ToLongFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool,
@@ -99,6 +102,13 @@ public final class ToLongFromBooleanEvaluator extends AbstractConvertFunction.Ab
     Releasables.closeExpectNoException(bool);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += bool.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromDoubleEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.DoubleVector;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToLongFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToLongFromDoubleEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator dbl;
 
   public ToLongFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator dbl,
@@ -114,6 +117,13 @@ public final class ToLongFromDoubleEvaluator extends AbstractConvertFunction.Abs
     Releasables.closeExpectNoException(dbl);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += dbl.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromIntEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.IntBlock;
 import org.elasticsearch.compute.data.IntVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToLongFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToLongFromIntEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator i;
 
   public ToLongFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator i,
@@ -99,6 +102,13 @@ public final class ToLongFromIntEvaluator extends AbstractConvertFunction.Abstra
     Releasables.closeExpectNoException(i);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += i.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromStringEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToLongFromStringEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToLongFromStringEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator in;
 
   public ToLongFromStringEvaluator(Source source, EvalOperator.ExpressionEvaluator in,
@@ -117,6 +120,13 @@ public final class ToLongFromStringEvaluator extends AbstractConvertFunction.Abs
     Releasables.closeExpectNoException(in);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += in.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToLongFromUnsignedLongEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.LongBlock;
 import org.elasticsearch.compute.data.LongVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToLongFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToLongFromUnsignedLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator ul;
 
   public ToLongFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator ul,
@@ -113,6 +116,13 @@ public final class ToLongFromUnsignedLongEvaluator extends AbstractConvertFuncti
     Releasables.closeExpectNoException(ul);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += ul.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToRadiansEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.DoubleBlock;
 import org.elasticsearch.compute.data.DoubleVector;
@@ -20,6 +21,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToRadiansEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToRadiansEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator deg;
 
   public ToRadiansEvaluator(Source source, EvalOperator.ExpressionEvaluator deg,
@@ -98,6 +101,13 @@ public final class ToRadiansEvaluator extends AbstractConvertFunction.AbstractEv
     Releasables.closeExpectNoException(deg);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += deg.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromBooleanEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromBooleanEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator bool;
 
   public ToStringFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool,
@@ -100,6 +103,13 @@ public final class ToStringFromBooleanEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(bool);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += bool.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianPointEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromCartesianPointEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromCartesianPointEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator wkb;
 
   public ToStringFromCartesianPointEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb,
@@ -120,6 +123,13 @@ public final class ToStringFromCartesianPointEvaluator extends AbstractConvertFu
     Releasables.closeExpectNoException(wkb);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += wkb.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromCartesianShapeEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromCartesianShapeEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromCartesianShapeEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator wkb;
 
   public ToStringFromCartesianShapeEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb,
@@ -120,6 +123,13 @@ public final class ToStringFromCartesianShapeEvaluator extends AbstractConvertFu
     Releasables.closeExpectNoException(wkb);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += wkb.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDateNanosEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromDateNanosEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromDateNanosEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator datetime;
 
   public ToStringFromDateNanosEvaluator(Source source, EvalOperator.ExpressionEvaluator datetime,
@@ -100,6 +103,13 @@ public final class ToStringFromDateNanosEvaluator extends AbstractConvertFunctio
     Releasables.closeExpectNoException(datetime);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += datetime.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDatetimeEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromDatetimeEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromDatetimeEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator datetime;
 
   public ToStringFromDatetimeEvaluator(Source source, EvalOperator.ExpressionEvaluator datetime,
@@ -100,6 +103,13 @@ public final class ToStringFromDatetimeEvaluator extends AbstractConvertFunction
     Releasables.closeExpectNoException(datetime);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += datetime.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromDoubleEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.DoubleBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromDoubleEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromDoubleEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator dbl;
 
   public ToStringFromDoubleEvaluator(Source source, EvalOperator.ExpressionEvaluator dbl,
@@ -100,6 +103,13 @@ public final class ToStringFromDoubleEvaluator extends AbstractConvertFunction.A
     Releasables.closeExpectNoException(dbl);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += dbl.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoPointEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromGeoPointEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromGeoPointEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator wkb;
 
   public ToStringFromGeoPointEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb,
@@ -120,6 +123,13 @@ public final class ToStringFromGeoPointEvaluator extends AbstractConvertFunction
     Releasables.closeExpectNoException(wkb);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += wkb.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromGeoShapeEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromGeoShapeEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromGeoShapeEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator wkb;
 
   public ToStringFromGeoShapeEvaluator(Source source, EvalOperator.ExpressionEvaluator wkb,
@@ -120,6 +123,13 @@ public final class ToStringFromGeoShapeEvaluator extends AbstractConvertFunction
     Releasables.closeExpectNoException(wkb);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += wkb.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIPEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromIPEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromIPEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator ip;
 
   public ToStringFromIPEvaluator(Source source, EvalOperator.ExpressionEvaluator ip,
@@ -120,6 +123,13 @@ public final class ToStringFromIPEvaluator extends AbstractConvertFunction.Abstr
     Releasables.closeExpectNoException(ip);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += ip.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromIntEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.IntBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromIntEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromIntEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator integer;
 
   public ToStringFromIntEvaluator(Source source, EvalOperator.ExpressionEvaluator integer,
@@ -100,6 +103,13 @@ public final class ToStringFromIntEvaluator extends AbstractConvertFunction.Abst
     Releasables.closeExpectNoException(integer);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += integer.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromLongEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator lng;
 
   public ToStringFromLongEvaluator(Source source, EvalOperator.ExpressionEvaluator lng,
@@ -100,6 +103,13 @@ public final class ToStringFromLongEvaluator extends AbstractConvertFunction.Abs
     Releasables.closeExpectNoException(lng);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += lng.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromUnsignedLongEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.LongBlock;
@@ -22,6 +23,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromUnsignedLongEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromUnsignedLongEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator lng;
 
   public ToStringFromUnsignedLongEvaluator(Source source, EvalOperator.ExpressionEvaluator lng,
@@ -100,6 +103,13 @@ public final class ToStringFromUnsignedLongEvaluator extends AbstractConvertFunc
     Releasables.closeExpectNoException(lng);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += lng.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToStringFromVersionEvaluator.java

@@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 import java.lang.Override;
 import java.lang.String;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BytesRefBlock;
 import org.elasticsearch.compute.data.BytesRefVector;
@@ -23,6 +24,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToStringFromVersionEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToStringFromVersionEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator version;
 
   public ToStringFromVersionEvaluator(Source source, EvalOperator.ExpressionEvaluator version,
@@ -120,6 +123,13 @@ public final class ToStringFromVersionEvaluator extends AbstractConvertFunction.
     Releasables.closeExpectNoException(version);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += version.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

+ 10 - 0
x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToUnsignedLongFromBooleanEvaluator.java

@@ -6,6 +6,7 @@ package org.elasticsearch.xpack.esql.expression.function.scalar.convert;
 
 import java.lang.Override;
 import java.lang.String;
+import org.apache.lucene.util.RamUsageEstimator;
 import org.elasticsearch.compute.data.Block;
 import org.elasticsearch.compute.data.BooleanBlock;
 import org.elasticsearch.compute.data.BooleanVector;
@@ -21,6 +22,8 @@ import org.elasticsearch.xpack.esql.core.tree.Source;
  * This class is generated. Edit {@code ConvertEvaluatorImplementer} instead.
  */
 public final class ToUnsignedLongFromBooleanEvaluator extends AbstractConvertFunction.AbstractEvaluator {
+  private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(ToUnsignedLongFromBooleanEvaluator.class);
+
   private final EvalOperator.ExpressionEvaluator bool;
 
   public ToUnsignedLongFromBooleanEvaluator(Source source, EvalOperator.ExpressionEvaluator bool,
@@ -99,6 +102,13 @@ public final class ToUnsignedLongFromBooleanEvaluator extends AbstractConvertFun
     Releasables.closeExpectNoException(bool);
   }
 
+  @Override
+  public long baseRamBytesUsed() {
+    long baseRamBytesUsed = BASE_RAM_BYTES_USED;
+    baseRamBytesUsed += bool.baseRamBytesUsed();
+    return baseRamBytesUsed;
+  }
+
   public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
     private final Source source;
 

Some files were not shown because too many files changed in this diff