Interface CatalogTable

  • All Superinterfaces:
    CatalogBaseTable
    All Known Implementing Classes:
    DefaultCatalogTable, ResolvedCatalogTable

    @PublicEvolving
    public interface CatalogTable
    extends CatalogBaseTable
    Represents the unresolved metadata of a table in a Catalog.

    It contains all characteristics that can be expressed in a SQL CREATE TABLE statement. The framework will resolve instances of this interface to a ResolvedCatalogTable before passing it to a DynamicTableFactory for creating a connector to an external system.

    A catalog implementer can either use newBuilder() for a basic implementation of this interface or create a custom class that allows passing catalog-specific objects all the way down to the connector creation (if necessary).

    Note: The default implementation that is available via newBuilder() is always serializable. For example, it can be used for implementing a catalog that uses ResolvedCatalogTable.toProperties(SqlFactory) or for persisting compiled plans. An implementation of this interface determines whether a catalog table can be serialized by providing a proper CatalogBaseTable.getOptions() method.

    • Method Detail

      • fromProperties

        static CatalogTable fromProperties​(Map<String,​String> properties)
        Creates an instance of CatalogTable from a map of string properties that were previously created with ResolvedCatalogTable.toProperties(SqlFactory).

        Note that the serialization and deserialization of catalog tables are not symmetric. The framework will resolve functions and perform other validation tasks. A catalog implementation must not deal with this during a read operation.

        Parameters:
        properties - serialized version of a CatalogTable that includes schema, partition keys, and connector options
      • isPartitioned

        boolean isPartitioned()
        Check if the table is partitioned or not.
        Returns:
        true if the table is partitioned; otherwise, false
      • getPartitionKeys

        List<String> getPartitionKeys()
        Get the partition keys of the table. This will be an empty set if the table is not partitioned.
        Returns:
        partition keys of the table
      • copy

        CatalogTable copy​(Map<String,​String> options)
        Returns a copy of this CatalogTable with given table options options.
        Returns:
        a new copy of this table with replaced table options
      • getSnapshot

        default Optional<Long> getSnapshot()
        Return the snapshot specified for the table. Return Optional.empty() if not specified.
      • getDistribution

        default Optional<TableDistribution> getDistribution()
        Returns the distribution of the table if the DISTRIBUTED clause is defined.