Class CalciteSchema

java.lang.Object
org.apache.calcite.jdbc.CalciteSchema
Direct Known Subclasses:
CalciteRootSchema

public abstract class CalciteSchema extends Object
Schema.

Wrapper around user-defined schema used internally.

  • Field Details

  • Constructor Details

  • Method Details

    • getImplicitSubSchema

      protected abstract @Nullable CalciteSchema getImplicitSubSchema(String schemaName, boolean caseSensitive)
      Returns a sub-schema with a given name that is defined implicitly (that is, by the underlying Schema object, not explicitly by a call to add(String, Schema)), or null.
    • getImplicitTable

      protected abstract @Nullable CalciteSchema.TableEntry getImplicitTable(String tableName, boolean caseSensitive)
      Returns a table with a given name that is defined implicitly (that is, by the underlying Schema object, not explicitly by a call to add(String, Table)), or null.
    • getImplicitType

      protected abstract @Nullable CalciteSchema.TypeEntry getImplicitType(String name, boolean caseSensitive)
      Returns a type with a given name that is defined implicitly (that is, by the underlying Schema object, not explicitly by a call to add(String, RelProtoDataType)), or null.
    • getImplicitTableBasedOnNullaryFunction

      protected abstract @Nullable CalciteSchema.TableEntry getImplicitTableBasedOnNullaryFunction(String tableName, boolean caseSensitive)
      Returns table function with a given name and zero arguments that is defined implicitly (that is, by the underlying Schema object, not explicitly by a call to add(String, Function)), or null.
    • addImplicitSubSchemaToBuilder

      protected abstract void addImplicitSubSchemaToBuilder(com.google.common.collect.ImmutableSortedMap.Builder<String,CalciteSchema> builder)
      Adds implicit sub-schemas to a builder.
    • addImplicitTableToBuilder

      protected abstract void addImplicitTableToBuilder(com.google.common.collect.ImmutableSortedSet.Builder<String> builder)
      Adds implicit tables to a builder.
    • addImplicitFunctionsToBuilder

      protected abstract void addImplicitFunctionsToBuilder(com.google.common.collect.ImmutableList.Builder<Function> builder, String name, boolean caseSensitive)
      Adds implicit functions to a builder.
    • addImplicitFuncNamesToBuilder

      protected abstract void addImplicitFuncNamesToBuilder(com.google.common.collect.ImmutableSortedSet.Builder<String> builder)
      Adds implicit function names to a builder.
    • addImplicitTypeNamesToBuilder

      protected abstract void addImplicitTypeNamesToBuilder(com.google.common.collect.ImmutableSortedSet.Builder<String> builder)
      Adds implicit type names to a builder.
    • addImplicitTablesBasedOnNullaryFunctionsToBuilder

      protected abstract void addImplicitTablesBasedOnNullaryFunctionsToBuilder(com.google.common.collect.ImmutableSortedMap.Builder<String,Table> builder)
      Adds implicit table functions to a builder.
    • snapshot

      protected abstract CalciteSchema snapshot(@Nullable CalciteSchema parent, SchemaVersion version)
      Returns a snapshot representation of this CalciteSchema.
    • isCacheEnabled

      protected abstract boolean isCacheEnabled()
    • setCache

      public abstract void setCache(boolean cache)
    • tableEntry

      protected CalciteSchema.TableEntryImpl tableEntry(String name, Table table)
      Creates a TableEntryImpl with no SQLs.
    • typeEntry

      protected CalciteSchema.TypeEntryImpl typeEntry(String name, RelProtoDataType relProtoDataType)
      Creates a TableEntryImpl with no SQLs.
    • add

      public CalciteSchema.TableEntry add(String tableName, Table table)
      Defines a table within this schema.
    • add

      public CalciteSchema.TableEntry add(String tableName, Table table, com.google.common.collect.ImmutableList<String> sqls)
      Defines a table within this schema.
    • add

      Defines a type within this schema.
    • root

      public CalciteSchema root()
    • isRoot

      public boolean isRoot()
      Returns whether this is a root schema.
    • path

      public List<String> path(@Nullable String name)
      Returns the path of an object in this schema.
    • getSubSchema

      public final @Nullable CalciteSchema getSubSchema(String schemaName, boolean caseSensitive)
    • add

      public abstract CalciteSchema add(String name, Schema schema)
      Adds a child schema of this schema.
    • getTableBySql

      public final @Nullable CalciteSchema.TableEntry getTableBySql(String sql)
      Returns a table that materializes the given SQL statement.
    • getTable

      public final @Nullable CalciteSchema.TableEntry getTable(String tableName, boolean caseSensitive)
      Returns a table with the given name. Does not look for views.
    • getName

      public String getName()
    • plus

      public SchemaPlus plus()
    • from

      public static CalciteSchema from(SchemaPlus plus)
    • getPath

      public List<? extends List<String>> getPath()
      Returns the default path resolving functions from this schema.

      The path consists is a list of lists of strings. Each list of strings represents the path of a schema from the root schema. For example, [[], [foo], [foo, bar, baz]] represents three schemas: the root schema "/" (level 0), "/foo" (level 1) and "/foo/bar/baz" (level 3).

      Returns:
      Path of this schema; never null, may be empty
    • getSubSchemaMap

      public final NavigableMap<String,CalciteSchema> getSubSchemaMap()
      Returns a collection of sub-schemas, both explicit (defined using add(String, org.apache.calcite.schema.Schema)) and implicit (defined using Schema.getSubSchemaNames() and Schema.getSubSchema(String)).
    • getLatticeMap

      Returns a collection of lattices.

      All are explicit (defined using add(String, Lattice)).

    • getTableNames

      public final NavigableSet<String> getTableNames()
      Returns the set of all table names. Includes implicit and explicit tables and functions with zero parameters.
    • getTypeNames

      public final NavigableSet<String> getTypeNames()
      Returns the set of all types names.
    • getType

      public final @Nullable CalciteSchema.TypeEntry getType(String name, boolean caseSensitive)
      Returns a type, explicit and implicit, with a given name. Never null.
    • getFunctions

      public final Collection<Function> getFunctions(String name, boolean caseSensitive)
      Returns a collection of all functions, explicit and implicit, with a given name. Never null.
    • getFunctionNames

      public final NavigableSet<String> getFunctionNames()
      Returns the list of function names in this schema, both implicit and explicit, never null.
    • getTablesBasedOnNullaryFunctions

      public final NavigableMap<String,Table> getTablesBasedOnNullaryFunctions()
      Returns tables derived from explicit and implicit functions that take zero parameters.
    • getTableBasedOnNullaryFunction

      public final @Nullable CalciteSchema.TableEntry getTableBasedOnNullaryFunction(String tableName, boolean caseSensitive)
      Returns a tables derived from explicit and implicit functions that take zero parameters.
    • createSnapshot

      public CalciteSchema createSnapshot(SchemaVersion version)
      Creates a snapshot of this CalciteSchema as of the specified time. All explicit objects in this CalciteSchema will be copied into the snapshot CalciteSchema, while the contents of the snapshot of the underlying schema should not change as specified in Schema.snapshot(SchemaVersion). Snapshots of explicit sub schemas will be created and copied recursively.

      Currently, to accommodate the requirement of creating tables on the fly for materializations, the snapshot will still use the same table map and lattice map as in the original CalciteSchema instead of making copies.

      Parameters:
      version - The current schema version
      Returns:
      the schema snapshot.
    • find

      @Deprecated protected static <V> NavigableMap<String,V> find(NavigableMap<String,V> map, String s)
      Deprecated.
      use NameMap
      Returns a subset of a map whose keys match the given string case-insensitively.
    • find

      @Deprecated protected static Iterable<String> find(NavigableSet<String> set, String name)
      Deprecated.
      use NameSet
      Returns a subset of a set whose values match the given string case-insensitively.
    • createRootSchema

      public static CalciteSchema createRootSchema(boolean addMetadataSchema)
      Creates a root schema.

      When addMetadataSchema argument is true adds a "metadata" schema containing definitions of tables, columns etc. to root schema. By default, creates a CachingCalciteSchema.

    • createRootSchema

      public static CalciteSchema createRootSchema(boolean addMetadataSchema, boolean cache)
      Creates a root schema.
      Parameters:
      addMetadataSchema - Whether to add a "metadata" schema containing definitions of tables, columns etc.
      cache - If true create CachingCalciteSchema; if false create SimpleCalciteSchema
    • createRootSchema

      public static CalciteSchema createRootSchema(boolean addMetadataSchema, boolean cache, String name)
      Creates a root schema.
      Parameters:
      addMetadataSchema - Whether to add a "metadata" schema containing definitions of tables, columns etc.
      cache - If true create CachingCalciteSchema; if false create SimpleCalciteSchema
      name - Schema name
    • createRootSchema

      public static CalciteSchema createRootSchema(boolean addMetadataSchema, boolean cache, String name, Schema schema)
    • removeSubSchema

      public boolean removeSubSchema(String name)
    • removeTable

      public boolean removeTable(String name)
    • removeFunction

      public boolean removeFunction(String name)
    • removeType

      public boolean removeType(String name)