Class CalciteSchema

    • Method Detail

      • getImplicitSubSchema

        protected abstract CalciteSchema getImplicitSubSchema​(java.lang.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 CalciteSchema.TableEntry getImplicitTable​(java.lang.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 CalciteSchema.TypeEntry getImplicitType​(java.lang.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 CalciteSchema.TableEntry getImplicitTableBasedOnNullaryFunction​(java.lang.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<java.lang.String,​CalciteSchema> builder)
        Adds implicit sub-schemas to a builder.
      • addImplicitTableToBuilder

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

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

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

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

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

        protected abstract boolean isCacheEnabled()
      • setCache

        public abstract void setCache​(boolean cache)
      • add

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

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

        public java.util.List<java.lang.String> path​(java.lang.String name)
        Returns the path of an object in this schema.
      • getSubSchema

        public final CalciteSchema getSubSchema​(java.lang.String schemaName,
                                                boolean caseSensitive)
      • add

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

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

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

        public java.lang.String getName()
      • getPath

        public java.util.List<? extends java.util.List<java.lang.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
      • getTableNames

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

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

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

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

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

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

        public final CalciteSchema.TableEntry getTableBasedOnNullaryFunction​(java.lang.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> java.util.NavigableMap<java.lang.String,​V> find​(java.util.NavigableMap<java.lang.String,​V> map,
                                                                                   java.lang.String s)
        Deprecated.
        use NameMap
        Returns a subset of a map whose keys match the given string case-insensitively.
      • find

        @Deprecated
        protected static java.lang.Iterable<java.lang.String> find​(java.util.NavigableSet<java.lang.String> set,
                                                                   java.lang.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,
                                                     java.lang.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,
                                                     java.lang.String name,
                                                     Schema schema)
      • removeSubSchema

        public boolean removeSubSchema​(java.lang.String name)
      • removeTable

        public boolean removeTable​(java.lang.String name)
      • removeFunction

        public boolean removeFunction​(java.lang.String name)
      • removeType

        public boolean removeType​(java.lang.String name)