Class InvalidRelException

All Implemented Interfaces:

public class InvalidRelException extends Exception
Exception that indicates that a relational expression would be invalid with given parameters.

This exception is thrown by the constructor of a subclass of RelNode when given parameters it cannot accept. For example, EnumerableJoinRel can only implement equi-joins, so its constructor throws InvalidRelException when given the condition input0.x - input1.y = 2.

Because the exception is checked (i.e. extends Exception but not RuntimeException), constructors that throw this exception will declare this exception in their throws clause, and rules that create those relational expressions will need to handle it. Usually a rule will not take the exception personally, and will fail to match. The burden of checking is removed from the rule, which means less code for the author of the rule to maintain.

The caller that receives an InvalidRelException (typically a rule attempting to create a relational expression) should log it at the DEBUG level.

See Also:
  • Constructor Details

    • InvalidRelException

      public InvalidRelException(String message)
      Creates an InvalidRelException.
    • InvalidRelException

      public InvalidRelException(String message, Throwable cause)
      Creates an InvalidRelException with a cause.