Interface SchemaPlus
- All Superinterfaces:
Schema
Schema
interface.
Given a user-defined schema that implements the Schema
interface,
Calcite creates a wrapper that implements the SchemaPlus
interface.
This provides extra functionality, such as access to tables that have been
added explicitly.
A user-defined schema does not need to implement this interface, but by the time a schema is passed to a method in a user-defined schema or user-defined table, it will have been wrapped in this interface.
SchemaPlus is intended to be used by users but not instantiated by them.
Users should only use the SchemaPlus they are given by the system.
The purpose of SchemaPlus is to expose to user code, in a read only manner,
some of the extra information about schemas that Calcite builds up when a
schema is registered. It appears in several SPI calls as context; for example
SchemaFactory.create(SchemaPlus, String, java.util.Map)
contains a
parent schema that might be a wrapped instance of a user-defined
Schema
, or indeed might not.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.calcite.schema.Schema
Schema.TableType
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a lattice to this schema.void
add
(String name, RelProtoDataType type) Adds a type to this schema.void
Adds a function to this schema.Adds a schema as a sub-schema of this schema, and returns the wrapped object.void
Adds a table to this schema.getName()
Returns the name of this schema.@Nullable SchemaPlus
Returns the parent schema, or null if this schema has no parent.@Nullable SchemaPlus
getSubSchema
(String name) Returns a sub-schema with a given name, or null.boolean
boolean
Returns whether the user is allowed to create new tables, functions and sub-schemas in this schema, in addition to those returned automatically by methods such asSchema.getTable(String)
.default boolean
removeTable
(String name) Removes a table from this schema, used e.g.void
setCacheEnabled
(boolean cache) void
setPath
(com.google.common.collect.ImmutableList<com.google.common.collect.ImmutableList<String>> path) <T> @Nullable T
Returns an underlying object.Methods inherited from interface org.apache.calcite.schema.Schema
getExpression, getFunctionNames, getFunctions, getSubSchemaNames, getTable, getTableNames, getType, getTypeNames, snapshot
-
Method Details
-
getParentSchema
@Nullable SchemaPlus getParentSchema()Returns the parent schema, or null if this schema has no parent. -
getName
String getName()Returns the name of this schema.The name must not be null, and must be unique within its parent. The root schema is typically named "".
-
getSubSchema
Description copied from interface:Schema
Returns a sub-schema with a given name, or null.- Specified by:
getSubSchema
in interfaceSchema
- Parameters:
name
- Sub-schema name- Returns:
- Sub-schema with a given name, or null
-
add
Adds a schema as a sub-schema of this schema, and returns the wrapped object. -
add
Adds a table to this schema. -
removeTable
Removes a table from this schema, used e.g. to clean-up temporary tables. -
add
Adds a function to this schema. -
add
Adds a type to this schema. -
add
Adds a lattice to this schema. -
isMutable
boolean isMutable()Description copied from interface:Schema
Returns whether the user is allowed to create new tables, functions and sub-schemas in this schema, in addition to those returned automatically by methods such asSchema.getTable(String)
.Even if this method returns true, the maps are not modified. Calcite stores the defined objects in a wrapper object.
-
unwrap
Returns an underlying object. -
setPath
void setPath(com.google.common.collect.ImmutableList<com.google.common.collect.ImmutableList<String>> path) -
setCacheEnabled
void setCacheEnabled(boolean cache) -
isCacheEnabled
boolean isCacheEnabled()
-