Class FlinkCatalog

  • All Implemented Interfaces:
    org.apache.flink.table.catalog.Catalog

    public class FlinkCatalog
    extends org.apache.flink.table.catalog.AbstractCatalog
    A Flink Catalog implementation that wraps an Iceberg Catalog.

    The mapping between Flink database and Iceberg namespace: Supplying a base namespace for a given catalog, so if you have a catalog that supports a 2-level namespace, you would supply the first level in the catalog configuration and the second level would be exposed as Flink databases.

    The Iceberg table manages its partitions by itself. The partition of the Iceberg table is independent of the partition of Flink.

    • Constructor Summary

      Constructors 
      Constructor Description
      FlinkCatalog​(java.lang.String catalogName, java.lang.String defaultDatabase, Namespace baseNamespace, CatalogLoader catalogLoader, boolean cacheEnabled, long cacheExpirationIntervalMs)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void alterDatabase​(java.lang.String name, org.apache.flink.table.catalog.CatalogDatabase newDatabase, boolean ignoreIfNotExists)  
      void alterFunction​(org.apache.flink.table.catalog.ObjectPath functionPath, org.apache.flink.table.catalog.CatalogFunction newFunction, boolean ignoreIfNotExists)  
      void alterPartition​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.CatalogPartition newPartition, boolean ignoreIfNotExists)  
      void alterPartitionColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists)  
      void alterPartitionStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.stats.CatalogTableStatistics partitionStatistics, boolean ignoreIfNotExists)  
      void alterTable​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable newTable, boolean ignoreIfNotExists)
      This alterTable API only supports altering table properties.
      void alterTable​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable newTable, java.util.List<org.apache.flink.table.catalog.TableChange> tableChanges, boolean ignoreIfNotExists)  
      void alterTableColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists)  
      void alterTableStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.stats.CatalogTableStatistics tableStatistics, boolean ignoreIfNotExists)  
      Catalog catalog()  
      void close()  
      void createDatabase​(java.lang.String name, org.apache.flink.table.catalog.CatalogDatabase database, boolean ignoreIfExists)  
      void createFunction​(org.apache.flink.table.catalog.ObjectPath functionPath, org.apache.flink.table.catalog.CatalogFunction function, boolean ignoreIfExists)  
      void createPartition​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.CatalogPartition partition, boolean ignoreIfExists)  
      void createTable​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable table, boolean ignoreIfExists)  
      boolean databaseExists​(java.lang.String databaseName)  
      void dropDatabase​(java.lang.String name, boolean ignoreIfNotExists, boolean cascade)  
      void dropFunction​(org.apache.flink.table.catalog.ObjectPath functionPath, boolean ignoreIfNotExists)  
      void dropPartition​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, boolean ignoreIfNotExists)  
      void dropTable​(org.apache.flink.table.catalog.ObjectPath tablePath, boolean ignoreIfNotExists)  
      boolean functionExists​(org.apache.flink.table.catalog.ObjectPath functionPath)  
      org.apache.flink.table.catalog.CatalogDatabase getDatabase​(java.lang.String databaseName)  
      java.util.Optional<org.apache.flink.table.factories.Factory> getFactory()  
      org.apache.flink.table.catalog.CatalogFunction getFunction​(org.apache.flink.table.catalog.ObjectPath functionPath)  
      org.apache.flink.table.catalog.CatalogPartition getPartition​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)  
      org.apache.flink.table.catalog.stats.CatalogColumnStatistics getPartitionColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)  
      org.apache.flink.table.catalog.stats.CatalogTableStatistics getPartitionStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)  
      org.apache.flink.table.catalog.CatalogTable getTable​(org.apache.flink.table.catalog.ObjectPath tablePath)  
      org.apache.flink.table.catalog.stats.CatalogColumnStatistics getTableColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath)  
      org.apache.flink.table.catalog.stats.CatalogTableStatistics getTableStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath)  
      java.util.List<java.lang.String> listDatabases()  
      java.util.List<java.lang.String> listFunctions​(java.lang.String dbName)  
      java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitions​(org.apache.flink.table.catalog.ObjectPath tablePath)  
      java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitions​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)  
      java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitionsByFilter​(org.apache.flink.table.catalog.ObjectPath tablePath, java.util.List<org.apache.flink.table.expressions.Expression> filters)  
      java.util.List<java.lang.String> listTables​(java.lang.String databaseName)  
      java.util.List<java.lang.String> listViews​(java.lang.String databaseName)  
      void open()  
      boolean partitionExists​(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)  
      void renameTable​(org.apache.flink.table.catalog.ObjectPath tablePath, java.lang.String newTableName, boolean ignoreIfNotExists)  
      boolean tableExists​(org.apache.flink.table.catalog.ObjectPath tablePath)  
      • Methods inherited from class org.apache.flink.table.catalog.AbstractCatalog

        getDefaultDatabase, getName
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.apache.flink.table.catalog.Catalog

        bulkGetPartitionColumnStatistics, bulkGetPartitionStatistics, dropDatabase, getFunctionDefinitionFactory, getProcedure, getTable, getTableFactory, listProcedures, supportsManagedTable
    • Constructor Detail

      • FlinkCatalog

        public FlinkCatalog​(java.lang.String catalogName,
                            java.lang.String defaultDatabase,
                            Namespace baseNamespace,
                            CatalogLoader catalogLoader,
                            boolean cacheEnabled,
                            long cacheExpirationIntervalMs)
    • Method Detail

      • open

        public void open()
                  throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • close

        public void close()
                   throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • catalog

        public Catalog catalog()
      • listDatabases

        public java.util.List<java.lang.String> listDatabases()
                                                       throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getDatabase

        public org.apache.flink.table.catalog.CatalogDatabase getDatabase​(java.lang.String databaseName)
                                                                   throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException,
                                                                          org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • databaseExists

        public boolean databaseExists​(java.lang.String databaseName)
                               throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • createDatabase

        public void createDatabase​(java.lang.String name,
                                   org.apache.flink.table.catalog.CatalogDatabase database,
                                   boolean ignoreIfExists)
                            throws org.apache.flink.table.catalog.exceptions.DatabaseAlreadyExistException,
                                   org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.DatabaseAlreadyExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • dropDatabase

        public void dropDatabase​(java.lang.String name,
                                 boolean ignoreIfNotExists,
                                 boolean cascade)
                          throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException,
                                 org.apache.flink.table.catalog.exceptions.DatabaseNotEmptyException,
                                 org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
        org.apache.flink.table.catalog.exceptions.DatabaseNotEmptyException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • alterDatabase

        public void alterDatabase​(java.lang.String name,
                                  org.apache.flink.table.catalog.CatalogDatabase newDatabase,
                                  boolean ignoreIfNotExists)
                           throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException,
                                  org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • listTables

        public java.util.List<java.lang.String> listTables​(java.lang.String databaseName)
                                                    throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException,
                                                           org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getTable

        public org.apache.flink.table.catalog.CatalogTable getTable​(org.apache.flink.table.catalog.ObjectPath tablePath)
                                                             throws org.apache.flink.table.catalog.exceptions.TableNotExistException,
                                                                    org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.TableNotExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • tableExists

        public boolean tableExists​(org.apache.flink.table.catalog.ObjectPath tablePath)
                            throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • dropTable

        public void dropTable​(org.apache.flink.table.catalog.ObjectPath tablePath,
                              boolean ignoreIfNotExists)
                       throws org.apache.flink.table.catalog.exceptions.TableNotExistException,
                              org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.TableNotExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • renameTable

        public void renameTable​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                java.lang.String newTableName,
                                boolean ignoreIfNotExists)
                         throws org.apache.flink.table.catalog.exceptions.TableNotExistException,
                                org.apache.flink.table.catalog.exceptions.TableAlreadyExistException,
                                org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.TableNotExistException
        org.apache.flink.table.catalog.exceptions.TableAlreadyExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • createTable

        public void createTable​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                org.apache.flink.table.catalog.CatalogBaseTable table,
                                boolean ignoreIfExists)
                         throws org.apache.flink.table.catalog.exceptions.CatalogException,
                                org.apache.flink.table.catalog.exceptions.TableAlreadyExistException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
        org.apache.flink.table.catalog.exceptions.TableAlreadyExistException
      • alterTable

        public void alterTable​(org.apache.flink.table.catalog.ObjectPath tablePath,
                               org.apache.flink.table.catalog.CatalogBaseTable newTable,
                               boolean ignoreIfNotExists)
                        throws org.apache.flink.table.catalog.exceptions.CatalogException,
                               org.apache.flink.table.catalog.exceptions.TableNotExistException
        This alterTable API only supports altering table properties.

        Support for adding/removing/renaming columns cannot be done by comparing CatalogTable instances, unless the Flink schema contains Iceberg column IDs.

        To alter columns, use the other alterTable API and provide a list of TableChange's.

        Parameters:
        tablePath - path of the table or view to be modified
        newTable - the new table definition
        ignoreIfNotExists - flag to specify behavior when the table or view does not exist: if set to false, throw an exception, if set to true, do nothing.
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException - in case of any runtime exception
        org.apache.flink.table.catalog.exceptions.TableNotExistException - if the table does not exist
      • alterTable

        public void alterTable​(org.apache.flink.table.catalog.ObjectPath tablePath,
                               org.apache.flink.table.catalog.CatalogBaseTable newTable,
                               java.util.List<org.apache.flink.table.catalog.TableChange> tableChanges,
                               boolean ignoreIfNotExists)
                        throws org.apache.flink.table.catalog.exceptions.TableNotExistException,
                               org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.TableNotExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getFactory

        public java.util.Optional<org.apache.flink.table.factories.Factory> getFactory()
      • listViews

        public java.util.List<java.lang.String> listViews​(java.lang.String databaseName)
                                                   throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getPartition

        public org.apache.flink.table.catalog.CatalogPartition getPartition​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                                                            org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
                                                                     throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • partitionExists

        public boolean partitionExists​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                       org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
                                throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • createPartition

        public void createPartition​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                    org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec,
                                    org.apache.flink.table.catalog.CatalogPartition partition,
                                    boolean ignoreIfExists)
                             throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • dropPartition

        public void dropPartition​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                  org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec,
                                  boolean ignoreIfNotExists)
                           throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • alterPartition

        public void alterPartition​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                   org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec,
                                   org.apache.flink.table.catalog.CatalogPartition newPartition,
                                   boolean ignoreIfNotExists)
                            throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • listFunctions

        public java.util.List<java.lang.String> listFunctions​(java.lang.String dbName)
                                                       throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getFunction

        public org.apache.flink.table.catalog.CatalogFunction getFunction​(org.apache.flink.table.catalog.ObjectPath functionPath)
                                                                   throws org.apache.flink.table.catalog.exceptions.FunctionNotExistException,
                                                                          org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.FunctionNotExistException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • functionExists

        public boolean functionExists​(org.apache.flink.table.catalog.ObjectPath functionPath)
                               throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • createFunction

        public void createFunction​(org.apache.flink.table.catalog.ObjectPath functionPath,
                                   org.apache.flink.table.catalog.CatalogFunction function,
                                   boolean ignoreIfExists)
                            throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • alterFunction

        public void alterFunction​(org.apache.flink.table.catalog.ObjectPath functionPath,
                                  org.apache.flink.table.catalog.CatalogFunction newFunction,
                                  boolean ignoreIfNotExists)
                           throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • dropFunction

        public void dropFunction​(org.apache.flink.table.catalog.ObjectPath functionPath,
                                 boolean ignoreIfNotExists)
                          throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • alterTableStatistics

        public void alterTableStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                         org.apache.flink.table.catalog.stats.CatalogTableStatistics tableStatistics,
                                         boolean ignoreIfNotExists)
                                  throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • alterTableColumnStatistics

        public void alterTableColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                               org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics,
                                               boolean ignoreIfNotExists)
                                        throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • alterPartitionStatistics

        public void alterPartitionStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                             org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec,
                                             org.apache.flink.table.catalog.stats.CatalogTableStatistics partitionStatistics,
                                             boolean ignoreIfNotExists)
                                      throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • alterPartitionColumnStatistics

        public void alterPartitionColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                                   org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec,
                                                   org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics,
                                                   boolean ignoreIfNotExists)
                                            throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • listPartitions

        public java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitions​(org.apache.flink.table.catalog.ObjectPath tablePath)
                                                                                           throws org.apache.flink.table.catalog.exceptions.TableNotExistException,
                                                                                                  org.apache.flink.table.catalog.exceptions.TableNotPartitionedException,
                                                                                                  org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.TableNotExistException
        org.apache.flink.table.catalog.exceptions.TableNotPartitionedException
        org.apache.flink.table.catalog.exceptions.CatalogException
      • listPartitions

        public java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitions​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                                                                                  org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
                                                                                           throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • listPartitionsByFilter

        public java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitionsByFilter​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                                                                                          java.util.List<org.apache.flink.table.expressions.Expression> filters)
                                                                                                   throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getTableStatistics

        public org.apache.flink.table.catalog.stats.CatalogTableStatistics getTableStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath)
                                                                                       throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getTableColumnStatistics

        public org.apache.flink.table.catalog.stats.CatalogColumnStatistics getTableColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath)
                                                                                              throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getPartitionStatistics

        public org.apache.flink.table.catalog.stats.CatalogTableStatistics getPartitionStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                                                                                  org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
                                                                                           throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException
      • getPartitionColumnStatistics

        public org.apache.flink.table.catalog.stats.CatalogColumnStatistics getPartitionColumnStatistics​(org.apache.flink.table.catalog.ObjectPath tablePath,
                                                                                                         org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
                                                                                                  throws org.apache.flink.table.catalog.exceptions.CatalogException
        Throws:
        org.apache.flink.table.catalog.exceptions.CatalogException