Class DB2LegacyDialect

java.lang.Object
org.hibernate.dialect.Dialect
org.hibernate.community.dialect.DB2LegacyDialect
All Implemented Interfaces:
org.hibernate.boot.model.FunctionContributor, org.hibernate.boot.model.TypeContributor, org.hibernate.exception.spi.ConversionContext
Direct Known Subclasses:
DB2iLegacyDialect, DB2zLegacyDialect

public class DB2LegacyDialect extends org.hibernate.dialect.Dialect
A SQL dialect for DB2.
  • Constructor Details

    • DB2LegacyDialect

      public DB2LegacyDialect()
    • DB2LegacyDialect

      public DB2LegacyDialect(org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo info)
    • DB2LegacyDialect

      public DB2LegacyDialect(org.hibernate.dialect.DatabaseVersion version)
  • Method Details

    • determineDatabaseVersion

      public org.hibernate.dialect.DatabaseVersion determineDatabaseVersion(org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo info)
      Overrides:
      determineDatabaseVersion in class org.hibernate.dialect.Dialect
    • buildLockingSupport

      protected org.hibernate.dialect.lock.spi.LockingSupport buildLockingSupport()
    • registerDefaultKeywords

      protected void registerDefaultKeywords()
      Overrides:
      registerDefaultKeywords in class org.hibernate.dialect.Dialect
    • getDB2Version

      public org.hibernate.dialect.DatabaseVersion getDB2Version()
      DB2 LUW Version
    • getTableExporter

      public org.hibernate.tool.schema.spi.Exporter<org.hibernate.mapping.Table> getTableExporter()
      Overrides:
      getTableExporter in class org.hibernate.dialect.Dialect
    • getDefaultStatementBatchSize

      public int getDefaultStatementBatchSize()
      Overrides:
      getDefaultStatementBatchSize in class org.hibernate.dialect.Dialect
    • getPreferredSqlTypeCodeForBoolean

      public int getPreferredSqlTypeCodeForBoolean()
      Overrides:
      getPreferredSqlTypeCodeForBoolean in class org.hibernate.dialect.Dialect
    • columnType

      protected String columnType(int sqlTypeCode)
      Overrides:
      columnType in class org.hibernate.dialect.Dialect
    • registerColumnTypes

      protected void registerColumnTypes(org.hibernate.boot.model.TypeContributions typeContributions, org.hibernate.service.ServiceRegistry serviceRegistry)
      Overrides:
      registerColumnTypes in class org.hibernate.dialect.Dialect
    • createUniqueDelegate

      protected org.hibernate.dialect.unique.UniqueDelegate createUniqueDelegate()
    • getMaxVarcharLength

      public int getMaxVarcharLength()
      Overrides:
      getMaxVarcharLength in class org.hibernate.dialect.Dialect
    • getDefaultDecimalPrecision

      public int getDefaultDecimalPrecision()
      Overrides:
      getDefaultDecimalPrecision in class org.hibernate.dialect.Dialect
    • supportsPredicateAsExpression

      protected boolean supportsPredicateAsExpression()
      Overrides:
      supportsPredicateAsExpression in class org.hibernate.dialect.Dialect
    • supportsDistinctFromPredicate

      public boolean supportsDistinctFromPredicate()
      Overrides:
      supportsDistinctFromPredicate in class org.hibernate.dialect.Dialect
    • initializeFunctionRegistry

      public void initializeFunctionRegistry(org.hibernate.boot.model.FunctionContributions functionContributions)
      Overrides:
      initializeFunctionRegistry in class org.hibernate.dialect.Dialect
    • getMaximumSeriesSize

      protected int getMaximumSeriesSize()
      DB2 doesn't support the generate_series function or lateral recursive CTEs, so it has to be emulated with a top level recursive CTE which requires an upper bound on the amount of elements that the series can return.
    • getPreferredSqlTypeCodeForArray

      public int getPreferredSqlTypeCodeForArray()
      Overrides:
      getPreferredSqlTypeCodeForArray in class org.hibernate.dialect.Dialect
    • getDropSchemaCommand

      public String[] getDropSchemaCommand(String schemaName)
      Overrides:
      getDropSchemaCommand in class org.hibernate.dialect.Dialect
    • getFractionalSecondPrecisionInNanos

      public long getFractionalSecondPrecisionInNanos()
      Since we're using seconds_between() and add_seconds(), it makes sense to use seconds as the "native" precision.
      Overrides:
      getFractionalSecondPrecisionInNanos in class org.hibernate.dialect.Dialect
    • timestampdiffPattern

      public String timestampdiffPattern(org.hibernate.query.common.TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType)
      Overrides:
      timestampdiffPattern in class org.hibernate.dialect.Dialect
    • timestampdiffPatternV10

      public static String timestampdiffPatternV10(org.hibernate.query.common.TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType)
    • timestampaddPattern

      public String timestampaddPattern(org.hibernate.query.common.TemporalUnit unit, TemporalType temporalType, org.hibernate.query.sqm.IntervalType intervalType)
      Overrides:
      timestampaddPattern in class org.hibernate.dialect.Dialect
    • appendDateTimeLiteral

      public void appendDateTimeLiteral(org.hibernate.sql.ast.spi.SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone)
      Overrides:
      appendDateTimeLiteral in class org.hibernate.dialect.Dialect
    • appendDateTimeLiteral

      public void appendDateTimeLiteral(org.hibernate.sql.ast.spi.SqlAppender appender, Date date, TemporalType precision, TimeZone jdbcTimeZone)
      Overrides:
      appendDateTimeLiteral in class org.hibernate.dialect.Dialect
    • appendDateTimeLiteral

      public void appendDateTimeLiteral(org.hibernate.sql.ast.spi.SqlAppender appender, Calendar calendar, TemporalType precision, TimeZone jdbcTimeZone)
      Overrides:
      appendDateTimeLiteral in class org.hibernate.dialect.Dialect
    • getLowercaseFunction

      public String getLowercaseFunction()
      Overrides:
      getLowercaseFunction in class org.hibernate.dialect.Dialect
    • dropConstraints

      public boolean dropConstraints()
      Overrides:
      dropConstraints in class org.hibernate.dialect.Dialect
    • getCreateIndexTail

      public String getCreateIndexTail(boolean unique, List<org.hibernate.mapping.Column> columns)
      Overrides:
      getCreateIndexTail in class org.hibernate.dialect.Dialect
    • getSequenceSupport

      public org.hibernate.dialect.sequence.SequenceSupport getSequenceSupport()
      Overrides:
      getSequenceSupport in class org.hibernate.dialect.Dialect
    • getQuerySequencesString

      public String getQuerySequencesString()
      Overrides:
      getQuerySequencesString in class org.hibernate.dialect.Dialect
    • getSequenceInformationExtractor

      public org.hibernate.tool.schema.extract.spi.SequenceInformationExtractor getSequenceInformationExtractor()
      Overrides:
      getSequenceInformationExtractor in class org.hibernate.dialect.Dialect
    • getForUpdateString

      public String getForUpdateString()
      Overrides:
      getForUpdateString in class org.hibernate.dialect.Dialect
    • getLockingSupport

      public org.hibernate.dialect.lock.spi.LockingSupport getLockingSupport()
      Overrides:
      getLockingSupport in class org.hibernate.dialect.Dialect
    • getForUpdateSkipLockedString

      public String getForUpdateSkipLockedString()
      Overrides:
      getForUpdateSkipLockedString in class org.hibernate.dialect.Dialect
    • getForUpdateSkipLockedString

      public String getForUpdateSkipLockedString(String aliases)
      Overrides:
      getForUpdateSkipLockedString in class org.hibernate.dialect.Dialect
    • getWriteLockString

      public String getWriteLockString(Timeout timeout)
      Overrides:
      getWriteLockString in class org.hibernate.dialect.Dialect
    • getReadLockString

      public String getReadLockString(Timeout timeout)
      Overrides:
      getReadLockString in class org.hibernate.dialect.Dialect
    • getWriteLockString

      public String getWriteLockString(int timeout)
      Overrides:
      getWriteLockString in class org.hibernate.dialect.Dialect
    • getReadLockString

      public String getReadLockString(int timeout)
      Overrides:
      getReadLockString in class org.hibernate.dialect.Dialect
    • supportsExistsInSelect

      public boolean supportsExistsInSelect()
      Overrides:
      supportsExistsInSelect in class org.hibernate.dialect.Dialect
    • requiresCastForConcatenatingNonStrings

      public boolean requiresCastForConcatenatingNonStrings()
      Overrides:
      requiresCastForConcatenatingNonStrings in class org.hibernate.dialect.Dialect
    • getSelectClauseNullString

      public String getSelectClauseNullString(int sqlType, org.hibernate.type.spi.TypeConfiguration typeConfiguration)
      Overrides:
      getSelectClauseNullString in class org.hibernate.dialect.Dialect
    • supportsRefCursors

      public Boolean supportsRefCursors()
      Overrides:
      supportsRefCursors in class org.hibernate.dialect.Dialect
    • registerResultSetOutParameter

      public int registerResultSetOutParameter(CallableStatement statement, int col) throws SQLException
      Overrides:
      registerResultSetOutParameter in class org.hibernate.dialect.Dialect
      Throws:
      SQLException
    • registerResultSetOutParameter

      public int registerResultSetOutParameter(CallableStatement statement, String name) throws SQLException
      Overrides:
      registerResultSetOutParameter in class org.hibernate.dialect.Dialect
      Throws:
      SQLException
    • getResultSet

      public ResultSet getResultSet(CallableStatement ps) throws SQLException
      Overrides:
      getResultSet in class org.hibernate.dialect.Dialect
      Throws:
      SQLException
    • getResultSet

      public ResultSet getResultSet(CallableStatement statement, int position) throws SQLException
      Overrides:
      getResultSet in class org.hibernate.dialect.Dialect
      Throws:
      SQLException
    • getResultSet

      public ResultSet getResultSet(CallableStatement statement, String name) throws SQLException
      Overrides:
      getResultSet in class org.hibernate.dialect.Dialect
      Throws:
      SQLException
    • supportsCommentOn

      public boolean supportsCommentOn()
      Overrides:
      supportsCommentOn in class org.hibernate.dialect.Dialect
    • getAlterColumnTypeString

      public String getAlterColumnTypeString(String columnName, String columnType, String columnDefinition)
      Overrides:
      getAlterColumnTypeString in class org.hibernate.dialect.Dialect
    • supportsAlterColumnType

      public boolean supportsAlterColumnType()
      Overrides:
      supportsAlterColumnType in class org.hibernate.dialect.Dialect
    • supportsIfExistsBeforeTableName

      public boolean supportsIfExistsBeforeTableName()
      Overrides:
      supportsIfExistsBeforeTableName in class org.hibernate.dialect.Dialect
    • getFallbackSqmMutationStrategy

      public org.hibernate.query.sqm.mutation.spi.SqmMultiTableMutationStrategy getFallbackSqmMutationStrategy(org.hibernate.metamodel.mapping.EntityMappingType rootEntityDescriptor, org.hibernate.metamodel.spi.RuntimeModelCreationContext runtimeModelCreationContext)
      Overrides:
      getFallbackSqmMutationStrategy in class org.hibernate.dialect.Dialect
    • supportsIsTrue

      public boolean supportsIsTrue()
      Overrides:
      supportsIsTrue in class org.hibernate.dialect.Dialect
    • getFallbackSqmInsertStrategy

      public org.hibernate.query.sqm.mutation.spi.SqmMultiTableInsertStrategy getFallbackSqmInsertStrategy(org.hibernate.metamodel.mapping.EntityMappingType rootEntityDescriptor, org.hibernate.metamodel.spi.RuntimeModelCreationContext runtimeModelCreationContext)
      Overrides:
      getFallbackSqmInsertStrategy in class org.hibernate.dialect.Dialect
    • getGlobalTemporaryTableStrategy

      public @Nullable org.hibernate.dialect.temptable.TemporaryTableStrategy getGlobalTemporaryTableStrategy()
      Overrides:
      getGlobalTemporaryTableStrategy in class org.hibernate.dialect.Dialect
    • getLocalTemporaryTableStrategy

      public @Nullable org.hibernate.dialect.temptable.TemporaryTableStrategy getLocalTemporaryTableStrategy()
      Overrides:
      getLocalTemporaryTableStrategy in class org.hibernate.dialect.Dialect
    • supportsCurrentTimestampSelection

      public boolean supportsCurrentTimestampSelection()
      Overrides:
      supportsCurrentTimestampSelection in class org.hibernate.dialect.Dialect
    • getCurrentTimestampSelectString

      public String getCurrentTimestampSelectString()
      Overrides:
      getCurrentTimestampSelectString in class org.hibernate.dialect.Dialect
    • doesRoundTemporalOnOverflow

      public boolean doesRoundTemporalOnOverflow()
      Overrides:
      doesRoundTemporalOnOverflow in class org.hibernate.dialect.Dialect
    • isCurrentTimestampSelectStringCallable

      public boolean isCurrentTimestampSelectStringCallable()
      Overrides:
      isCurrentTimestampSelectStringCallable in class org.hibernate.dialect.Dialect
    • supportsResultSetPositionQueryMethodsOnForwardOnlyCursor

      public boolean supportsResultSetPositionQueryMethodsOnForwardOnlyCursor()
      Overrides:
      supportsResultSetPositionQueryMethodsOnForwardOnlyCursor in class org.hibernate.dialect.Dialect
    • supportsLobValueChangePropagation

      public boolean supportsLobValueChangePropagation()
      Overrides:
      supportsLobValueChangePropagation in class org.hibernate.dialect.Dialect
    • useConnectionToCreateLob

      public boolean useConnectionToCreateLob()
      Overrides:
      useConnectionToCreateLob in class org.hibernate.dialect.Dialect
    • supportsNationalizedMethods

      public boolean supportsNationalizedMethods()
      Overrides:
      supportsNationalizedMethods in class org.hibernate.dialect.Dialect
    • doesReadCommittedCauseWritersToBlockReaders

      public boolean doesReadCommittedCauseWritersToBlockReaders()
      Overrides:
      doesReadCommittedCauseWritersToBlockReaders in class org.hibernate.dialect.Dialect
    • supportsTupleDistinctCounts

      public boolean supportsTupleDistinctCounts()
      Overrides:
      supportsTupleDistinctCounts in class org.hibernate.dialect.Dialect
    • contributeTypes

      public void contributeTypes(org.hibernate.boot.model.TypeContributions typeContributions, org.hibernate.service.ServiceRegistry serviceRegistry)
      Overrides:
      contributeTypes in class org.hibernate.dialect.Dialect
    • getAggregateSupport

      public org.hibernate.dialect.aggregate.AggregateSupport getAggregateSupport()
      Overrides:
      getAggregateSupport in class org.hibernate.dialect.Dialect
    • getCallableStatementSupport

      public org.hibernate.procedure.spi.CallableStatementSupport getCallableStatementSupport()
      Overrides:
      getCallableStatementSupport in class org.hibernate.dialect.Dialect
    • appendBinaryLiteral

      public void appendBinaryLiteral(org.hibernate.sql.ast.spi.SqlAppender appender, byte[] bytes)
      Overrides:
      appendBinaryLiteral in class org.hibernate.dialect.Dialect
    • getViolatedConstraintNameExtractor

      public org.hibernate.exception.spi.ViolatedConstraintNameExtractor getViolatedConstraintNameExtractor()
      Specified by:
      getViolatedConstraintNameExtractor in interface org.hibernate.exception.spi.ConversionContext
      Overrides:
      getViolatedConstraintNameExtractor in class org.hibernate.dialect.Dialect
    • buildSQLExceptionConversionDelegate

      public org.hibernate.exception.spi.SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate()
      Overrides:
      buildSQLExceptionConversionDelegate in class org.hibernate.dialect.Dialect
    • getUniqueDelegate

      public org.hibernate.dialect.unique.UniqueDelegate getUniqueDelegate()
      Overrides:
      getUniqueDelegate in class org.hibernate.dialect.Dialect
    • getMaxIdentifierLength

      public int getMaxIdentifierLength()
      Overrides:
      getMaxIdentifierLength in class org.hibernate.dialect.Dialect
    • getLimitHandler

      public org.hibernate.dialect.pagination.LimitHandler getLimitHandler()
      Overrides:
      getLimitHandler in class org.hibernate.dialect.Dialect
    • supportsNullPrecedence

      public boolean supportsNullPrecedence()
      Overrides:
      supportsNullPrecedence in class org.hibernate.dialect.Dialect
    • getSqlAstTranslatorFactory

      public org.hibernate.sql.ast.SqlAstTranslatorFactory getSqlAstTranslatorFactory()
      Overrides:
      getSqlAstTranslatorFactory in class org.hibernate.dialect.Dialect
    • getIdentityColumnSupport

      public org.hibernate.dialect.identity.IdentityColumnSupport getIdentityColumnSupport()
      Overrides:
      getIdentityColumnSupport in class org.hibernate.dialect.Dialect
    • supportsInsertReturning

      public boolean supportsInsertReturning()
      Overrides:
      supportsInsertReturning in class org.hibernate.dialect.Dialect
      Returns:
      true because we can use select ... from new table (insert .... )
    • supportsInsertReturningRowId

      public boolean supportsInsertReturningRowId()
      Overrides:
      supportsInsertReturningRowId in class org.hibernate.dialect.Dialect
    • supportsValuesList

      public boolean supportsValuesList()
      Overrides:
      supportsValuesList in class org.hibernate.dialect.Dialect
    • supportsPartitionBy

      public boolean supportsPartitionBy()
      Overrides:
      supportsPartitionBy in class org.hibernate.dialect.Dialect
    • supportsNonQueryWithCTE

      public boolean supportsNonQueryWithCTE()
      Overrides:
      supportsNonQueryWithCTE in class org.hibernate.dialect.Dialect
    • supportsRecursiveCTE

      public boolean supportsRecursiveCTE()
      Overrides:
      supportsRecursiveCTE in class org.hibernate.dialect.Dialect
    • supportsOffsetInSubquery

      public boolean supportsOffsetInSubquery()
      Overrides:
      supportsOffsetInSubquery in class org.hibernate.dialect.Dialect
    • supportsWindowFunctions

      public boolean supportsWindowFunctions()
      Overrides:
      supportsWindowFunctions in class org.hibernate.dialect.Dialect
    • supportsLateral

      public boolean supportsLateral()
      Overrides:
      supportsLateral in class org.hibernate.dialect.Dialect
    • appendDatetimeFormat

      public void appendDatetimeFormat(org.hibernate.sql.ast.spi.SqlAppender appender, String format)
      Overrides:
      appendDatetimeFormat in class org.hibernate.dialect.Dialect
    • translateExtractField

      public String translateExtractField(org.hibernate.query.common.TemporalUnit unit)
      Overrides:
      translateExtractField in class org.hibernate.dialect.Dialect
    • appendBooleanValueString

      public void appendBooleanValueString(org.hibernate.sql.ast.spi.SqlAppender appender, boolean bool)
      Overrides:
      appendBooleanValueString in class org.hibernate.dialect.Dialect
    • extractPattern

      public String extractPattern(org.hibernate.query.common.TemporalUnit unit)
      Overrides:
      extractPattern in class org.hibernate.dialect.Dialect
    • castPattern

      public String castPattern(org.hibernate.query.sqm.CastType from, org.hibernate.query.sqm.CastType to)
      Overrides:
      castPattern in class org.hibernate.dialect.Dialect
    • getInExpressionCountLimit

      public int getInExpressionCountLimit()
      Overrides:
      getInExpressionCountLimit in class org.hibernate.dialect.Dialect
    • generatedAs

      public String generatedAs(String generatedAs)
      Overrides:
      generatedAs in class org.hibernate.dialect.Dialect
    • buildIdentifierHelper

      public org.hibernate.engine.jdbc.env.spi.IdentifierHelper buildIdentifierHelper(org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder builder, DatabaseMetaData metadata) throws SQLException
      Overrides:
      buildIdentifierHelper in class org.hibernate.dialect.Dialect
      Throws:
      SQLException
    • canDisableConstraints

      public boolean canDisableConstraints()
      Overrides:
      canDisableConstraints in class org.hibernate.dialect.Dialect
    • getDisableConstraintStatement

      public String getDisableConstraintStatement(String tableName, String name)
      Overrides:
      getDisableConstraintStatement in class org.hibernate.dialect.Dialect
    • getEnableConstraintStatement

      public String getEnableConstraintStatement(String tableName, String name)
      Overrides:
      getEnableConstraintStatement in class org.hibernate.dialect.Dialect
    • getTruncateTableStatement

      public String getTruncateTableStatement(String tableName)
      Overrides:
      getTruncateTableStatement in class org.hibernate.dialect.Dialect
    • getCreateUserDefinedTypeExtensionsString

      public String getCreateUserDefinedTypeExtensionsString()
      Overrides:
      getCreateUserDefinedTypeExtensionsString in class org.hibernate.dialect.Dialect
    • rowId

      public String rowId(String rowId)
      The more "standard" syntax is rid_bit(alias) but here we use alias.rowid.

      There is also an alternative rid() of type bigint, but it cannot be used with partitioning.

      Overrides:
      rowId in class org.hibernate.dialect.Dialect
    • rowIdSqlType

      public int rowIdSqlType()
      Overrides:
      rowIdSqlType in class org.hibernate.dialect.Dialect
    • getDmlTargetColumnQualifierSupport

      public org.hibernate.dialect.DmlTargetColumnQualifierSupport getDmlTargetColumnQualifierSupport()
      Overrides:
      getDmlTargetColumnQualifierSupport in class org.hibernate.dialect.Dialect
    • supportsFromClauseInUpdate

      public boolean supportsFromClauseInUpdate()
      Overrides:
      supportsFromClauseInUpdate in class org.hibernate.dialect.Dialect
    • getDual

      public String getDual()
      Overrides:
      getDual in class org.hibernate.dialect.Dialect
    • getFromDualForSelectOnly

      public String getFromDualForSelectOnly()
      Overrides:
      getFromDualForSelectOnly in class org.hibernate.dialect.Dialect
    • supportsRowValueConstructorSyntax

      public boolean supportsRowValueConstructorSyntax()
      Overrides:
      supportsRowValueConstructorSyntax in class org.hibernate.dialect.Dialect
    • supportsWithClauseInSubquery

      public boolean supportsWithClauseInSubquery()
      Overrides:
      supportsWithClauseInSubquery in class org.hibernate.dialect.Dialect
    • supportsRowValueConstructorSyntaxInQuantifiedPredicates

      public boolean supportsRowValueConstructorSyntaxInQuantifiedPredicates()
      Overrides:
      supportsRowValueConstructorSyntaxInQuantifiedPredicates in class org.hibernate.dialect.Dialect
    • supportsRowValueConstructorSyntaxInInList

      public boolean supportsRowValueConstructorSyntaxInInList()
      Overrides:
      supportsRowValueConstructorSyntaxInInList in class org.hibernate.dialect.Dialect
    • supportsRowValueConstructorSyntaxInInSubQuery

      public boolean supportsRowValueConstructorSyntaxInInSubQuery()
      Overrides:
      supportsRowValueConstructorSyntaxInInSubQuery in class org.hibernate.dialect.Dialect