Module org.jooq
Package org.jooq.impl

Class SchemaImpl

java.lang.Object
org.jooq.impl.SchemaImpl
All Implemented Interfaces:
Serializable, Named, QueryPart, QueryPartInternal, Schema

@Internal public class SchemaImpl extends Object implements Schema
A common base class for database schemata

This type is for JOOQ INTERNAL USE only. Do not reference directly

Author:
Lukas Eder
See Also:
Serialized Form
  • Constructor Details

    • SchemaImpl

      public SchemaImpl(String name)
    • SchemaImpl

      public SchemaImpl(String name, Catalog catalog)
    • SchemaImpl

      public SchemaImpl(String name, Catalog catalog, String comment)
    • SchemaImpl

      public SchemaImpl(Name name)
    • SchemaImpl

      public SchemaImpl(Name name, Catalog catalog)
    • SchemaImpl

      public SchemaImpl(Name name, Catalog catalog, Comment comment)
  • Method Details

    • getCatalog

      public Catalog getCatalog()
      Description copied from interface: Schema
      The catalog of this schema.
      Specified by:
      getCatalog in interface Schema
    • accept

      public final void accept(Context<?> ctx)
      Description copied from interface: QueryPartInternal
      This QueryPart can accept a Context object in order to render a SQL string or to bind its variables.
      Specified by:
      accept in interface QueryPartInternal
    • clauses

      public final Clause[] clauses(Context<?> ctx)
      Description copied from interface: QueryPartInternal
      The Clauses that are represented by this query part.

      QueryParts can specify several Clauses for which an event will be emitted before (in forward order) and after (in reverse order) visiting the the query part through Context.visit(QueryPart)

      This method is for JOOQ INTERNAL USE only. Do not reference directly

      Specified by:
      clauses in interface QueryPartInternal
      Returns:
      The Clauses represented by this query part or null or an empty array if this query part does not represent a clause.
    • getTable

      public final Table<?> getTable(String name)
      Description copied from interface: Schema
      Get a table by its name (case-sensitive) in this schema, or null if no such table exists.
      Specified by:
      getTable in interface Schema
    • getTable

      public final Table<?> getTable(Name name)
      Description copied from interface: Schema
      Get a table by its qualified or unqualified name in this schema, or null if no such table exists.
      Specified by:
      getTable in interface Schema
    • getPrimaryKeys

      public final List<UniqueKey<?>> getPrimaryKeys(String name)
      Description copied from interface: Schema
      Get primary keys by their name (case-sensitive) in this schema.
      Specified by:
      getPrimaryKeys in interface Schema
    • getPrimaryKeys

      public final List<UniqueKey<?>> getPrimaryKeys(Name name)
      Description copied from interface: Schema
      Get primary keys by their qualified or unqualified name in this schema.
      Specified by:
      getPrimaryKeys in interface Schema
    • getUniqueKeys

      public final List<UniqueKey<?>> getUniqueKeys(String name)
      Description copied from interface: Schema
      Get unique keys (including primary keys) by their name (case-sensitive) in this schema.
      Specified by:
      getUniqueKeys in interface Schema
    • getUniqueKeys

      public final List<UniqueKey<?>> getUniqueKeys(Name name)
      Description copied from interface: Schema
      Get unique keys (including primary keys) by their qualified or unqualified name in this schema.
      Specified by:
      getUniqueKeys in interface Schema
    • getForeignKeys

      public final List<ForeignKey<?,​?>> getForeignKeys(String name)
      Description copied from interface: Schema
      Get foreign keys by their name (case-sensitive) in this schema.
      Specified by:
      getForeignKeys in interface Schema
    • getForeignKeys

      public final List<ForeignKey<?,​?>> getForeignKeys(Name name)
      Description copied from interface: Schema
      Get foreign keys by their qualified or unqualified name in this schema.
      Specified by:
      getForeignKeys in interface Schema
    • getIndexes

      public final List<Index> getIndexes(String name)
      Description copied from interface: Schema
      Get indexes by their name (case-sensitive) in this schema.
      Specified by:
      getIndexes in interface Schema
    • getIndexes

      public final List<Index> getIndexes(Name name)
      Description copied from interface: Schema
      Get indexes by their qualified or unqualified name in this schema.
      Specified by:
      getIndexes in interface Schema
    • getUDT

      public final UDT<?> getUDT(String name)
      Description copied from interface: Schema
      Get a UDT by its name (case-sensitive) in this schema, or null if no such UDT exists.
      Specified by:
      getUDT in interface Schema
    • getUDT

      public final UDT<?> getUDT(Name name)
      Description copied from interface: Schema
      Get a UDT by its qualified or unqualified name in this schema, or null if no such UDT exists.
      Specified by:
      getUDT in interface Schema
    • getDomain

      public final Domain<?> getDomain(String name)
      Description copied from interface: Schema
      Get a domain by its name (case-sensitive) in this schema, or null if no such domain exists.
      Specified by:
      getDomain in interface Schema
    • getDomain

      public final Domain<?> getDomain(Name name)
      Description copied from interface: Schema
      Get a domain by its qualified or unqualified name in this schema, or null if no such domain exists.
      Specified by:
      getDomain in interface Schema
    • getSequence

      public final Sequence<?> getSequence(String name)
      Description copied from interface: Schema
      Get a sequence by its name (case-sensitive) in this schema, or null if no such sequence exists.
      Specified by:
      getSequence in interface Schema
    • getSequence

      public final Sequence<?> getSequence(Name name)
      Description copied from interface: Schema
      Get a sequence by its qualified or unqualified name in this schema, or null if no such sequence exists.
      Specified by:
      getSequence in interface Schema
    • getTables

      public List<Table<?>> getTables()
      List all tables contained in this schema.

      Subclasses should override this method

      Specified by:
      getTables in interface Schema
    • getPrimaryKeys

      public List<UniqueKey<?>> getPrimaryKeys()
      List all primary keys contained in this schema.

      Subclasses may override this method

      Specified by:
      getPrimaryKeys in interface Schema
    • getUniqueKeys

      public List<UniqueKey<?>> getUniqueKeys()
      List all unique keys (including primary keys) contained in this schema.

      Subclasses may override this method

      Specified by:
      getUniqueKeys in interface Schema
    • getForeignKeys

      public List<ForeignKey<?,​?>> getForeignKeys()
      List all foreign keys contained in this schema.

      Subclasses may override this method

      Specified by:
      getForeignKeys in interface Schema
    • getIndexes

      public List<Index> getIndexes()
      List all indexes contained in this schema.

      Subclasses may override this method

      Specified by:
      getIndexes in interface Schema
    • getUDTs

      public List<UDT<?>> getUDTs()
      List all UDTs contained in this schema.

      Subclasses should override this method

      Specified by:
      getUDTs in interface Schema
    • getDomains

      public List<Domain<?>> getDomains()
      List all domains contained in this schema.

      Subclasses should override this method

      Specified by:
      getDomains in interface Schema
    • getSequences

      public List<Sequence<?>> getSequences()
      List all sequences contained in this schema.

      Subclasses should override this method

      Specified by:
      getSequences in interface Schema
    • tableStream

      public final Stream<Table<?>> tableStream()
      Description copied from interface: Schema
      Stream all tables contained in this schema.
      Specified by:
      tableStream in interface Schema
    • primaryKeyStream

      public final Stream<UniqueKey<?>> primaryKeyStream()
      Description copied from interface: Schema
      Stream all primary keys contained in this schema.
      Specified by:
      primaryKeyStream in interface Schema
    • uniqueKeyStream

      public final Stream<UniqueKey<?>> uniqueKeyStream()
      Description copied from interface: Schema
      Stream all unique keys (including primary keys) contained in this schema.
      Specified by:
      uniqueKeyStream in interface Schema
    • foreignKeyStream

      public final Stream<ForeignKey<?,​?>> foreignKeyStream()
      Description copied from interface: Schema
      Stream all foreign keys contained in this schema.
      Specified by:
      foreignKeyStream in interface Schema
    • indexStream

      public final Stream<Index> indexStream()
      Description copied from interface: Schema
      Stream all indexes contained in this schema.
      Specified by:
      indexStream in interface Schema
    • udtStream

      public final Stream<UDT<?>> udtStream()
      Description copied from interface: Schema
      Stream all UDTs contained in this schema.
      Specified by:
      udtStream in interface Schema
    • domainStream

      public final Stream<Domain<?>> domainStream()
      Description copied from interface: Schema
      Stream all domains contained in this schema.
      Specified by:
      domainStream in interface Schema
    • sequenceStream

      public final Stream<Sequence<?>> sequenceStream()
      Description copied from interface: Schema
      Stream all sequences contained in this schema.
      Specified by:
      sequenceStream in interface Schema
    • $traverse

      public final <R> R $traverse(Traverser<?,​R> traverser)
      Description copied from interface: QueryPart
      Traverser this QueryPart expression tree using a composable Traverser, producing a result.

      This offers a generic way to traverse expression trees to translate the tree to arbitrary other data structures. The simplest traversal would just count all the tree elements:

       int count = CUSTOMER.NAME.eq(1).$traverse(0, (i, p) -> i + 1);
       

      The same can be achieved by translating the JDK Collector API to the Traverser API using Traversers.collecting(Collector).

       CUSTOMER.NAME.eq(1).$traverse(Traversers.collecting(Collectors.counting()));
       

      Unlike a Collector, a Traverser is optimised for tree traversal, not stream traversal:

      • Is not designed for parallelism
      • It can Traverser.abort() traversal early when the result can be produced early (e.g. when running Traversers.containing(QueryPart), and a result has been found).
      • It can decide whether to Traverser.recurse() into a QueryPart subtree, or whether that is not necessary or even undesirable, e.g. to prevent entering new subquery scopes.
      • Unlike a Collector, which can use its Collector.accumulator() to accumulate each element only once, in tree traversal, it's desirable to be able to distinguish between accumulating an item Traverser.before() or Traverser.after() recursing into it. This is useful e.g. to wrap each tree node in XML opening and closing tags.
      Specified by:
      $traverse in interface QueryPart
    • $replace

      public final QueryPart $replace(Predicate<? super QueryPart> recurse, Function1<? super QueryPart,​? extends QueryPart> replacement)
      Description copied from interface: QueryPart
      Traverse a QueryPart hierarchy and recursively replace its elements by alternatives.
      Specified by:
      $replace in interface QueryPart
      Parameters:
      recurse - A predicate to decide whether to recurse into a QueryPart subtree.
      replacement - The replacement function. Replacement continues recursively until the function returns null or its input for any given input.
    • equals

      public boolean equals(Object that)
      Description copied from interface: QueryPart
      Check whether this QueryPart can be considered equal to another QueryPart.

      In general, QueryPart equality is defined in terms of QueryPart.toString() equality. In other words, two query parts are considered equal if their rendered SQL (with inlined bind variables) is equal. This means that the two query parts do not necessarily have to be of the same type.

      Some QueryPart implementations may choose to override this behaviour for improved performance, as QueryPart.toString() is an expensive operation, if called many times.

      Specified by:
      equals in interface QueryPart
      Parameters:
      that - The other QueryPart
      Returns:
      Whether the two query parts are equal
    • getName

      public final String getName()
      Description copied from interface: Named
      The unqualified name of this object.
      Specified by:
      getName in interface Named
    • getQualifiedName

      public Name getQualifiedName()
      Description copied from interface: Named
      The qualified name of this object.
      Specified by:
      getQualifiedName in interface Named
    • getUnqualifiedName

      public final Name getUnqualifiedName()
      Description copied from interface: Named
      The unqualified name of this object.
      Specified by:
      getUnqualifiedName in interface Named
    • getComment

      public final String getComment()
      Description copied from interface: Named
      The comment on this object.

      This is the same as calling Named.getCommentPart() and then Comment.getComment().

      Specified by:
      getComment in interface Named
    • getCommentPart

      public final Comment getCommentPart()
      Description copied from interface: Named
      The comment on this object as a QueryPart.
      Specified by:
      getCommentPart in interface Named
    • hashCode

      public int hashCode()
      Description copied from interface: QueryPart
      Generate a hash code from this QueryPart.

      In general, QueryPart hash codes are the same as the hash codes generated from QueryPart.toString(). This guarantees consistent behaviour with QueryPart.equals(Object)

      Some QueryPart implementations may choose to override this behaviour for improved performance, as QueryPart.toString() is an expensive operation, if called many times.

      Specified by:
      hashCode in interface QueryPart
      Returns:
      The QueryPart hash code
    • $name

      public final Name $name()
      Specified by:
      $name in interface Named
    • rendersContent

      public boolean rendersContent(Context<?> ctx)
      Subclasses may override this
      Specified by:
      rendersContent in interface QueryPartInternal
    • declaresFields

      public boolean declaresFields()
      Subclasses may override this
      Specified by:
      declaresFields in interface QueryPartInternal
    • declaresTables

      public boolean declaresTables()
      Subclasses may override this
      Specified by:
      declaresTables in interface QueryPartInternal
    • declaresWindows

      public boolean declaresWindows()
      Subclasses may override this
      Specified by:
      declaresWindows in interface QueryPartInternal
    • declaresCTE

      public boolean declaresCTE()
      Subclasses may override this
      Specified by:
      declaresCTE in interface QueryPartInternal
    • declaresParameters

      @Pro public boolean declaresParameters()
      Subclasses may override this
      Specified by:
      declaresParameters in interface QueryPartInternal
    • generatesCast

      public boolean generatesCast()
      Subclasses may override this
      Specified by:
      generatesCast in interface QueryPartInternal
    • toString

      public String toString()
      Description copied from interface: QueryPart
      Render a SQL string representation of this QueryPart.

      For improved debugging, this renders a SQL string of this QueryPart with inlined bind variables. If this QueryPart is Attachable, then the attached Configuration may be used for rendering the SQL string, including SQLDialect and Settings. Do note that most QueryPart instances are not attached to a Configuration, and thus there is no guarantee that the SQL string will make sense in the context of a specific database.

      Specified by:
      toString in interface QueryPart
      Overrides:
      toString in class Object
      Returns:
      A SQL string representation of this QueryPart
    • create

      @Deprecated protected final DSLContext create()
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • create

      @Deprecated protected final DSLContext create(Configuration configuration)
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • create

      @Deprecated protected final DSLContext create(Context<?> ctx)
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • translate

      protected final DataAccessException translate(String sql, SQLException e)
      Internal convenience method