class AttributeScopeStack extends AnyRef
The AttributeScopeStack is used to validate that the attribute which was encountered by the ExpressionResolutionValidator is in the current operator's visibility scope.
E.g. for the following SQL query:
SELECT a, a, a + col2 FROM (SELECT col1 as a, col2 FROM VALUES (1, 2));
Having the following logical plan:
Project [a#2, a#2, (a#2 + col2#1) AS (a + col2)#3] +- SubqueryAlias __auto_generated_subquery_name +- Project [col1#0 AS a#2, col2#1] +- LocalRelation [col1#0, col2#1]
The LocalRelation outputs attributes with IDs #0 and #1, which can be referenced by the lower
Project. This Project produces a new attribute ID #2 for an alias and retains the old
ID #1 for col2. The upper Project references a twice using the same ID #2 and produces a
new ID #3 for an alias of a + col2.
- Alphabetic
- By Inheritance
- AttributeScopeStack
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new AttributeScopeStack()
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- def contains(attribute: Attribute, isOuterReference: Boolean = false): Boolean
Check if the
attributeis present in this stack.Check if the
attributeis present in this stack. We check the current scope by default. IfisOuterReferenceis true, we check the first scope above our subquery root. - final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def overwriteCurrent(attributes: Seq[Attribute]): Unit
Overwrite current relevant scope with a sequence of attributes which is an output of some operator.
Overwrite current relevant scope with a sequence of attributes which is an output of some operator.
attributescan have duplicate IDs if the output of the operator contains multiple occurencies of the same attribute. - def popScope(): Unit
Pop current attribute scope.
- def pushScope(isSubqueryRoot: Boolean = false): Unit
Push a fresh attribute scope.
Push a fresh attribute scope. Used by Project and Aggregate validation code since those operators introduce a new scope with fresh expression IDs.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AttributeScopeStack → AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)