sealed abstract class Operation extends AnyRef
An operation that can be performed on a Delta table.
- Alphabetic
- By Inheritance
- Operation
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
checkAddFileWithDeletionVectorStatsAreNotTightBounds: Boolean
A transaction that commits AddFile actions with deletionVector should have column stats that are not tight bounds.
A transaction that commits AddFile actions with deletionVector should have column stats that are not tight bounds. An exception to this is ComputeStats operation, which recomputes stats on these files, and the new stats are tight bounds. Some other operations that merely take an existing AddFile action and commit a copy of it, not changing the deletionVector or stats, can then also recommit AddFile with deletionVector and tight bound stats that were recomputed before.
An operation for which this can happen, and there is no way that it could be committing new deletion vectors, should set this to false to bypass this check. All other operations should set this to true, so that this is validated during commit.
This is abstract to force the implementers of all operations to think about this setting. All operations should add a comment justifying this setting. Any operation that sets this to false should add a test in TightBoundsSuite.
-
abstract
def
isInPlaceFileMetadataUpdate: Option[Boolean]
Whether the transaction is updating metadata of existing files.
Whether the transaction is updating metadata of existing files.
The Delta protocol allows committing AddFile actions for files that already exist on the latest version of the table, without committing corresponding RemoveFile actions. This is used to update the metadata of existing files, e.g. to recompute statistics or add tags.
Such operations need special handling during conflict checking, especially against no-data-change transactions, because the read/delete conflict can be resolved with read-file-remapping and because there is no RemoveFile action to trigger a delete/delete conflict. In case you are adding such operation, make sure to include a test for conflicts with business *and* no-data-change transactions, e.g. optimize.
- abstract def parameters: Map[String, Any]
Concrete 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
changesData: Boolean
Whether this operation changes data
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- lazy val jsonEncodedValues: Map[String, String]
- val name: String
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- val operationMetrics: Set[String]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
transformDeletionVectorMetrics(allMetrics: Map[String, SQLMetric], dvMetrics: Map[String, MetricsTransformer] = ...): Map[String, String]
Manually transform the deletion vector metrics, because they are not part of
operationMetricsand are filtered out by the super.transformMetrics() call. - def transformMetrics(metrics: Map[String, SQLMetric]): Map[String, String]
- val userMetadata: Option[String]
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()