Class HANALegacyDialect

java.lang.Object
org.hibernate.dialect.Dialect
org.hibernate.community.dialect.HANALegacyDialect
All Implemented Interfaces:
org.hibernate.boot.model.FunctionContributor, org.hibernate.boot.model.TypeContributor, org.hibernate.exception.spi.ConversionContext

public class HANALegacyDialect extends org.hibernate.dialect.Dialect
An SQL dialect for legacy versions of the SAP HANA Platform up tu and including 2.0 SPS 04.

For more information on SAP HANA Platform, refer to the SAP HANA Platform SQL Reference Guide.

Column tables are created by this dialect by default when using the auto-ddl feature.

  • Field Details

  • Constructor Details

    • HANALegacyDialect

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

      public HANALegacyDialect()
    • HANALegacyDialect

      public HANALegacyDialect(org.hibernate.dialect.DatabaseVersion version)
    • HANALegacyDialect

      public HANALegacyDialect(org.hibernate.dialect.DatabaseVersion version, boolean defaultTableTypeColumn)
    • HANALegacyDialect

      public HANALegacyDialect(org.hibernate.dialect.HANAServerConfiguration configuration, boolean defaultTableTypeColumn)
  • 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
    • contribute

      public void contribute(org.hibernate.boot.model.TypeContributions typeContributions, org.hibernate.service.ServiceRegistry serviceRegistry)
      Specified by:
      contribute in interface org.hibernate.boot.model.TypeContributor
      Overrides:
      contribute in class org.hibernate.dialect.Dialect
    • isDefaultTableTypeColumn

      protected boolean isDefaultTableTypeColumn()
    • isCloud

      protected boolean isCloud()
    • 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
    • getDefaultNonContextualLobCreation

      public boolean getDefaultNonContextualLobCreation()
      Overrides:
      getDefaultNonContextualLobCreation in class org.hibernate.dialect.Dialect
    • getDefaultUseGetGeneratedKeys

      public boolean getDefaultUseGetGeneratedKeys()
      Overrides:
      getDefaultUseGetGeneratedKeys 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
    • getDefaultTimestampPrecision

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

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

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

      public int getMaxNVarcharLength()
      Overrides:
      getMaxNVarcharLength in class org.hibernate.dialect.Dialect
    • getMaxVarbinaryLength

      public int getMaxVarbinaryLength()
      Overrides:
      getMaxVarbinaryLength 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()
      HANA doesn't support the generate_series function or lateral recursive CTEs, so it has to be emulated with the xmltable and lpad functions.
    • getSqlAstTranslatorFactory

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

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

      public String extractPattern(org.hibernate.query.common.TemporalUnit unit)
      HANA has no extract() function, but we can emulate it using the appropriate named functions instead of extract(). The supported fields are TemporalUnit.YEAR, TemporalUnit.MONTH TemporalUnit.DAY, TemporalUnit.HOUR, TemporalUnit.MINUTE, TemporalUnit.SECOND TemporalUnit.WEEK, TemporalUnit.DAY_OF_WEEK, TemporalUnit.DAY_OF_MONTH, TemporalUnit.DAY_OF_YEAR.
      Overrides:
      extractPattern in class org.hibernate.dialect.Dialect
    • buildSQLExceptionConversionDelegate

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

      public org.hibernate.dialect.RowLockStrategy getWriteRowLockStrategy()
      Overrides:
      getWriteRowLockStrategy in class org.hibernate.dialect.Dialect
    • getCreateTableString

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

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

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

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

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

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

      public String getForUpdateString(String aliases, org.hibernate.LockOptions lockOptions)
      Overrides:
      getForUpdateString in class org.hibernate.dialect.Dialect
    • getForUpdateNowaitString

      public String getForUpdateNowaitString()
      Overrides:
      getForUpdateNowaitString 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
    • isCurrentTimestampSelectStringCallable

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

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

      public org.hibernate.ScrollMode defaultScrollMode()
      Overrides:
      defaultScrollMode in class org.hibernate.dialect.Dialect
    • supportsColumnCheck

      public boolean supportsColumnCheck()
      HANA currently does not support check constraints.
      Overrides:
      supportsColumnCheck in class org.hibernate.dialect.Dialect
    • supportsCurrentTimestampSelection

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

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

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

      public boolean supportsExpectedLobUsagePattern()
      Overrides:
      supportsExpectedLobUsagePattern in class org.hibernate.dialect.Dialect
    • supportsUnboundedLobLocatorMaterialization

      public boolean supportsUnboundedLobLocatorMaterialization()
      Overrides:
      supportsUnboundedLobLocatorMaterialization in class org.hibernate.dialect.Dialect
    • getSequenceSupport

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

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

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

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

      public int getMaxAliasLength()
      Overrides:
      getMaxAliasLength 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
    • getSelectGUIDString

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

      public org.hibernate.engine.jdbc.env.spi.NameQualifierSupport getNameQualifierSupport()
      Overrides:
      getNameQualifierSupport 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 dbMetaData) throws SQLException
      Overrides:
      buildIdentifierHelper in class org.hibernate.dialect.Dialect
      Throws:
      SQLException
    • getCurrentSchemaCommand

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

      public String getForUpdateNowaitString(String aliases)
      Overrides:
      getForUpdateNowaitString in class org.hibernate.dialect.Dialect
    • getReadLockString

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

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

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

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

      public String getQueryHintString(String query, List<String> hints)
      Overrides:
      getQueryHintString in class org.hibernate.dialect.Dialect
    • getTableComment

      public String getTableComment(String comment)
      Overrides:
      getTableComment in class org.hibernate.dialect.Dialect
    • getColumnComment

      public String getColumnComment(String comment)
      Overrides:
      getColumnComment in class org.hibernate.dialect.Dialect
    • supportsCommentOn

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

      public boolean supportsPartitionBy()
      Overrides:
      supportsPartitionBy 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
    • appendBooleanValueString

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

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

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

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

      public int registerResultSetOutParameter(CallableStatement statement, int position) 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
    • 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
    • supportsNoWait

      public boolean supportsNoWait()
      Overrides:
      supportsNoWait in class org.hibernate.dialect.Dialect
    • supportsJdbcConnectionLobCreation

      public boolean supportsJdbcConnectionLobCreation(DatabaseMetaData databaseMetaData)
      Overrides:
      supportsJdbcConnectionLobCreation in class org.hibernate.dialect.Dialect
    • supportsNoColumnsInsert

      public boolean supportsNoColumnsInsert()
      Overrides:
      supportsNoColumnsInsert in class org.hibernate.dialect.Dialect
    • supportsOrderByInSubquery

      public boolean supportsOrderByInSubquery()
      Overrides:
      supportsOrderByInSubquery in class org.hibernate.dialect.Dialect
    • getNullOrdering

      public org.hibernate.dialect.NullOrdering getNullOrdering()
      Overrides:
      getNullOrdering 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
    • supportsFractionalTimestampArithmetic

      public boolean supportsFractionalTimestampArithmetic()
      Overrides:
      supportsFractionalTimestampArithmetic in class org.hibernate.dialect.Dialect
    • getFractionalSecondPrecisionInNanos

      public long getFractionalSecondPrecisionInNanos()
      Overrides:
      getFractionalSecondPrecisionInNanos in class org.hibernate.dialect.Dialect
    • 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
    • timestampdiffPattern

      public String timestampdiffPattern(org.hibernate.query.common.TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType)
      Overrides:
      timestampdiffPattern 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
    • generatedAs

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

      public boolean isUseUnicodeStringTypes()
    • supportsAsciiStringTypes

      protected boolean supportsAsciiStringTypes()
    • useUnicodeStringTypesDefault

      protected Boolean useUnicodeStringTypesDefault()
    • getFallbackSqmMutationStrategy

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

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

      public org.hibernate.dialect.temptable.TemporaryTableKind getSupportedTemporaryTableKind()
      Overrides:
      getSupportedTemporaryTableKind in class org.hibernate.dialect.Dialect
    • getTemporaryTableCreateOptions

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

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

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

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

      public boolean supportsSkipLocked()
      Overrides:
      supportsSkipLocked 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
    • getForUpdateString

      public String getForUpdateString(org.hibernate.LockMode lockMode)
      Overrides:
      getForUpdateString 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
    • supportsRowValueConstructorGtLtSyntax

      public boolean supportsRowValueConstructorGtLtSyntax()
      Overrides:
      supportsRowValueConstructorGtLtSyntax 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