Interface DbmsDialect

    • Method Detail

      • supportsWithClause

        boolean supportsWithClause()
        Returns true if the dbms supports the with clause, false otherwise.
        Returns:
        Whether the with clause is supported by the dbms
      • supportsNonRecursiveWithClause

        boolean supportsNonRecursiveWithClause()
        Returns true if the dbms supports the non-recursive with clause, false otherwise.
        Returns:
        Whether the non-recursive with clause is supported by the dbms
      • supportsWithClauseHead

        boolean supportsWithClauseHead()
        Returns true if the dbms supports the with clause head for aliasing, false otherwise.
        Returns:
        Whether the with clause head is supported by the dbms
      • getWithClause

        String getWithClause​(boolean recursive)
        Returns the SQL representation for the normal or recursive with clause.
        Parameters:
        recursive - Whether the clause should be able to contain recursive queries or not
        Returns:
        The with clause name
      • appendExtendedSql

        Map<String,​String> appendExtendedSql​(StringBuilder sqlSb,
                                                   DbmsStatementType statementType,
                                                   boolean isSubquery,
                                                   boolean isEmbedded,
                                                   StringBuilder withClause,
                                                   String limit,
                                                   String offset,
                                                   String[] returningColumns,
                                                   Map<DbmsModificationState,​String> includedModificationStates)
        Appends the with clause to the sql string builder.
        Parameters:
        sqlSb - The sql string builder to which the with clause should be append to
        statementType - The type of the statement in the sql string builder
        isSubquery - True if the query in the sql string builder is a subquery, false otherwise
        isEmbedded - True if the query in the sql string builder will be embedded in a clause, false otherwise
        withClause - The with clause which should be appended, or null if none
        limit - The limit for the limit clause, or null if no limit
        offset - The offset for the offset clause, or null if no offset
        returningColumns - The columns which the sql should return or null if none
        includedModificationStates - The modification states of the returned columns for which additional CTEs should be generated mapped to the expected CTE names
        Returns:
        Generated CTEs queries for the requested modification states
      • appendSet

        void appendSet​(StringBuilder sqlSb,
                       SetOperationType setType,
                       boolean isSubquery,
                       List<String> operands,
                       List<? extends OrderByElement> orderByElements,
                       String limit,
                       String offset)
        Connects the given operands with the given set operation and appends that to the sql string builder.
        Parameters:
        sqlSb - The sql string builder to which the connected operands should be appended to
        setType - The type of the set connection
        isSubquery - True if the query in the sql string builder is a subquery, false otherwise
        operands - An list of operand sql strings
        orderByElements - The order by elements of the composite set operation
        limit - The limit for the limit clause, or null if no limit
        offset - The offset for the offset clause, or null if no offset
      • appendOrderByElement

        void appendOrderByElement​(StringBuilder sqlSb,
                                  OrderByElement orderByElement,
                                  String[] aliases)
        Appends the order by element to the SQL builder.
        Parameters:
        sqlSb - The string builder
        orderByElement - The order by element
        aliases - The aliases, may be null
        Since:
        1.4.1
      • createLimitHandler

        DbmsLimitHandler createLimitHandler()
        Creates a new limit handler for an SQL query.
        Returns:
        A new limit handler for a query
        Since:
        1.2.0
      • supportsLimitWithoutOrderBy

        boolean supportsLimitWithoutOrderBy()
        Returns true if the dbms supports a limit without an order by clause, false otherwise.
        Returns:
        Whether a limit without an order by clause is supported by the dbms
        Since:
        1.5.0
      • supportsLimitInQuantifiedPredicateSubquery

        boolean supportsLimitInQuantifiedPredicateSubquery()
        Returns true if the dbms supports limit for a subquery in a quantified predicate, false otherwise.
        Returns:
        Whether limit for a subquery in a quantified predicate is supported by the dbms
        Since:
        1.5.0
      • supportsNestedCorrelations

        boolean supportsNestedCorrelations()
        Returns true if the dbms supports nested correlations, false otherwise.
        Returns:
        Whether nested correlations are supported by the dbms
        Since:
        1.5.0
      • supportsWithClauseInModificationQuery

        boolean supportsWithClauseInModificationQuery()
        Returns true if the dbms supports the with clause in modification queries, false otherwise.
        Returns:
        Whether the with clause is supported in modification queries by the dbms
      • supportsModificationQueryInWithClause

        boolean supportsModificationQueryInWithClause()
        Returns true if the dbms supports modification queries in the with clause, false otherwise.
        Returns:
        Whether modification queries are supported in the with clause by the dbms
      • usesExecuteUpdateWhenWithClauseInModificationQuery

        boolean usesExecuteUpdateWhenWithClauseInModificationQuery()
        Returns true if the dbms wants to use the JDBC executeUpdate method when using the with clause in modification queries, false otherwise.
        Returns:
        Whether the JDBC executeUpdate method should be used when using the with clause is in modification queries
      • supportsReturningGeneratedKeys

        boolean supportsReturningGeneratedKeys()
        Returns true if the dbms supports returning generated keys, false otherwise.
        Returns:
        Whether returning generated keys is supported by the dbms
      • supportsReturningAllGeneratedKeys

        boolean supportsReturningAllGeneratedKeys()
        Returns true if the dbms supports returning all generated keys, false otherwise.
        Returns:
        Whether returning all generated keys is supported by the dbms
      • supportsReturningColumns

        boolean supportsReturningColumns()
        Returns true if the dbms supports returning columns from a modified row, false otherwise.
        Returns:
        Whether returning columns from a modified row is supported by the dbms
      • supportsGroupByExpressionInHavingMatching

        boolean supportsGroupByExpressionInHavingMatching()
        Returns true if the dbms supports matching non-trivial expressions that appear in the group by clause with usages in the having clause.
        Returns:
        Whether expressions from the group by clause are matched and reused in the having clause by the dbms
        Since:
        1.2.0
      • supportsComplexJoinOn

        boolean supportsComplexJoinOn()
        Returns true if the dbms supports complex expressions like subqueries in the join on clause, false otherwise.
        Returns:
        Whether complex join on clauses are supported by the dbms
        Since:
        1.2.0
      • supportsUnion

        boolean supportsUnion​(boolean all)
        Returns true if the dbms supports the set operation UNION, false otherwise.
        Parameters:
        all - True if the non-distinct ALL operation should be checked, false otherwise.
        Returns:
        Whether UNION is supported by the dbms
        Since:
        1.1.0
      • supportsIntersect

        boolean supportsIntersect​(boolean all)
        Returns true if the dbms supports the set operation INTERSECT, false otherwise.
        Parameters:
        all - True if the non-distinct ALL operation should be checked, false otherwise.
        Returns:
        Whether INTERSECT is supported by the dbms
        Since:
        1.1.0
      • supportsExcept

        boolean supportsExcept​(boolean all)
        Returns true if the dbms supports the set operation EXCEPT, false otherwise.
        Parameters:
        all - True if the non-distinct ALL operation should be checked, false otherwise.
        Returns:
        Whether EXCEPT is supported by the dbms
        Since:
        1.1.0
      • supportsJoinsInRecursiveCte

        boolean supportsJoinsInRecursiveCte()
        Returns true if the dbms supports joins in the recursive part of a CTE, false otherwise.
        Returns:
        Whether joins are supported in recursive CTEs by the dbms
        Since:
        1.2.0
      • supportsAnsiRowValueConstructor

        boolean supportsAnsiRowValueConstructor()
        Returns true if the dbms supports the ANSI row value constructor syntax, false otherwise.
        Returns:
        Whether ANSI row value constructor syntax is supported by the dbms
        Since:
        1.5.0
      • supportsRowValueConstructor

        boolean supportsRowValueConstructor()
        Returns true if the dbms supports row value constructor syntax, false otherwise.
        Returns:
        Whether row value constructor syntax is supported by the dbms
        Since:
        1.2.0
      • supportsFullRowValueComparison

        boolean supportsFullRowValueComparison()
        Returns true if the dbms supports all <, <=, >, >=, =, <> comparison operations for row values. Note that some DBMS only support = and <> operators.
        Returns:
        Whether full row value comparison operations are supported by the dbms
        Since:
        1.2.0
      • supportsWindowFunctions

        boolean supportsWindowFunctions()
        Returns true if the dbms supports window functions.
        Returns:
        Whether the dbms supports window functions
        Since:
        1.4.0
      • supportsFilterClause

        boolean supportsFilterClause()
        Returns true if the dbms supports the FILTER clause on aggregate functions.
        Returns:
        Whether the dbms supports the FILTER clause on aggregate functions
        Since:
        1.4.0
      • supportsNullPrecedence

        boolean supportsNullPrecedence()
        Returns true if the dbms supports null precedence for ORDER BY clause.
        Returns:
        whether the dbms supports null precedence for ORDER BY clause
        Since:
        1.4.0
      • supportsWindowNullPrecedence

        boolean supportsWindowNullPrecedence()
        Returns true if the dbms supports null precedence for order clauses in the WINDOW clause.
        Returns:
        whether the dbms supports null precedence for order clauses in the WINDOW clause
        Since:
        1.4.0
      • supportsBooleanAggregation

        boolean supportsBooleanAggregation()
        Returns true if the dbms supports boolean aggregation through EVERY / SOME / ANY / BOOL_AND / BOOL_OR.
        Returns:
        whether the dbms supports boolean aggregation through EVERY / SOME / ANY / BOOL_AND / BOOL_OR
        Since:
        1.4.0
      • isNullSmallest

        boolean isNullSmallest()
        Returns true if the dbms treats null as the smallest value, false is highest.
        Returns:
        whether the dbms treats null as the smallest value, false if highest
        Since:
        1.4.0
      • requiresNullCast

        boolean requiresNullCast()
        Returns true if the dbms requires a null literal to be casted.
        Returns:
        whether the dbms requires a null literal to be casted
        Since:
        1.4.1
      • getLateralStyle

        LateralStyle getLateralStyle()
        Returns the lateral style that is supported by the dbms.
        Returns:
        the lateral style that is supported by the dbms
        Since:
        1.4.1
      • supportsArbitraryLengthMultiset

        boolean supportsArbitraryLengthMultiset()
        Returns true if the multiset implementation for the dbms supports exists and supports arbitrary length.
        Returns:
        whether the multiset implementation for the dbms supports exists and supports arbitrary length
        Since:
        1.5.0
      • getSqlType

        String getSqlType​(Class<?> castType)
        Returns the sql type for the java class type for usage in cast expressions.
        Parameters:
        castType - The java class type
        Returns:
        The sql type
        Since:
        1.2.0
      • getValuesStrategy

        ValuesStrategy getValuesStrategy()
        Returns the strategy to use for values generation.
        Returns:
        The VALUES strategy
        Since:
        1.2.0
      • needsCastParameters

        boolean needsCastParameters()
        Returns whether parameters need to be casted if occurring in an untyped context like e.g. VALUES clause.
        Returns:
        True if casting is required, otherwise false
        Since:
        1.2.0
      • getDummyTable

        String getDummyTable()
        Returns the name of a dummy table like DUAL in Oracle or null if none is required.
        Returns:
        The dummy table name or null
        Since:
        1.2.0
      • cast

        String cast​(String expression,
                    String sqlType)
        Returns the cast expression for the given expression to the given sql type.
        Parameters:
        expression - The expression to cast
        sqlType - The type to which to cast
        Returns:
        The cast expression
        Since:
        1.2.0
      • needsReturningSqlTypes

        boolean needsReturningSqlTypes()
        Returns whether sql types for the returning columns need to be provided.
        Returns:
        True if sql types are required, otherwise false
        Since:
        1.2.0
      • getPrepareFlags

        int getPrepareFlags()
        TODO: documentation.
        Returns:
        The prepare flags
        Since:
        1.2.0
      • prepare

        PreparedStatement prepare​(PreparedStatement ps,
                                  int[] returningSqlTypes)
                           throws SQLException
        TODO: documentation.
        Parameters:
        ps - TODO: documentation
        returningSqlTypes - TODO: documentation
        Returns:
        The prepared statement
        Throws:
        SQLException - When preparing the statement fails
        Since:
        1.2.0
      • extractReturningResult

        ResultSet extractReturningResult​(PreparedStatement ps)
                                  throws SQLException
        TODO: documentation.
        Parameters:
        ps - TODO: documentation
        Returns:
        The result set for the returning clause
        Throws:
        SQLException - When extracting from the statement fails
        Since:
        1.2.0