Packages

class FilterResolver extends TreeNodeResolver[Filter, LogicalPlan] with ResolvesNameByHiddenOutput with ValidatesFilter

Resolves Filter node and its condition.

Linear Supertypes
ValidatesFilter, ResolvesNameByHiddenOutput, TreeNodeResolver[Filter, LogicalPlan], QueryErrorsBase, DataTypeErrorsBase, SQLConfHelper, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FilterResolver
  2. ValidatesFilter
  3. ResolvesNameByHiddenOutput
  4. TreeNodeResolver
  5. QueryErrorsBase
  6. DataTypeErrorsBase
  7. SQLConfHelper
  8. AnyRef
  9. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new FilterResolver(resolver: Resolver, expressionResolver: ExpressionResolver)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
  6. def conf: SQLConf

    The active config object within the current scope.

    The active config object within the current scope. See SQLConf.get for more information.

    Definition Classes
    SQLConfHelper
  7. def deduplicateMissingExpressions(missingExpressions: Seq[NamedExpression]): Seq[NamedExpression]

    Deduplicates missing expressions by ExprId.

    Deduplicates missing expressions by ExprId.

    Definition Classes
    ResolvesNameByHiddenOutput
  8. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  9. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  10. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  11. def getQueryContext(context: QueryContext): Array[QueryContext]
    Definition Classes
    DataTypeErrorsBase
  12. def getSummary(sqlContext: QueryContext): String
    Definition Classes
    DataTypeErrorsBase
  13. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  14. def insertMissingExpressions(operator: LogicalPlan, missingExpressions: Seq[NamedExpression]): LogicalPlan

    Insert the missing expressions in the output list of the operator.

    Insert the missing expressions in the output list of the operator. Recursively call expandOperatorsOutputList to expand the output lists of Projects and Aggregates below the current one. In order to stay compatible with fixed-point, missing expressions are inserted after the original output list, but before any qualified access only columns that have been added as part of resolution from hidden output.

    Only AttributeReferences are propagated recursively in expandOperatorsOutputList. Aliases are meant to be inserted in the topmost operator. For example, SortResolver may push down aliased aggregate and grouping expression trees to the immediate Aggregate below, but it does not make sense to push them down further:

    -- The MAX(v2.col1) aggregate has to be pushed down to [[Aggregate]], but not to [[Project]]
    -- below it.
    SELECT COUNT(col1) FROM v1 NATURAL JOIN v2 GROUP BY col1 ORDER BY MAX(v2.col1);

    ->

    Project [count(col1)#23L]
    +- Sort [max(col1)#25 ASC NULLS FIRST], true
      +- Aggregate [col1#21], [count(col1#21) AS count(col1)#23L, max(col1#20) AS max(col1)#25]
        +- Project [col1#21, col1#20]
          ...
    Definition Classes
    ResolvesNameByHiddenOutput
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  19. def ordinalNumber(i: Int): String
    Definition Classes
    QueryErrorsBase
  20. def quoteByDefault(elem: String): String
    Attributes
    protected[sql]
    Definition Classes
    DataTypeErrorsBase
  21. def resolve(unresolvedFilter: Filter): LogicalPlan

    Resolve Filter by resolving its child and its condition.

    Resolve Filter by resolving its child and its condition. If an attribute that is used in the condition is not present in child's output, we need to try and find the attribute in hidden output. If found, update child's output and place a Project node on top of original Filter with the original output of a Filter's child.

    See ResolvesNameByHiddenOutput doc for more context.

    Definition Classes
    FilterResolver → TreeNodeResolver
  22. def retainOriginalOutput(operator: LogicalPlan, missingExpressions: Seq[NamedExpression], scopes: NameScopeStack): LogicalPlan

    If missingExpressions is not empty, output of an operator has been changed by insertMissingExpressions.

    If missingExpressions is not empty, output of an operator has been changed by insertMissingExpressions. Therefore, we need to restore the original output, by placing a Project on top of an original node, with original's node output. Additionally, we append all qualified access only columns from hidden output that were inserted as missing attributes, because they may be needed in upper operators (if not, they will be pruned away in PruneMetadataColumns). Other hidden attributes are thrown away, because we cannot reference them from the new Project (they are not outputted from below).

    If SQLConf.SINGLE_PASS_RESOLVER_PREVENT_USING_ALIASES_FROM_NON_DIRECT_CHILDREN is set to true, we need to overwrite the current scope and clear aggregateListAliases and baseAggregate. This is needed in order to prevent later replacement of Sort/Having expressions using semantically equal aliased expressions from non-direct children. For example, in the following query:

    SELECT col1 AS a FROM VALUES(1,2) GROUP BY col1, col2 HAVING col2 > 1 ORDER BY col1;

    With flag set to false, analyzed plan will be:

    Sort [a#3 ASC NULLS FIRST], true +- Project [a#3] +- Filter (col2#2 > 1) +- Aggregate [col1#1, col2#2], [col1#1 AS a#3, col2#2, col1#1] +- LocalRelation [col1#1, col2#2]

    Instead of using missing attribute col1#1 we can use its alias a#3 in the Sort and avoid adding an extra projection. This is because all of Sort, Project, Filter and Aggregate belong to the same NameScope since Project was artificially inserted.

    However, fixed-point can't handle this case properly and produces the following plan:

    Project [a#3] +- Sort [col1#1 ASC NULLS FIRST], true +- Project [a#3, col1#1] +- Filter (col2#2 > 1) +- Aggregate [col1#1, col2#2], [col1#1 AS a#3, col2#2, col1#1] +- LocalRelation [col1#1, col2#2]

    Therefore, we need to match this behavior of fixed-point in single-pass in order to avoid logical plan mismatches.

    Definition Classes
    ResolvesNameByHiddenOutput
  23. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  24. def toDSOption(option: String): String
    Definition Classes
    DataTypeErrorsBase
  25. def toSQLConf(conf: String): String
    Definition Classes
    DataTypeErrorsBase
  26. def toSQLConfVal(conf: String): String
    Definition Classes
    QueryErrorsBase
  27. def toSQLExpr(e: Expression): String
    Definition Classes
    QueryErrorsBase
  28. def toSQLId(parts: Seq[String]): String
    Definition Classes
    DataTypeErrorsBase
  29. def toSQLId(parts: String): String
    Definition Classes
    DataTypeErrorsBase
  30. def toSQLStmt(text: String): String
    Definition Classes
    DataTypeErrorsBase
  31. def toSQLType(t: AbstractDataType): String
    Definition Classes
    DataTypeErrorsBase
  32. def toSQLType(text: String): String
    Definition Classes
    DataTypeErrorsBase
  33. def toSQLValue(v: Any, t: DataType): String
    Definition Classes
    QueryErrorsBase
  34. def toSQLValue(value: Double): String
    Definition Classes
    DataTypeErrorsBase
  35. def toSQLValue(value: Float): String
    Definition Classes
    DataTypeErrorsBase
  36. def toSQLValue(value: Long): String
    Definition Classes
    DataTypeErrorsBase
  37. def toSQLValue(value: Int): String
    Definition Classes
    DataTypeErrorsBase
  38. def toSQLValue(value: Short): String
    Definition Classes
    DataTypeErrorsBase
  39. def toSQLValue(value: UTF8String): String
    Definition Classes
    DataTypeErrorsBase
  40. def toSQLValue(value: String): String
    Definition Classes
    DataTypeErrorsBase
  41. def toString(): String
    Definition Classes
    AnyRef → Any
  42. def validateFilter(invalidExpressions: Seq[Expression], unresolvedOperator: LogicalPlan, resolvedFilter: Filter): Unit

    Method used to validate Filter operator.

    Method used to validate Filter operator. Throws in the following cases:

    • If condition is invalid (based on UnsupportedExpressionInOperatorValidation.isExpressionInUnsupportedOperator check)
    • If the data type of the condition is not boolean.
    Definition Classes
    ValidatesFilter
  43. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  44. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  45. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  46. def withSQLConf[T](pairs: (String, String)*)(f: => T): T

    Sets all SQL configurations specified in pairs, calls f, and then restores all SQL configurations.

    Sets all SQL configurations specified in pairs, calls f, and then restores all SQL configurations.

    Attributes
    protected
    Definition Classes
    SQLConfHelper

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from ValidatesFilter

Inherited from QueryErrorsBase

Inherited from DataTypeErrorsBase

Inherited from SQLConfHelper

Inherited from AnyRef

Inherited from Any

Ungrouped