Class HashBuilderOperator

java.lang.Object
io.trino.operator.join.HashBuilderOperator
All Implemented Interfaces:
Operator, AutoCloseable

@ThreadSafe public class HashBuilderOperator extends Object implements Operator
  • Constructor Details

  • Method Details

    • getOperatorContext

      public OperatorContext getOperatorContext()
      Specified by:
      getOperatorContext in interface Operator
    • getState

      public HashBuilderOperator.State getState()
    • isBlocked

      public com.google.common.util.concurrent.ListenableFuture<Void> isBlocked()
      Description copied from interface: Operator
      Returns a future that will be completed when the operator becomes unblocked. If the operator is not blocked, this method should return NOT_BLOCKED.
      Specified by:
      isBlocked in interface Operator
    • needsInput

      public boolean needsInput()
      Description copied from interface: Operator
      Returns true if and only if this operator can accept an input page.
      Specified by:
      needsInput in interface Operator
    • addInput

      public void addInput(Page page)
      Description copied from interface: Operator
      Adds an input page to the operator. This method will only be called if needsInput() returns true.
      Specified by:
      addInput in interface Operator
    • startMemoryRevoke

      public com.google.common.util.concurrent.ListenableFuture<Void> startMemoryRevoke()
      Description copied from interface: Operator
      After calling this method operator should revoke all reserved revocable memory. As soon as memory is revoked returned future should be marked as done.

      Spawned threads cannot modify OperatorContext because it's not thread safe. For this purpose implement Operator.finishMemoryRevoke()

      Since memory revoking signal is delivered asynchronously to the Operator, implementation must gracefully handle the case when there no longer is any revocable memory allocated.

      After this method is called on Operator the Driver is disallowed to call most of processing methods on it (Operator.isBlocked()/Operator.needsInput()/Operator.addInput(Page)/Operator.getOutput()) until Operator.finishMemoryRevoke() is called. Operator.finish() is the only processing method that can be called during that time and Operator.close() remains callable at any time.

      Specified by:
      startMemoryRevoke in interface Operator
    • finishMemoryRevoke

      public void finishMemoryRevoke()
      Description copied from interface: Operator
      Clean up and release resources after completed memory revoking. Called by driver once future returned by startMemoryRevoke is completed.
      Specified by:
      finishMemoryRevoke in interface Operator
    • getOutput

      public Page getOutput()
      Description copied from interface: Operator
      Gets an output page from the operator. If no output data is currently available, return null.
      Specified by:
      getOutput in interface Operator
    • finish

      public void finish()
      Description copied from interface: Operator
      Notifies the operator that no more pages will be added and the operator should finish processing and flush results. This method will not be called if the Task is already failed or canceled.
      Specified by:
      finish in interface Operator
    • isFinished

      public boolean isFinished()
      Description copied from interface: Operator
      Is this operator completely finished processing and no more output pages will be produced.
      Specified by:
      isFinished in interface Operator
    • close

      public void close()
      Description copied from interface: Operator
      This method will always be called before releasing the Operator reference.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Operator