Class WorkspaceSchemaFactory.WorkspaceSchema

java.lang.Object
org.apache.drill.exec.store.AbstractSchema
org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory.WorkspaceSchema
All Implemented Interfaces:
AutoCloseable, org.apache.calcite.schema.Schema, ExpandingConcurrentMap.MapValueFactory<WorkspaceSchemaFactory.TableInstance,DrillTable>, SchemaPartitionExplorer
Enclosing class:
WorkspaceSchemaFactory

public class WorkspaceSchemaFactory.WorkspaceSchema extends AbstractSchema implements ExpandingConcurrentMap.MapValueFactory<WorkspaceSchemaFactory.TableInstance,DrillTable>
  • Constructor Details

  • Method Details

    • createView

      public boolean createView(View view) throws IOException
      Description copied from class: AbstractSchema
      Create a new view given definition.
      Overrides:
      createView in class AbstractSchema
      Parameters:
      view - View info including name, definition etc.
      Returns:
      Returns true if an existing view is replaced with the given view. False otherwise.
      Throws:
      IOException - in case of error creating a view
    • getSubPartitions

      public Iterable<String> getSubPartitions(String table, List<String> partitionColumns, List<String> partitionValues) throws PartitionNotFoundException
      Description copied from interface: SchemaPartitionExplorer
      Get a list of sub-partitions of a particular table and the partitions specified by partition columns and values. Individual storage plugins will assign specific meaning to the parameters and return values.

      For more info see docs in PartitionExplorer.

      Specified by:
      getSubPartitions in interface SchemaPartitionExplorer
      Overrides:
      getSubPartitions in class AbstractSchema
      partitionColumns - a list of partitions to match
      partitionValues - list of values of each partition (corresponding to the partition column list)
      Returns:
      list of sub-partitions, will be empty if a there is no further level of sub-partitioning below, i.e. hit a leaf partition
      Throws:
      PartitionNotFoundException - when the partition does not exist in the given workspace
    • dropView

      public void dropView(String viewName) throws IOException
      Description copied from class: AbstractSchema
      Drop the view with given name.
      Overrides:
      dropView in class AbstractSchema
      Parameters:
      viewName - view name
      Throws:
      IOException - in case of error dropping the view
    • getTableNames

      public Set<String> getTableNames()
      Specified by:
      getTableNames in interface org.apache.calcite.schema.Schema
      Overrides:
      getTableNames in class AbstractSchema
    • getFunctionNames

      public Set<String> getFunctionNames()
      Specified by:
      getFunctionNames in interface org.apache.calcite.schema.Schema
      Overrides:
      getFunctionNames in class AbstractSchema
    • getFunctions

      public List<org.apache.calcite.schema.Function> getFunctions(String name)
      Description copied from class: AbstractSchema
      For the given table names returns list of acceptable table functions which are common for all Drill schemas. When overriding this method, parent functions must be included first to be evaluated first. If not included, parent functions won't be taken into account when creating table instance.
      Specified by:
      getFunctions in interface org.apache.calcite.schema.Schema
      Overrides:
      getFunctions in class AbstractSchema
      Parameters:
      name - table name
      Returns:
      list of table functions
    • getTable

      public org.apache.calcite.schema.Table getTable(String tableName)
      Specified by:
      getTable in interface org.apache.calcite.schema.Schema
      Overrides:
      getTable in class AbstractSchema
    • isMutable

      public boolean isMutable()
      Specified by:
      isMutable in interface org.apache.calcite.schema.Schema
      Overrides:
      isMutable in class AbstractSchema
    • getFS

      public DrillFileSystem getFS()
    • getDefaultLocation

      public String getDefaultLocation()
    • createNewTable

      public CreateTableEntry createNewTable(String tableName, List<String> partitionColumns, StorageStrategy storageStrategy)
      Description copied from class: AbstractSchema
      Creates table entry using table name, list of partition columns and storage strategy used to create table folder and files
      Overrides:
      createNewTable in class AbstractSchema
      Parameters:
      tableName - : new table name.
      partitionColumns - : list of partition columns. Empty list if there is no partition columns.
      storageStrategy - : storage strategy used to create table folder and files
      Returns:
      create table entry
    • createStatsTable

      public CreateTableEntry createStatsTable(String tableName)
      Description copied from class: AbstractSchema
      Create stats table entry for given tableName.
      Overrides:
      createStatsTable in class AbstractSchema
      Parameters:
      tableName - table name
      Returns:
      instance of create table entry
    • appendToStatsTable

      public CreateTableEntry appendToStatsTable(String tableName)
      Description copied from class: AbstractSchema
      Create an append statistics table entry for given tableName. If there is not existing statistics table, a new one is created.
      Overrides:
      appendToStatsTable in class AbstractSchema
      Parameters:
      tableName - table name
      Returns:
      instance of create table entry
    • getStatsTable

      public org.apache.calcite.schema.Table getStatsTable(String tableName)
      Description copied from class: AbstractSchema
      Get the statistics table for given tableName
      Overrides:
      getStatsTable in class AbstractSchema
      Parameters:
      tableName - table name
      Returns:
      instance of statistics table
    • getTypeName

      public String getTypeName()
      Description copied from class: AbstractSchema
      Returns string describing schema type which shows where the schema came from. Good practice here is to return json type name of storage plugin's config.
      Specified by:
      getTypeName in class AbstractSchema
      Returns:
      schema type name
    • create

      Specified by:
      create in interface ExpandingConcurrentMap.MapValueFactory<WorkspaceSchemaFactory.TableInstance,DrillTable>
    • destroy

      public void destroy(DrillTable value)
      Specified by:
      destroy in interface ExpandingConcurrentMap.MapValueFactory<WorkspaceSchemaFactory.TableInstance,DrillTable>
    • dropTable

      public void dropTable(String table)
      We check if the table contains homogeneous file formats that Drill can read. Once the checks are performed we rename the file to start with an "_". After the rename we issue a recursive delete of the directory.
      Overrides:
      dropTable in class AbstractSchema
      Parameters:
      table - - Path of table to be dropped
    • getTableNamesAndTypes

      public List<Map.Entry<String,org.apache.calcite.schema.Schema.TableType>> getTableNamesAndTypes()
      Description copied from class: AbstractSchema
      Used by InfoSchemaRecordGenerator.Tables for getting all table objects along with type for every requested schema. It's desired for this method to work fast because it impacts SHOW TABLES query.
      Overrides:
      getTableNamesAndTypes in class AbstractSchema
      Returns:
      collection of table names and types