public interface SchemaPlus extends 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.
Schema.TableType
Modifier and Type | Method and Description |
---|---|
void |
add(java.lang.String name,
Function function)
Adds a function to this schema.
|
void |
add(java.lang.String name,
Lattice lattice)
Adds a lattice to this schema.
|
void |
add(java.lang.String name,
RelProtoDataType type)
Adds a type to this schema.
|
SchemaPlus |
add(java.lang.String name,
Schema schema)
Adds a schema as a sub-schema of this schema, and returns the wrapped
object.
|
void |
add(java.lang.String name,
Table table)
Adds a table to this schema.
|
java.lang.String |
getName()
Returns the name of this schema.
|
SchemaPlus |
getParentSchema()
Returns the parent schema, or null if this schema has no parent.
|
SchemaPlus |
getSubSchema(java.lang.String name)
Returns a sub-schema with a given name, or null.
|
boolean |
isCacheEnabled() |
boolean |
isMutable()
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 as
Schema.getTable(String) . |
void |
setCacheEnabled(boolean cache) |
void |
setPath(com.google.common.collect.ImmutableList<com.google.common.collect.ImmutableList<java.lang.String>> path) |
<T> T |
unwrap(java.lang.Class<T> clazz)
Returns an underlying object.
|
getExpression, getFunctionNames, getFunctions, getSubSchemaNames, getTable, getTableNames, getType, getTypeNames, snapshot
SchemaPlus getParentSchema()
java.lang.String getName()
The name must not be null, and must be unique within its parent. The root schema is typically named "".
SchemaPlus getSubSchema(java.lang.String name)
Schema
getSubSchema
in interface Schema
name
- Sub-schema nameSchemaPlus add(java.lang.String name, Schema schema)
void add(java.lang.String name, Table table)
void add(java.lang.String name, Function function)
void add(java.lang.String name, RelProtoDataType type)
void add(java.lang.String name, Lattice lattice)
boolean isMutable()
Schema
Schema.getTable(String)
.
Even if this method returns true, the maps are not modified. Calcite stores the defined objects in a wrapper object.
<T> T unwrap(java.lang.Class<T> clazz)
void setPath(com.google.common.collect.ImmutableList<com.google.common.collect.ImmutableList<java.lang.String>> path)
void setCacheEnabled(boolean cache)
boolean isCacheEnabled()
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.