Skip to content

Commit 277249a

Browse files
committed
Add memory usage reporting to MvContains evaluators
ESQL: Track memory in evaluators (elastic#133392) got merged to main at the same as Add MV_CONTAINS function elastic#133099 which caused a compile-error and the merge was reverted. This commit addresses the compile-error.
1 parent 08cc9fa commit 277249a

File tree

1 file changed

+54
-0
lines changed
  • x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/multivalue

1 file changed

+54
-0
lines changed

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

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package org.elasticsearch.xpack.esql.expression.function.scalar.multivalue;
99

1010
import org.apache.lucene.util.BytesRef;
11+
import org.apache.lucene.util.RamUsageEstimator;
1112
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
1213
import org.elasticsearch.common.io.stream.StreamInput;
1314
import org.elasticsearch.compute.data.Block;
@@ -303,6 +304,7 @@ interface ValueExtractor<BlockType extends Block, Type> {
303304
}
304305

305306
private static final class MvContainsNullEvaluator implements ExpressionEvaluator.Factory {
307+
private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(MvContainsNullEvaluator.class);
306308
private final ExpressionEvaluator.Factory subsetFieldEvaluator;
307309

308310
private MvContainsNullEvaluator(ExpressionEvaluator.Factory subsetFieldEvaluator) {
@@ -322,6 +324,13 @@ public Block eval(Page page) {
322324
}
323325
}
324326

327+
@Override
328+
public long baseRamBytesUsed() {
329+
long baseRamBytesUsed = BASE_RAM_BYTES_USED;
330+
baseRamBytesUsed += subsetField.baseRamBytesUsed();
331+
return baseRamBytesUsed;
332+
}
333+
325334
@Override
326335
public void close() {
327336
Releasables.closeExpectNoException(subsetField);
@@ -351,6 +360,7 @@ public String toString() {
351360
* TODO extend code generation to handle this case
352361
*/
353362
public static class MvContainsBooleanEvaluator implements EvalOperator.ExpressionEvaluator {
363+
private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(MvContainsBooleanEvaluator.class);
354364
private final EvalOperator.ExpressionEvaluator field1;
355365
private final EvalOperator.ExpressionEvaluator field2;
356366
private final DriverContext driverContext;
@@ -393,6 +403,14 @@ public void close() {
393403
Releasables.closeExpectNoException(field1, field2);
394404
}
395405

406+
@Override
407+
public long baseRamBytesUsed() {
408+
long baseRamBytesUsed = BASE_RAM_BYTES_USED;
409+
baseRamBytesUsed += field1.baseRamBytesUsed();
410+
baseRamBytesUsed += field2.baseRamBytesUsed();
411+
return baseRamBytesUsed;
412+
}
413+
396414
public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
397415
private final Source source;
398416
private final EvalOperator.ExpressionEvaluator.Factory field1;
@@ -431,6 +449,7 @@ public String toString() {
431449
* TODO extend code generation to handle this case
432450
*/
433451
public static class MvContainsBytesRefEvaluator implements EvalOperator.ExpressionEvaluator {
452+
private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(MvContainsBytesRefEvaluator.class);
434453
private final EvalOperator.ExpressionEvaluator field1;
435454
private final EvalOperator.ExpressionEvaluator field2;
436455
private final DriverContext driverContext;
@@ -473,6 +492,14 @@ public void close() {
473492
Releasables.closeExpectNoException(field1, field2);
474493
}
475494

495+
@Override
496+
public long baseRamBytesUsed() {
497+
long baseRamBytesUsed = BASE_RAM_BYTES_USED;
498+
baseRamBytesUsed += field1.baseRamBytesUsed();
499+
baseRamBytesUsed += field2.baseRamBytesUsed();
500+
return baseRamBytesUsed;
501+
}
502+
476503
public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
477504
private final Source source;
478505
private final EvalOperator.ExpressionEvaluator.Factory field1;
@@ -511,6 +538,7 @@ public String toString() {
511538
* TODO extend code generation to handle this case
512539
*/
513540
public static class MvContainsDoubleEvaluator implements EvalOperator.ExpressionEvaluator {
541+
private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(MvContainsDoubleEvaluator.class);
514542
private final EvalOperator.ExpressionEvaluator field1;
515543
private final EvalOperator.ExpressionEvaluator field2;
516544
private final DriverContext driverContext;
@@ -553,6 +581,14 @@ public void close() {
553581
Releasables.closeExpectNoException(field1, field2);
554582
}
555583

584+
@Override
585+
public long baseRamBytesUsed() {
586+
long baseRamBytesUsed = BASE_RAM_BYTES_USED;
587+
baseRamBytesUsed += field1.baseRamBytesUsed();
588+
baseRamBytesUsed += field2.baseRamBytesUsed();
589+
return baseRamBytesUsed;
590+
}
591+
556592
public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
557593
private final Source source;
558594
private final EvalOperator.ExpressionEvaluator.Factory field1;
@@ -591,6 +627,7 @@ public String toString() {
591627
* TODO extend code generation to handle this case
592628
*/
593629
public static class MvContainsIntEvaluator implements EvalOperator.ExpressionEvaluator {
630+
private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(MvContainsIntEvaluator.class);
594631
private final EvalOperator.ExpressionEvaluator field1;
595632
private final EvalOperator.ExpressionEvaluator field2;
596633
private final DriverContext driverContext;
@@ -633,6 +670,14 @@ public void close() {
633670
Releasables.closeExpectNoException(field1, field2);
634671
}
635672

673+
@Override
674+
public long baseRamBytesUsed() {
675+
long baseRamBytesUsed = BASE_RAM_BYTES_USED;
676+
baseRamBytesUsed += field1.baseRamBytesUsed();
677+
baseRamBytesUsed += field2.baseRamBytesUsed();
678+
return baseRamBytesUsed;
679+
}
680+
636681
public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
637682
private final Source source;
638683
private final EvalOperator.ExpressionEvaluator.Factory field1;
@@ -671,6 +716,7 @@ public String toString() {
671716
* TODO extend code generation to handle this case
672717
*/
673718
public static class MvContainsLongEvaluator implements EvalOperator.ExpressionEvaluator {
719+
private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(MvContainsLongEvaluator.class);
674720
private final EvalOperator.ExpressionEvaluator field1;
675721
private final EvalOperator.ExpressionEvaluator field2;
676722
private final DriverContext driverContext;
@@ -713,6 +759,14 @@ public void close() {
713759
Releasables.closeExpectNoException(field1, field2);
714760
}
715761

762+
@Override
763+
public long baseRamBytesUsed() {
764+
long baseRamBytesUsed = BASE_RAM_BYTES_USED;
765+
baseRamBytesUsed += field1.baseRamBytesUsed();
766+
baseRamBytesUsed += field2.baseRamBytesUsed();
767+
return baseRamBytesUsed;
768+
}
769+
716770
public static class Factory implements EvalOperator.ExpressionEvaluator.Factory {
717771
private final Source source;
718772
private final EvalOperator.ExpressionEvaluator.Factory field1;

0 commit comments

Comments
 (0)