case class MergeIntoCommand(source: LogicalPlan, target: LogicalPlan, targetFileIndex: TahoeFileIndex, condition: Expression, matchedClauses: Seq[DeltaMergeIntoMatchedClause], notMatchedClause: Option[DeltaMergeIntoInsertClause], migratedSchema: Option[StructType]) extends LogicalPlan with RunnableCommand with DeltaCommand with PredicateHelper with AnalysisHelper with ImplicitMetadataOperation with Product with Serializable

Performs a merge of a source query/table into a Delta table.

Issues an error message when the ON search_condition of the MERGE statement can match a single row from the target table with multiple rows of the source table-reference.

Algorithm:

Phase 1: Find the input files in target that are touched by the rows that satisfy the condition and verify that no two source rows match with the same target row. This is implemented as an inner-join using the given condition. See findTouchedFiles for more details.

Phase 2: Read the touched files again and write new files with updated and/or inserted rows.

Phase 3: Use the Delta protocol to atomically remove the touched files and add the new files.

source

Source data to merge from

target

Target table to merge into

targetFileIndex

TahoeFileIndex of the target table

condition

Condition for a source row to match with a target row

matchedClauses

All info related to matched clauses.

notMatchedClause

All info related to not matched clause.

migratedSchema

The final schema of the target - may be changed by schema evolution.

Linear Supertypes
Serializable, Serializable, ImplicitMetadataOperation, AnalysisHelper, PredicateHelper, DeltaCommand, DeltaLogging, DatabricksLogging, DeltaProgressReporter, RunnableCommand, Command, LogicalPlan, Logging, QueryPlanConstraints, ConstraintHelper, LogicalPlanStats, AnalysisHelper, QueryPlan[LogicalPlan], TreeNode[LogicalPlan], Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MergeIntoCommand
  2. Serializable
  3. Serializable
  4. ImplicitMetadataOperation
  5. AnalysisHelper
  6. PredicateHelper
  7. DeltaCommand
  8. DeltaLogging
  9. DatabricksLogging
  10. DeltaProgressReporter
  11. RunnableCommand
  12. Command
  13. LogicalPlan
  14. Logging
  15. QueryPlanConstraints
  16. ConstraintHelper
  17. LogicalPlanStats
  18. AnalysisHelper
  19. QueryPlan
  20. TreeNode
  21. Product
  22. Equals
  23. AnyRef
  24. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new MergeIntoCommand(source: LogicalPlan, target: LogicalPlan, targetFileIndex: TahoeFileIndex, condition: Expression, matchedClauses: Seq[DeltaMergeIntoMatchedClause], notMatchedClause: Option[DeltaMergeIntoInsertClause], migratedSchema: Option[StructType])

    source

    Source data to merge from

    target

    Target table to merge into

    targetFileIndex

    TahoeFileIndex of the target table

    condition

    Condition for a source row to match with a target row

    matchedClauses

    All info related to matched clauses.

    notMatchedClause

    All info related to not matched clause.

    migratedSchema

    The final schema of the target - may be changed by schema evolution.

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. lazy val allAttributes: AttributeSeq
    Definition Classes
    QueryPlan
  5. def analyzed: Boolean
    Definition Classes
    AnalysisHelper
  6. def apply(number: Int): TreeNode[_]
    Definition Classes
    TreeNode
  7. def argString: String
    Definition Classes
    TreeNode
  8. def asCode: String
    Definition Classes
    TreeNode
  9. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  10. def assertNotAnalysisRule(): Unit
    Attributes
    protected
    Definition Classes
    AnalysisHelper
  11. def buildBaseRelation(spark: SparkSession, txn: OptimisticTransaction, actionType: String, rootPath: Path, inputLeafFiles: Seq[String], nameToAddFileMap: Map[String, AddFile]): HadoopFsRelation

    Build a base relation of files that need to be rewritten as part of an update/delete/merge operation.

    Build a base relation of files that need to be rewritten as part of an update/delete/merge operation.

    Attributes
    protected
    Definition Classes
    DeltaCommand
  12. def canEvaluate(expr: Expression, plan: LogicalPlan): Boolean
    Attributes
    protected
    Definition Classes
    PredicateHelper
  13. def canEvaluateWithinJoin(expr: Expression): Boolean
    Attributes
    protected
    Definition Classes
    PredicateHelper
  14. val canMergeSchema: Boolean
  15. val canOverwriteSchema: Boolean
  16. final lazy val canonicalized: LogicalPlan
    Definition Classes
    QueryPlan
    Annotations
    @transient()
  17. def children: Seq[LogicalPlan]
    Definition Classes
    Command → TreeNode
  18. def childrenResolved: Boolean
    Definition Classes
    LogicalPlan
  19. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  20. def collect[B](pf: PartialFunction[LogicalPlan, B]): Seq[B]
    Definition Classes
    TreeNode
  21. def collectFirst[B](pf: PartialFunction[LogicalPlan, B]): Option[B]
    Definition Classes
    TreeNode
  22. def collectLeaves(): Seq[LogicalPlan]
    Definition Classes
    TreeNode
  23. val condition: Expression
  24. def conf: SQLConf
    Definition Classes
    QueryPlan
  25. lazy val constraints: ExpressionSet
    Definition Classes
    QueryPlanConstraints
  26. def constructIsNotNullConstraints(constraints: Set[Expression], output: Seq[Attribute]): Set[Expression]
    Definition Classes
    ConstraintHelper
  27. lazy val containsChild: Set[TreeNode[_]]
    Definition Classes
    TreeNode
  28. lazy val deleteClause: Option[DeltaMergeIntoDeleteClause]
  29. def doCanonicalize(): LogicalPlan
    Attributes
    protected
    Definition Classes
    QueryPlan
  30. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  31. final def expressions: Seq[Expression]
    Definition Classes
    QueryPlan
  32. def fastEquals(other: TreeNode[_]): Boolean
    Definition Classes
    TreeNode
  33. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  34. def find(f: (LogicalPlan) ⇒ Boolean): Option[LogicalPlan]
    Definition Classes
    TreeNode
  35. def flatMap[A](f: (LogicalPlan) ⇒ TraversableOnce[A]): Seq[A]
    Definition Classes
    TreeNode
  36. def foreach(f: (LogicalPlan) ⇒ Unit): Unit
    Definition Classes
    TreeNode
  37. def foreachUp(f: (LogicalPlan) ⇒ Unit): Unit
    Definition Classes
    TreeNode
  38. def generateCandidateFileMap(basePath: Path, candidateFiles: Seq[AddFile]): Map[String, AddFile]

    Generates a map of file names to add file entries for operations where we will need to rewrite files such as delete, merge, update.

    Generates a map of file names to add file entries for operations where we will need to rewrite files such as delete, merge, update. We expect file names to be unique, because each file contains a UUID.

    Attributes
    protected
    Definition Classes
    DeltaCommand
  39. def generateTreeString(depth: Int, lastChildren: Seq[Boolean], builder: StringBuilder, verbose: Boolean, prefix: String, addSuffix: Boolean): StringBuilder
    Definition Classes
    TreeNode
  40. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  41. def getTouchedFile(basePath: Path, filePath: String, nameToAddFileMap: Map[String, AddFile]): AddFile

    Find the AddFile record corresponding to the file that was read as part of a delete/update/merge operation.

    Find the AddFile record corresponding to the file that was read as part of a delete/update/merge operation.

    filePath

    The path to a file. Can be either absolute or relative

    nameToAddFileMap

    Map generated through generateCandidateFileMap()

    Attributes
    protected
    Definition Classes
    DeltaCommand
  42. def hashCode(): Int
    Definition Classes
    TreeNode → AnyRef → Any
  43. def inferAdditionalConstraints(constraints: Set[Expression]): Set[Expression]
    Definition Classes
    ConstraintHelper
  44. def initializeLogIfNecessary(isInterpreter: Boolean, silent: Boolean): Boolean
    Attributes
    protected
    Definition Classes
    Logging
  45. def initializeLogIfNecessary(isInterpreter: Boolean): Unit
    Attributes
    protected
    Definition Classes
    Logging
  46. def innerChildren: Seq[QueryPlan[_]]
    Attributes
    protected
    Definition Classes
    QueryPlan → TreeNode
  47. def inputSet: AttributeSet
    Definition Classes
    QueryPlan
  48. final def invalidateStatsCache(): Unit
    Definition Classes
    LogicalPlanStats
  49. def isCanonicalizedPlan: Boolean
    Attributes
    protected
    Definition Classes
    QueryPlan
  50. def isCatalogTable(analyzer: Analyzer, tableIdent: TableIdentifier): Boolean

    Use the analyzer to see whether the provided TableIdentifier is for a path based table or not

    Use the analyzer to see whether the provided TableIdentifier is for a path based table or not

    analyzer

    The session state analyzer to call

    tableIdent

    Table Identifier to determine whether is path based or not

    returns

    Boolean where true means that the table is a table in a metastore and false means the table is a path based table

    Definition Classes
    DeltaCommand
  51. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  52. def isPathIdentifier(tableIdent: TableIdentifier): Boolean

    Checks if the given identifier can be for a delta table's path

    Checks if the given identifier can be for a delta table's path

    tableIdent

    Table Identifier for which to check

    Attributes
    protected
    Definition Classes
    DeltaCommand
  53. def isStreaming: Boolean
    Definition Classes
    LogicalPlan
  54. def isTraceEnabled(): Boolean
    Attributes
    protected
    Definition Classes
    Logging
  55. def jsonFields: List[JField]
    Attributes
    protected
    Definition Classes
    TreeNode
  56. def log: Logger
    Attributes
    protected
    Definition Classes
    Logging
  57. def logConsole(line: String): Unit
    Definition Classes
    DatabricksLogging
  58. def logDebug(msg: ⇒ String, throwable: Throwable): Unit
    Attributes
    protected
    Definition Classes
    Logging
  59. def logDebug(msg: ⇒ String): Unit
    Attributes
    protected
    Definition Classes
    Logging
  60. def logError(msg: ⇒ String, throwable: Throwable): Unit
    Attributes
    protected
    Definition Classes
    Logging
  61. def logError(msg: ⇒ String): Unit
    Attributes
    protected
    Definition Classes
    Logging
  62. def logInfo(msg: ⇒ String, throwable: Throwable): Unit
    Attributes
    protected
    Definition Classes
    Logging
  63. def logInfo(msg: ⇒ String): Unit
    Attributes
    protected
    Definition Classes
    Logging
  64. def logName: String
    Attributes
    protected
    Definition Classes
    Logging
  65. def logTrace(msg: ⇒ String, throwable: Throwable): Unit
    Attributes
    protected
    Definition Classes
    Logging
  66. def logTrace(msg: ⇒ String): Unit
    Attributes
    protected
    Definition Classes
    Logging
  67. def logWarning(msg: ⇒ String, throwable: Throwable): Unit
    Attributes
    protected
    Definition Classes
    Logging
  68. def logWarning(msg: ⇒ String): Unit
    Attributes
    protected
    Definition Classes
    Logging
  69. def makeCopy(newArgs: Array[AnyRef]): LogicalPlan
    Definition Classes
    TreeNode
  70. def map[A](f: (LogicalPlan) ⇒ A): Seq[A]
    Definition Classes
    TreeNode
  71. def mapChildren(f: (LogicalPlan) ⇒ LogicalPlan): LogicalPlan
    Definition Classes
    TreeNode
  72. def mapExpressions(f: (Expression) ⇒ Expression): MergeIntoCommand.this.type
    Definition Classes
    QueryPlan
  73. def mapProductIterator[B](f: (Any) ⇒ B)(implicit arg0: ClassTag[B]): Array[B]
    Attributes
    protected
    Definition Classes
    TreeNode
  74. val matchedClauses: Seq[DeltaMergeIntoMatchedClause]
  75. def maxRows: Option[Long]
    Definition Classes
    LogicalPlan
  76. def maxRowsPerPartition: Option[Long]
    Definition Classes
    LogicalPlan
  77. lazy val metrics: Map[String, SQLMetric]
    Definition Classes
    MergeIntoCommand → RunnableCommand
  78. val migratedSchema: Option[StructType]
  79. def missingInput: AttributeSet
    Definition Classes
    QueryPlan
  80. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  81. def nodeName: String
    Definition Classes
    TreeNode
  82. val notMatchedClause: Option[DeltaMergeIntoInsertClause]
  83. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  84. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  85. def numberedTreeString: String
    Definition Classes
    TreeNode
  86. val origin: Origin
    Definition Classes
    TreeNode
  87. def otherCopyArgs: Seq[AnyRef]
    Attributes
    protected
    Definition Classes
    TreeNode
  88. def output: Seq[Attribute]
    Definition Classes
    Command → QueryPlan
  89. def outputOrdering: Seq[SortOrder]
    Definition Classes
    LogicalPlan
  90. def outputSet: AttributeSet
    Definition Classes
    QueryPlan
  91. def p(number: Int): LogicalPlan
    Definition Classes
    TreeNode
  92. def parsePartitionPredicates(spark: SparkSession, predicate: String): Seq[Expression]

    Converts string predicates into Expressions relative to a transaction.

    Converts string predicates into Expressions relative to a transaction.

    Attributes
    protected
    Definition Classes
    DeltaCommand
    Exceptions thrown

    AnalysisException if a non-partition column is referenced.

  93. def prettyJson: String
    Definition Classes
    TreeNode
  94. def printSchema(): Unit
    Definition Classes
    QueryPlan
  95. def producedAttributes: AttributeSet
    Definition Classes
    QueryPlan
  96. def recordDeltaEvent(deltaLog: DeltaLog, opType: String, tags: Map[TagDefinition, String] = Map.empty, data: AnyRef = null): Unit

    Used to record the occurrence of a single event or report detailed, operation specific statistics.

    Used to record the occurrence of a single event or report detailed, operation specific statistics.

    Attributes
    protected
    Definition Classes
    DeltaLogging
  97. def recordDeltaOperation[A](deltaLog: DeltaLog, opType: String, tags: Map[TagDefinition, String] = Map.empty)(thunk: ⇒ A): A

    Used to report the duration as well as the success or failure of an operation.

    Used to report the duration as well as the success or failure of an operation.

    Attributes
    protected
    Definition Classes
    DeltaLogging
  98. def recordEvent(metric: MetricDefinition, additionalTags: Map[TagDefinition, String] = Map.empty, blob: String = null, trimBlob: Boolean = true): Unit
    Definition Classes
    DatabricksLogging
  99. def recordOperation[S](opType: OpType, opTarget: String = null, extraTags: Map[TagDefinition, String], isSynchronous: Boolean = true, alwaysRecordStats: Boolean = false, allowAuthTags: Boolean = false, killJvmIfStuck: Boolean = false, outputMetric: MetricDefinition = null, silent: Boolean = true)(thunk: ⇒ S): S
    Definition Classes
    DatabricksLogging
  100. def recordUsage(metric: MetricDefinition, quantity: Double, additionalTags: Map[TagDefinition, String] = Map.empty, blob: String = null, forceSample: Boolean = false, trimBlob: Boolean = true, silent: Boolean = false): Unit
    Definition Classes
    DatabricksLogging
  101. def references: AttributeSet
    Definition Classes
    QueryPlan
  102. def refresh(): Unit
    Definition Classes
    LogicalPlan
  103. def removeFilesFromPaths(deltaLog: DeltaLog, nameToAddFileMap: Map[String, AddFile], filesToRewrite: Seq[String], operationTimestamp: Long): Seq[RemoveFile]

    This method provides the RemoveFile actions that are necessary for files that are touched and need to be rewritten in methods like Delete, Update, and Merge.

    This method provides the RemoveFile actions that are necessary for files that are touched and need to be rewritten in methods like Delete, Update, and Merge.

    deltaLog

    The DeltaLog of the table that is being operated on

    nameToAddFileMap

    A map generated using generateCandidateFileMap.

    filesToRewrite

    Absolute paths of the files that were touched. We will search for these in candidateFiles. Obtained as the output of the input_file_name function.

    operationTimestamp

    The timestamp of the operation

    Attributes
    protected
    Definition Classes
    DeltaCommand
  104. def repartitionIfNeeded(spark: SparkSession, df: DataFrame, partitionColumns: Seq[String]): DataFrame

    Repartitions the output DataFrame by the partition columns if table is partitioned and merge.repartitionBeforeWrite.enabled is set to true.

    Repartitions the output DataFrame by the partition columns if table is partitioned and merge.repartitionBeforeWrite.enabled is set to true.

    Attributes
    protected
  105. def replaceAlias(condition: Expression, aliases: AttributeMap[Expression]): Expression
    Attributes
    protected
    Definition Classes
    PredicateHelper
  106. def resolve(nameParts: Seq[String], resolver: Resolver): Option[NamedExpression]
    Definition Classes
    LogicalPlan
  107. def resolve(schema: StructType, resolver: Resolver): Seq[Attribute]
    Definition Classes
    LogicalPlan
  108. def resolveChildren(nameParts: Seq[String], resolver: Resolver): Option[NamedExpression]
    Definition Classes
    LogicalPlan
  109. def resolveExpressions(r: PartialFunction[Expression, Expression]): LogicalPlan
    Definition Classes
    AnalysisHelper
  110. def resolveIdentifier(analyzer: Analyzer, identifier: TableIdentifier): LogicalPlan

    Use the analyzer to resolve the identifier provided

    Use the analyzer to resolve the identifier provided

    analyzer

    The session state analyzer to call

    identifier

    Table Identifier to determine whether is path based or not

    Attributes
    protected
    Definition Classes
    DeltaCommand
  111. def resolveOperators(rule: PartialFunction[LogicalPlan, LogicalPlan]): LogicalPlan
    Definition Classes
    AnalysisHelper
  112. def resolveOperatorsDown(rule: PartialFunction[LogicalPlan, LogicalPlan]): LogicalPlan
    Definition Classes
    AnalysisHelper
  113. def resolveOperatorsUp(rule: PartialFunction[LogicalPlan, LogicalPlan]): LogicalPlan
    Definition Classes
    AnalysisHelper
  114. def resolveQuoted(name: String, resolver: Resolver): Option[NamedExpression]
    Definition Classes
    LogicalPlan
  115. lazy val resolved: Boolean
    Definition Classes
    LogicalPlan
  116. def run(spark: SparkSession): Seq[Row]
    Definition Classes
    MergeIntoCommand → RunnableCommand
  117. final def sameResult(other: LogicalPlan): Boolean
    Definition Classes
    QueryPlan
  118. lazy val schema: StructType
    Definition Classes
    QueryPlan
  119. def schemaString: String
    Definition Classes
    QueryPlan
  120. final def semanticHash(): Int
    Definition Classes
    QueryPlan
  121. def simpleString: String
    Definition Classes
    QueryPlan → TreeNode
  122. val source: LogicalPlan
  123. def splitConjunctivePredicates(condition: Expression): Seq[Expression]
    Attributes
    protected
    Definition Classes
    PredicateHelper
  124. def splitDisjunctivePredicates(condition: Expression): Seq[Expression]
    Attributes
    protected
    Definition Classes
    PredicateHelper
  125. def statePrefix: String
    Attributes
    protected
    Definition Classes
    LogicalPlan → QueryPlan
  126. def stats: Statistics
    Definition Classes
    LogicalPlanStats
  127. val statsCache: Option[Statistics]
    Attributes
    protected
    Definition Classes
    LogicalPlanStats
  128. def stringArgs: Iterator[Any]
    Attributes
    protected
    Definition Classes
    TreeNode
  129. def subqueries: Seq[LogicalPlan]
    Definition Classes
    QueryPlan
  130. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  131. val target: LogicalPlan
  132. val targetFileIndex: TahoeFileIndex
  133. def toJSON: String
    Definition Classes
    TreeNode
  134. def toString(): String
    Definition Classes
    TreeNode → AnyRef → Any
  135. def transform(rule: PartialFunction[LogicalPlan, LogicalPlan]): LogicalPlan
    Definition Classes
    TreeNode
  136. def transformAllExpressions(rule: PartialFunction[Expression, Expression]): MergeIntoCommand.this.type
    Definition Classes
    AnalysisHelper → QueryPlan
  137. def transformDown(rule: PartialFunction[LogicalPlan, LogicalPlan]): LogicalPlan
    Definition Classes
    AnalysisHelper → TreeNode
  138. def transformExpressions(rule: PartialFunction[Expression, Expression]): MergeIntoCommand.this.type
    Definition Classes
    QueryPlan
  139. def transformExpressionsDown(rule: PartialFunction[Expression, Expression]): MergeIntoCommand.this.type
    Definition Classes
    QueryPlan
  140. def transformExpressionsUp(rule: PartialFunction[Expression, Expression]): MergeIntoCommand.this.type
    Definition Classes
    QueryPlan
  141. def transformUp(rule: PartialFunction[LogicalPlan, LogicalPlan]): LogicalPlan
    Definition Classes
    AnalysisHelper → TreeNode
  142. def treeString(verbose: Boolean, addSuffix: Boolean): String
    Definition Classes
    TreeNode
  143. def treeString: String
    Definition Classes
    TreeNode
  144. def tryResolveReferences(sparkSession: SparkSession)(expr: Expression, planContainingExpr: LogicalPlan): Expression
    Attributes
    protected
    Definition Classes
    AnalysisHelper
  145. lazy val updateClause: Option[DeltaMergeIntoUpdateClause]
  146. final def updateMetadata(spark: SparkSession, txn: OptimisticTransaction, schema: StructType, partitionColumns: Seq[String], configuration: Map[String, String], isOverwriteMode: Boolean, rearrangeOnly: Boolean): Unit
    Attributes
    protected
    Definition Classes
    ImplicitMetadataOperation
  147. final def updateMetadata(txn: OptimisticTransaction, data: Dataset[_], partitionColumns: Seq[String], configuration: Map[String, String], isOverwriteMode: Boolean, rearrangeOnly: Boolean = false): Unit
    Attributes
    protected
    Definition Classes
    ImplicitMetadataOperation
  148. def validConstraints: Set[Expression]
    Attributes
    protected
    Definition Classes
    QueryPlanConstraints
  149. def verboseString: String
    Definition Classes
    QueryPlan → TreeNode
  150. def verboseStringWithSuffix: String
    Definition Classes
    LogicalPlan → TreeNode
  151. def verifyPartitionPredicates(spark: SparkSession, partitionColumns: Seq[String], predicates: Seq[Expression]): Unit
    Attributes
    protected
    Definition Classes
    DeltaCommand
  152. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  153. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  154. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  155. def withNewChildren(newChildren: Seq[LogicalPlan]): LogicalPlan
    Definition Classes
    TreeNode
  156. def withStatusCode[T](statusCode: String, defaultMessage: String, data: Map[String, Any] = Map.empty)(body: ⇒ T): T

    Report a log to indicate some command is running.

    Report a log to indicate some command is running.

    Definition Classes
    DeltaProgressReporter

Inherited from Serializable

Inherited from Serializable

Inherited from ImplicitMetadataOperation

Inherited from AnalysisHelper

Inherited from PredicateHelper

Inherited from DeltaCommand

Inherited from DeltaLogging

Inherited from DatabricksLogging

Inherited from DeltaProgressReporter

Inherited from RunnableCommand

Inherited from Command

Inherited from LogicalPlan

Inherited from Logging

Inherited from QueryPlanConstraints

Inherited from ConstraintHelper

Inherited from LogicalPlanStats

Inherited from AnalysisHelper

Inherited from QueryPlan[LogicalPlan]

Inherited from TreeNode[LogicalPlan]

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped