88package org .elasticsearch .xpack .esql .expression .function .scalar .multivalue ;
99
1010import org .apache .lucene .util .BytesRef ;
11+ import org .apache .lucene .util .RamUsageEstimator ;
1112import org .elasticsearch .common .io .stream .NamedWriteableRegistry ;
1213import org .elasticsearch .common .io .stream .StreamInput ;
1314import 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