Interface TableOperations

All Known Implementing Classes:
BaseMetastoreTableOperations, BaseTransaction.TransactionTableOperations, EcsTableOperations, HadoopTableOperations, HiveTableOperations, NessieTableOperations, StaticTableOperations

public interface TableOperations
SPI interface to abstract table metadata access and updates.
  • Method Details

    • current

      TableMetadata current()
      Return the currently loaded table metadata, without checking for updates.
      Returns:
      table metadata
    • refresh

      TableMetadata refresh()
      Return the current table metadata after checking for updates.
      Returns:
      table metadata
    • commit

      void commit(TableMetadata base, TableMetadata metadata)
      Replace the base table metadata with a new version.

      This method should implement and document atomicity guarantees.

      Implementations must check that the base metadata is current to avoid overwriting updates. Once the atomic commit operation succeeds, implementations must not perform any operations that may fail because failure in this method cannot be distinguished from commit failure.

      Implementations must throw a CommitStateUnknownException in cases where it cannot be determined if the commit succeeded or failed. For example if a network partition causes the confirmation of the commit to be lost, the implementation should throw a CommitStateUnknownException. This is important because downstream users of this API need to know whether they can clean up the commit or not, if the state is unknown then it is not safe to remove any files. All other exceptions will be treated as if the commit has failed.

      Parameters:
      base - table metadata on which changes were based
      metadata - new table metadata with updates
    • io

      FileIO io()
      Returns a FileIO to read and write table data and metadata files.
    • encryption

      default EncryptionManager encryption()
      Returns a EncryptionManager to encrypt and decrypt data files.
    • metadataFileLocation

      String metadataFileLocation(String fileName)
      Given the name of a metadata file, obtain the full path of that file using an appropriate base location of the implementation's choosing.

      The file may not exist yet, in which case the path should be returned as if it were to be created by e.g. FileIO.newOutputFile(String).

    • locationProvider

      LocationProvider locationProvider()
      Returns a LocationProvider that supplies locations for new new data files.
      Returns:
      a location provider configured for the current table state
    • temp

      default TableOperations temp(TableMetadata uncommittedMetadata)
      Return a temporary TableOperations instance that uses configuration from uncommitted metadata.

      This is called by transactions when uncommitted table metadata should be used; for example, to create a metadata file location based on metadata in the transaction that has not been committed.

      Transactions will not call refresh() or commit(TableMetadata, TableMetadata).

      Parameters:
      uncommittedMetadata - uncommitted table metadata
      Returns:
      a temporary table operations that behaves like the uncommitted metadata is current
    • newSnapshotId

      default long newSnapshotId()
      Create a new ID for a Snapshot
      Returns:
      a long snapshot ID
    • requireStrictCleanup

      default boolean requireStrictCleanup()
      Whether to clean up uncommitted metadata files only when a commit fails with a CleanableFailure exception.

      This defaults to true: cleanup will only occur for exceptions marked as CleanableFailure