All Implemented Interfaces:
NamedWriteable, Writeable, PostAnalysisVerificationAware, PostOptimizationVerificationAware, TelemetryAware, Resolvable, ExecutesOn, SortAgnostic, SurrogateLogicalPlan

public class LookupJoin extends Join implements SurrogateLogicalPlan, TelemetryAware, PostAnalysisVerificationAware
Lookup join - specialized LEFT (OUTER) JOIN between the main left side and a lookup index (index_mode = lookup) on the right.
  • Constructor Details

  • Method Details

    • surrogate

      public LogicalPlan surrogate()
      Translate the expression into a regular join with a Projection on top, to deal with serialization & co.
      Specified by:
      surrogate in interface SurrogateLogicalPlan
    • replaceChildren

      public Join replaceChildren(LogicalPlan left, LogicalPlan right)
      Overrides:
      replaceChildren in class Join
    • info

      protected NodeInfo<Join> info()
      Overrides:
      info in class Join
    • telemetryLabel

      public String telemetryLabel()
      Specified by:
      telemetryLabel in interface TelemetryAware
      Returns:
      the label reported in the telemetry data. Only needs to be overwritten if the label doesn't match the class name.
    • postAnalysisVerification

      public void postAnalysisVerification(Failures failures)
      Description copied from interface: PostAnalysisVerificationAware
      Allows the implementer to validate itself. This usually involves checking its internal setup, which often means checking the parameters it received on construction: their data or syntactic type, class, their count, expressions' structure etc. The discovered failures are added to the given Failures object.

      It is often more useful to perform the checks as extended as it makes sense, over stopping at the first failure. This will allow the author to progress faster to a correct query.

      Example: the Filter class, which models the WHERE command, checks that the expression it filters on - condition - is of a Boolean or NULL type:

           
           @Override
           void postAnalysisVerification(Failures failures) {
                if (condition.dataType() != NULL && condition.dataType() != BOOLEAN) {
                    failures.add(fail(condition, "Condition expression needs to be boolean, found [{}]", condition.dataType()));
                }
           }
           
           
      Specified by:
      postAnalysisVerification in interface PostAnalysisVerificationAware
      Overrides:
      postAnalysisVerification in class Join
      Parameters:
      failures - the object to add failures to.