Class StaticTableOperations

  • All Implemented Interfaces:

    public class StaticTableOperations
    extends java.lang.Object
    implements TableOperations
    TableOperations implementation that provides access to metadata for a Table at some point in time, using a table metadata location. It will never refer to a different Metadata object than the one it was created with and cannot be used to create or delete files.
    • Constructor Detail

      • StaticTableOperations

        public StaticTableOperations​(java.lang.String metadataFileLocation,
                                     FileIO io)
        Creates a StaticTableOperations tied to a specific static version of the TableMetadata
      • StaticTableOperations

        public StaticTableOperations​(java.lang.String metadataFileLocation,
                                     FileIO io,
                                     LocationProvider locationProvider)
      • StaticTableOperations

        public StaticTableOperations​(TableMetadata staticMetadata,
                                     FileIO io)
    • Method Detail

      • refresh

        public TableMetadata refresh()
        StaticTableOperations works on the same version of TableMetadata, and it will never refer a different TableMetadata object than the one it was created with.
        Specified by:
        refresh in interface TableOperations
        always current().
      • commit

        public void commit​(TableMetadata base,
                           TableMetadata metadata)
        Description copied from interface: TableOperations
        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.

        Specified by:
        commit in interface TableOperations
        base - table metadata on which changes were based
        metadata - new table metadata with updates
      • metadataFileLocation

        public java.lang.String metadataFileLocation​(java.lang.String fileName)
        Description copied from interface: TableOperations
        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).

        Specified by:
        metadataFileLocation in interface TableOperations