Module org.jooq
Package org.jooq

Interface Context<C extends Context<C>>

All Superinterfaces:
Scope
All Known Subinterfaces:
BindContext, RenderContext

public interface Context<C extends Context<C>> extends Scope
A context type that is used for rendering SQL or for binding.
Author:
Lukas Eder
See Also:
  • Method Details

    • visit

      @NotNull C visit(QueryPart part) throws DataAccessException
      Visit a QueryPart in the current Context.

      This method is called by certain QueryPart implementations to recursively visit component QueryParts.

      Parameters:
      part - The component QueryPart
      Throws:
      DataAccessException - If something went wrong while visiting the component QueryPart, e.g. when binding a variable
    • visitSubquery

      @NotNull C visitSubquery(QueryPart part) throws DataAccessException
      Visit a QueryPart as a subquery in the current Context.

      This method is called by certain QueryPart implementations to recursively visit component QueryParts.

      Parameters:
      part - The component QueryPart
      Throws:
      DataAccessException - If something went wrong while visiting the component QueryPart, e.g. when binding a variable
    • start

      @NotNull C start(Clause clause)
      TODO [#2667] Properties of these methods: - A clause is always started / ended, even if it isn't rendered or if it's empty!
    • end

      @NotNull C end(Clause clause)
    • data

      @NotNull C data(Object key, Object value, Consumer<? super C> consumer)
      Set a data value for a key for the scope of a Consumer.
    • declareFields

      boolean declareFields()
      Whether the current context is rendering a SQL field declaration (e.g. a Field in the SELECT clause of the query).
    • declareFields

      @NotNull C declareFields(boolean declareFields)
      Set the new context value for declareFields().
    • declareFields

      @NotNull C declareFields(boolean declareFields, Consumer<? super C> consumer)
      Set the new context value for declareFields() for the scope of a Consumer.
    • declareTables

      boolean declareTables()
      Whether the current context is rendering a SQL table declaration (e.g. a Table in the FROM or JOIN clause of the query).
    • declareTables

      @NotNull C declareTables(boolean declareTables)
      Set the new context value for declareTables().
    • declareTables

      @NotNull C declareTables(boolean declareTables, Consumer<? super C> consumer)
      Set the new context value for declareTables() for the scope of a Consumer.
    • declareAliases

      boolean declareAliases()
      Whether the current context is rendering a SQL alias declarations in declareTables() or declareFields() sections.
    • declareAliases

      @NotNull C declareAliases(boolean declareTables)
      Whether the current context is rendering a SQL alias declarations in declareTables() or declareFields() sections.
    • declareAliases

      @NotNull C declareAliases(boolean declareTables, Consumer<? super C> consumer)
      Whether the current context is rendering a SQL alias declarations in declareTables() or declareFields() sections for the scope of a Consumer.
    • declareWindows

      boolean declareWindows()
      Whether the current context is rendering a SQL window declaration (e.g. a WindowDefinition in the WINDOW clause of the query).
    • declareWindows

      @NotNull C declareWindows(boolean declareWindows)
      Set the new context value for declareWindows().
    • declareWindows

      @NotNull C declareWindows(boolean declareWindows, Consumer<? super C> consumer)
      Set the new context value for declareWindows() for the scope of a Consumer.
    • declareParameters

      @Pro boolean declareParameters()
      Whether the current context is rendering a procedure or function parameter declaration.
    • declareParameters

      @Pro @NotNull C declareParameters(boolean declareParameters)
      Set the new context value for declareParameters().
    • declareParameters

      @Pro @NotNull C declareParameters(boolean declareParameters, Consumer<? super C> consumer)
      Set the new context value for declareParameters() for the scope of a Consumer.
    • declareCTE

      boolean declareCTE()
      Whether the current context is rendering a common table expression (e.g. a CommonTableExpression in the WITH clause of the query).
    • declareCTE

      @NotNull C declareCTE(boolean declareCTE)
      Set the new context value for declareCTE().
    • declareCTE

      @NotNull C declareCTE(boolean declareCTE, Consumer<? super C> consumer)
      Set the new context value for declareCTE() for the scope of a Consumer.
    • subquery

      boolean subquery()
      Whether the current context is rendering a sub-query (nested query).
    • subquery

      @NotNull C subquery(boolean subquery)
      Set the new context value for subquery().
    • subqueryLevel

      int subqueryLevel()
      Which level of subqueries we're currently in, starting with 0 for the top level query.
    • scopeLevel

      int scopeLevel()
      Which level of scopes we're currently in, starting with 0 for the top scope.
    • scopeStart

      @NotNull C scopeStart()
      Start a new scope.
    • scopeMarkStart

      @NotNull C scopeMarkStart(QueryPart part)
      Mark the beginning of a scoped query part.
    • scopeRegister

      @NotNull C scopeRegister(QueryPart part)
      Register a "special" query part in the scope, reusing the object from a higher scope, if available.
    • scopeRegisterAndMark

      @NotNull C scopeRegisterAndMark(QueryPart part, boolean forceNew)
    • scopeRegister

      @NotNull C scopeRegister(QueryPart part, boolean forceNew)
      Register a "special" query part in the scope, allowing to force registering the object in the new scope, if a higher scope already has the object.

      [#10992] This is necessary to allow for hiding identifiers from nested scopes.

    • scopeRegister

      @NotNull C scopeRegister(QueryPart part, boolean forceNew, QueryPart mapped)
      Register a "special" query part in the scope, allowing to force registering the object in the new scope, if a higher scope already has the object, as well as providing a mapped part to map the original part to.

      [#10716] When wrapping parts of a query in a derived table, additional table mappings may be needed.

    • scopeMapping

      @Nullable @Nullable QueryPart scopeMapping(QueryPart part)
      Retrieve the registered mapping for a query part in the current scope, or null if no such mapping exists.
    • scopeMarkEnd

      @NotNull C scopeMarkEnd(QueryPart part)
      Mark the end of a scoped query part.
    • scopeEnd

      @NotNull C scopeEnd()
      End a previous SELECT scope.
    • stringLiteral

      boolean stringLiteral()
      whether the current context is rendering a string literal.
    • stringLiteral

      @NotNull C stringLiteral(boolean stringLiteral)
      Set the new context value for stringLiteral().
    • nextIndex

      int nextIndex()
      Get the next bind index. This increments an internal counter. This is relevant for two use-cases:
    • peekIndex

      int peekIndex()
      Peek the next bind index. This won't increment the internal counter, unlike nextIndex().
    • skipUpdateCount

      @NotNull C skipUpdateCount()
      Skip an additional update count produced by this query.
    • skipUpdateCounts

      @NotNull C skipUpdateCounts(int skip)
      Skip a number of additional update counts produced by this query.
    • skipUpdateCounts

      int skipUpdateCounts()
      The number of update counts to be skipped by this query.
    • statement

      @Nullable @Nullable PreparedStatement statement()
      Retrieve the context's underlying PreparedStatement if available, or null if this traversal does not operate on a PreparedStatement.
    • bindValue

      @NotNull @NotNull BindContext bindValue(Object value, Field<?> field) throws DataAccessException
      Bind a value using a specific type. This will also increment the internal counter.
      Throws:
      DataAccessException - If something went wrong while binding a variable
    • peekAlias

      @NotNull @NotNull String peekAlias()
      Peek the next alias that will be generated by nextAlias().
    • nextAlias

      @NotNull @NotNull String nextAlias()
      Return a new alias that is unique for the scope of one query. These aliases are sometimes needed when unaliased projections are defined in subqueries, which can lead to syntax errors.
    • render

      @NotNull @NotNull String render()
      Render the context's underlying SQL statement.
    • render

      @NotNull @NotNull String render(QueryPart part)
      Render a query part in a new context derived from this one. The rendered SQL will not be appended to this context.
    • keyword

      @NotNull @Deprecated(forRemoval=true, since="3.10") C keyword(String keyword)
      Deprecated, for removal: This API element is subject to removal in a future version.
      - 3.10.0 - [#4990] - Use DSL.keyword(String) instead.
      Append a SQL keyword to the context's contained StringBuilder.

      Use this to have your SQL keyword rendered in RenderKeywordCase.

    • sql

      @NotNull C sql(String sql)
      Append some SQL to the context's contained StringBuilder.
    • sql

      @NotNull C sql(String sql, boolean literal)
      Append some SQL to the context's contained StringBuilder.

      Set literal = true to indicate that the RenderContext shall not format the argument SQL.

    • sqlIndentStart

      @NotNull C sqlIndentStart(String sql)
      Append some SQL to the context's contained StringBuilder, followed by the usual calls to formatIndentStart() and formatNewLine().
    • sqlIndentEnd

      @NotNull C sqlIndentEnd(String sql)
      Append some SQL to the context's contained StringBuilder preceded by the usual calls to formatIndentEnd() and formatNewLine().
    • sqlIndentStart

      @NotNull C sqlIndentStart()
      Append some SQL to the context's contained StringBuilder, followed by the usual calls to formatIndentStart() and formatNewLine().
    • sqlIndentEnd

      @NotNull C sqlIndentEnd()
      Append some SQL to the context's contained StringBuilder preceded by the usual calls to formatIndentEnd() and formatNewLine().
    • sql

      @NotNull C sql(char sql)
      Append some SQL to the context's contained StringBuilder.
    • sqlIndentStart

      @NotNull C sqlIndentStart(char sql)
      Append some SQL to the context's contained StringBuilder, followed by the usual calls to formatIndentStart() and formatNewLine().
    • sqlIndentEnd

      @NotNull C sqlIndentEnd(char sql)
      Append some SQL to the context's contained StringBuilder preceded by the usual calls to formatIndentEnd() and formatNewLine().
    • sql

      @NotNull C sql(int sql)
      Append some SQL to the context's contained StringBuilder.
    • sql

      @NotNull C sql(long sql)
      Append some SQL to the context's contained StringBuilder.
    • floatFormat

      DecimalFormat floatFormat()
      A formatter to produce scientific notation for Float types.
    • sql

      @NotNull C sql(float sql)
      Append some SQL to the context's contained StringBuilder.
    • doubleFormat

      DecimalFormat doubleFormat()
      A formatter to produce scientific notation for Double types.
    • sql

      @NotNull C sql(double sql)
      Append some SQL to the context's contained StringBuilder.
    • format

      @NotNull C format(boolean format)
      Override the value of Settings.isRenderFormatted().
    • format

      boolean format()
    • formatNewLine

      @NotNull C formatNewLine()
      Render a new line character (only if Settings.isRenderFormatted() is set to true).
    • formatNewLineAfterPrintMargin

      @NotNull C formatNewLineAfterPrintMargin()
      Render a new line character (only if Settings.isRenderFormatted() is set to true, and the formatPrintMargin(int) has been exceeded).
    • formatSeparator

      @NotNull C formatSeparator()
      Render a new line character (only if Settings.isRenderFormatted() is set to true), or a whitespace separator character otherwise.
    • separatorRequired

      @NotNull C separatorRequired(boolean separatorRequired)
      Specify that a separator will be required before the next visit(QueryPart) call, but leave the decision whether to generate a formatSeparator() or just a whitespace to that next QueryPart.
    • separatorRequired

      boolean separatorRequired()
      Whether some sort of separator is required before rendering the next QueryPart.
    • formatIndentStart

      @NotNull C formatIndentStart()
      Start indenting subsequent SQL by one level (two characters), if Settings.isRenderFormatted() is set to true.

      This is the same as calling formatIndentStart(int) with a parameter of 2

    • formatIndentStart

      @NotNull C formatIndentStart(int indent)
      Start indenting subsequent SQL by a number of characters, if Settings.isRenderFormatted() is set to true.
    • formatIndentLockStart

      @Deprecated(forRemoval=true, since="3.14") @NotNull C formatIndentLockStart()
      Deprecated, for removal: This API element is subject to removal in a future version.
      - [#10317] - 3.14.0 - Do not reuse this method. It will be removed without replacement.
      Start indenting subsequent SQL at the same level as the current line, if Settings.isRenderFormatted() is set to true.
    • formatIndentEnd

      @NotNull C formatIndentEnd()
      Stop indenting subsequent SQL by one level (two characters), if Settings.isRenderFormatted() is set to true.

      This is the same as calling formatIndentEnd(int) with a parameter of 2

    • formatIndentEnd

      @NotNull C formatIndentEnd(int indent)
      Stop indenting subsequent SQL by a number of characters, if Settings.isRenderFormatted() is set to true.
    • formatIndentLockEnd

      @Deprecated(forRemoval=true, since="3.14") @NotNull C formatIndentLockEnd()
      Deprecated, for removal: This API element is subject to removal in a future version.
      - [#10317] - 3.14.0 - Do not reuse this method. It will be removed without replacement.
      Stop indenting subsequent SQL at the same level as the current line, if Settings.isRenderFormatted() is set to true.
    • formatPrintMargin

      @NotNull C formatPrintMargin(int margin)
      Set a print margin that will be applied to formatted SQL, if Settings.isRenderFormatted() is set to true.

      The default print margin is 80. Setting this to zero or a negative value means that no print margin will be applied.

      The print margin is applied to any of these QueryParts:

    • literal

      @NotNull @Deprecated(forRemoval=true, since="3.10") C literal(String literal)
      Deprecated, for removal: This API element is subject to removal in a future version.
      - 3.10.0 - [#4990] - Use any of DSL.name(String), DSL.quotedName(String) or DSL.unquotedName(String) instead.
      Append some literal to the context's contained StringBuilder.
    • quote

      boolean quote()
      Whether Name parts (and literal(String)) should be quoted.
    • quote

      @NotNull C quote(boolean quote)
      Set the new context value for quote().
    • quote

      @NotNull C quote(boolean quote, Consumer<? super C> consumer)
      Set the new context value for quote() for the scope of a Consumer.
    • qualify

      boolean qualify()
      Whether query parts should render qualified names or not.
    • qualify

      @NotNull C qualify(boolean qualify)
      Set the new context value for qualify().

      This is the same as qualifySchema(boolean).

    • qualify

      @NotNull C qualify(boolean qualify, Consumer<? super C> consumer)
      Set the new context value for qualify() for the scope of a Consumer.
    • qualifySchema

      boolean qualifySchema()
      Whether query parts should render qualified names or not.

      This is the same as qualifySchema().

    • qualifySchema

      @NotNull C qualifySchema(boolean qualifySchema)
      Set the new context value for qualifySchema().
    • qualifySchema

      @NotNull C qualifySchema(boolean qualifySchema, Consumer<? super C> consumer)
      Set the new context value for qualifySchema() for the scope of a Consumer.
    • qualifyCatalog

      boolean qualifyCatalog()
      Whether query parts should render qualified names or not.

      The catalog can only be qualified when qualifySchema() is true as well.

    • qualifyCatalog

      @NotNull C qualifyCatalog(boolean qualifyCatalog)
      Set the new context value for qualifyCatalog().

      The catalog can only be qualified when qualifySchema() is true as well.

    • qualifyCatalog

      @NotNull C qualifyCatalog(boolean qualifyCatalog, Consumer<? super C> consumer)
      Set the new context value for qualifyCatalog() for the scope of a Consumer.

      The catalog can only be qualified when qualifySchema() is true as well.

    • paramType

      @NotNull @NotNull ParamType paramType()
      Specify, how bind values should be rendered.

    • paramType

      @NotNull C paramType(ParamType paramType)
      Set the new context value for paramType().
    • visit

      @NotNull C visit(QueryPart part, ParamType paramType)
      Visit a query part with a given value for paramType().
    • paramTypeIf

      @NotNull C paramTypeIf(ParamType paramType, boolean condition)
      Set the new context value for paramType(), if a condition is true.
    • paramType

      @NotNull C paramType(ParamType paramType, Consumer<? super C> runnable)
      Set the new context value for paramType() for the scope of a Consumer.
    • paramTypeIf

      @NotNull C paramTypeIf(ParamType paramType, boolean condition, Consumer<? super C> runnable)
      Set the new context value for paramType() for the scope of a Consumer, if a condition is true.
    • languageContext

      @NotNull @NotNull LanguageContext languageContext()
      The current language context.
    • languageContext

      @NotNull C languageContext(LanguageContext languageContext)
      Set the new language context for languageContext()
    • languageContext

      @NotNull C languageContext(LanguageContext languageContext, Consumer<? super C> consumer)
      Set the new language context for languageContext() for the scope of a Consumer.
    • languageContextIf

      @NotNull C languageContextIf(LanguageContext languageContext, boolean condition)
      Set the new language context for languageContext(), if a condition is true.
    • castMode

      @NotNull @NotNull RenderContext.CastMode castMode()
      The currently applied cast mode for bind values.
    • castMode

      @NotNull C castMode(RenderContext.CastMode mode)
      Set the new cast mode for castMode().
    • castMode

      @NotNull C castMode(RenderContext.CastMode mode, Consumer<? super C> consumer)
      Set the new cast mode for castMode() for the scope of a Consumer.
    • castModeIf

      @NotNull C castModeIf(RenderContext.CastMode mode, boolean condition)
      Set the new cast mode for castMode(), if a condition is true.