Class PostgreSQLLegacyDialect

    • Field Detail

      • driverKind

        protected final org.hibernate.dialect.PostgreSQLDriverKind driverKind
    • Constructor Detail

      • PostgreSQLLegacyDialect

        public PostgreSQLLegacyDialect()
      • PostgreSQLLegacyDialect

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

        public PostgreSQLLegacyDialect​(org.hibernate.dialect.DatabaseVersion version)
      • PostgreSQLLegacyDialect

        public PostgreSQLLegacyDialect​(org.hibernate.dialect.DatabaseVersion version,
                                       org.hibernate.dialect.PostgreSQLDriverKind driverKind)
    • Method Detail

      • getDefaultNonContextualLobCreation

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

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

        protected String castType​(int sqlTypeCode)
        Overrides:
        castType 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
      • getMaxVarcharLength

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

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

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

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

        public org.hibernate.type.descriptor.jdbc.JdbcType resolveSqlTypeDescriptor​(String columnTypeName,
                                                                                    int jdbcTypeCode,
                                                                                    int precision,
                                                                                    int scale,
                                                                                    org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry jdbcTypeRegistry)
        Overrides:
        resolveSqlTypeDescriptor in class org.hibernate.dialect.Dialect
      • resolveSqlTypeCode

        protected Integer resolveSqlTypeCode​(String columnTypeName,
                                             org.hibernate.type.spi.TypeConfiguration typeConfiguration)
        Overrides:
        resolveSqlTypeCode in class org.hibernate.dialect.Dialect
      • currentTime

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

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

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

        public String extractPattern​(org.hibernate.query.sqm.TemporalUnit unit)
        The extract() function returns TemporalUnit.DAY_OF_WEEK numbered from 0 to 6. This isn't consistent with what most other databases do, so here we adjust the result by generating (extract(dow,arg)+1)).
        Overrides:
        extractPattern in class org.hibernate.dialect.Dialect
      • getFractionalSecondPrecisionInNanos

        public long getFractionalSecondPrecisionInNanos()
        microsecond is the smallest unit for an interval, and the highest precision for a timestamp, so we could use it as the "native" precision, but it's more convenient to use whole seconds (with the fractional part), since we want to use extract(epoch from ...) in our emulation of timestampdiff().
        Overrides:
        getFractionalSecondPrecisionInNanos in class org.hibernate.dialect.Dialect
      • timestampaddPattern

        public String timestampaddPattern​(org.hibernate.query.sqm.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.sqm.TemporalUnit unit,
                                           TemporalType fromTemporalType,
                                           TemporalType toTemporalType)
        Overrides:
        timestampdiffPattern in class org.hibernate.dialect.Dialect
      • extractField

        @Deprecated
        protected void extractField​(StringBuilder pattern,
                                    org.hibernate.query.sqm.TemporalUnit unit,
                                    TemporalType fromTimestamp,
                                    TemporalType toTimestamp,
                                    org.hibernate.query.sqm.TemporalUnit toUnit)
        Deprecated.
      • getTimeZoneSupport

        public org.hibernate.dialect.TimeZoneSupport getTimeZoneSupport()
        Overrides:
        getTimeZoneSupport in class org.hibernate.dialect.Dialect
      • initializeFunctionRegistry

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

        protected boolean supportsMinMaxOnUuid()
        Whether PostgreSQL supports `min(uuid)`/`max(uuid)` which it doesn't by default. Since the emulation is not very performant, this can be overridden by users which make sure that an aggregate function for uuid exists on their database. The following definitions can be used for this purpose: create or replace function min(uuid, uuid) returns uuid immutable parallel safe language plpgsql as $$ begin return least($1, $2); end $$; create aggregate min(uuid) ( sfunc = min, stype = uuid, combinefunc = min, parallel = safe, sortop = operator (<) ); create or replace function max(uuid, uuid) returns uuid immutable parallel safe language plpgsql as $$ begin return greatest($1, $2); end $$; create aggregate max(uuid) ( sfunc = max, stype = uuid, combinefunc = max, parallel = safe, sortop = operator (>) );
      • getNameQualifierSupport

        public org.hibernate.engine.jdbc.env.spi.NameQualifierSupport getNameQualifierSupport()
        Overrides:
        getNameQualifierSupport in class org.hibernate.dialect.Dialect
      • getCurrentSchemaCommand

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

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

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

        public boolean supportsIfExistsBeforeTypeName()
        Overrides:
        supportsIfExistsBeforeTypeName in class org.hibernate.dialect.Dialect
      • supportsIfExistsBeforeConstraintName

        public boolean supportsIfExistsBeforeConstraintName()
        Overrides:
        supportsIfExistsBeforeConstraintName in class org.hibernate.dialect.Dialect
      • supportsIfExistsAfterAlterTable

        public boolean supportsIfExistsAfterAlterTable()
        Overrides:
        supportsIfExistsAfterAlterTable 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
      • getSequenceSupport

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

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

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

        public org.hibernate.dialect.pagination.LimitHandler getLimitHandler()
        Overrides:
        getLimitHandler 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
      • getNoColumnsInsertString

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

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

        public boolean supportsCaseInsensitiveLike()
        Overrides:
        supportsCaseInsensitiveLike in class org.hibernate.dialect.Dialect
      • getNativeIdentifierGeneratorStrategy

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

        public boolean supportsOuterJoinForUpdate()
        Overrides:
        supportsOuterJoinForUpdate in class org.hibernate.dialect.Dialect
      • useInputStreamToInsertBlob

        public boolean useInputStreamToInsertBlob()
        Overrides:
        useInputStreamToInsertBlob 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
      • supportsCommentOn

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

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

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

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

        public boolean supportsTupleCounts()
        Overrides:
        supportsTupleCounts in class org.hibernate.dialect.Dialect
      • requiresParensForTupleDistinctCounts

        public boolean requiresParensForTupleDistinctCounts()
        Overrides:
        requiresParensForTupleDistinctCounts 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
      • 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
      • 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
      • 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
      • getSqlAstTranslatorFactory

        public org.hibernate.sql.ast.SqlAstTranslatorFactory getSqlAstTranslatorFactory()
        Overrides:
        getSqlAstTranslatorFactory 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
      • registerResultSetOutParameter

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

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

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

        public org.hibernate.dialect.SelectItemReferenceStrategy getGroupBySelectItemReferenceStrategy()
        Overrides:
        getGroupBySelectItemReferenceStrategy in class org.hibernate.dialect.Dialect
      • getCallableStatementSupport

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

        public boolean qualifyIndexName()
        Overrides:
        qualifyIndexName in class org.hibernate.dialect.Dialect
      • getIdentityColumnSupport

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

        public org.hibernate.dialect.NationalizationSupport getNationalizationSupport()
        Overrides:
        getNationalizationSupport in class org.hibernate.dialect.Dialect
      • getMaxIdentifierLength

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

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

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

        public boolean supportsMaterializedLobAccess()
        Overrides:
        supportsMaterializedLobAccess in class org.hibernate.dialect.Dialect
      • supportsTemporalLiteralOffset

        public boolean supportsTemporalLiteralOffset()
        Overrides:
        supportsTemporalLiteralOffset 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
      • datetimeFormat

        public org.hibernate.dialect.Replacer datetimeFormat​(String format)
      • translateExtractField

        public String translateExtractField​(org.hibernate.query.sqm.TemporalUnit unit)
        Overrides:
        translateExtractField in class org.hibernate.dialect.Dialect
      • getAggregateSupport

        public org.hibernate.dialect.aggregate.AggregateSupport getAggregateSupport()
        Overrides:
        getAggregateSupport 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
      • 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
      • 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
      • 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
      • getForUpdateNowaitString

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

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

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

        public boolean supportsWait()
        Overrides:
        supportsWait in class org.hibernate.dialect.Dialect
      • supportsSkipLocked

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

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

        public boolean supportsFetchClause​(org.hibernate.query.sqm.FetchClauseType type)
        Overrides:
        supportsFetchClause in class org.hibernate.dialect.Dialect
      • getWriteRowLockStrategy

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

        public void augmentRecognizedTableTypes​(List<String> tableTypesList)
        Overrides:
        augmentRecognizedTableTypes 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
      • contributePostgreSQLTypes

        protected void contributePostgreSQLTypes​(org.hibernate.boot.model.TypeContributions typeContributions,
                                                 org.hibernate.service.ServiceRegistry serviceRegistry)
      • getUniqueDelegate

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

        public boolean canBatchTruncate()
        Overrides:
        canBatchTruncate in class org.hibernate.dialect.Dialect
        Returns:
        true, but only because we can "batch" truncate
      • rowId

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

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