Class DB2Dialect
- java.lang.Object
-
- org.hibernate.dialect.Dialect
-
- org.hibernate.dialect.DB2Dialect
-
- All Implemented Interfaces:
ConversionContext
- Direct Known Subclasses:
DB2390Dialect,DB2400Dialect,DB297Dialect,DB2iDialect,DB2zDialect
public class DB2Dialect extends Dialect
An SQL dialect for DB2.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.hibernate.dialect.Dialect
Dialect.SizeStrategy, Dialect.SizeStrategyImpl
-
-
Field Summary
-
Fields inherited from class org.hibernate.dialect.Dialect
CLOSED_QUOTE, DEFAULT_BATCH_SIZE, LEGACY_LOB_MERGE_STRATEGY, NEW_LOCATOR_LOB_MERGE_STRATEGY, NO_BATCH, QUOTE, sequenceExporter, STANDARD_DEFAULT_BATCH_LOAD_SIZING_STRATEGY, STREAM_XFER_LOB_MERGE_STRATEGY
-
-
Constructor Summary
Constructors Constructor Description DB2Dialect()DB2Dialect(int version)DB2Dialect(DialectResolutionInfo info)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidappendBinaryLiteral(SqlAppender appender, byte[] bytes)voidappendBooleanValueString(SqlAppender appender, boolean bool)voidappendDatetimeFormat(SqlAppender appender, String format)Translate the given datetime format string from the pattern language defined by Java'sDateTimeFormatterto whatever pattern language is understood by the native datetime formatting function for this database (often theto_char()function).SQLExceptionConversionDelegatebuildSQLExceptionConversionDelegate()Build an instance of aSQLExceptionConversionDelegatefor interpreting dialect-specific error or SQLState codes.voidcontributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)Allows the Dialect to contribute additional typesprotected UniqueDelegatecreateUniqueDelegate()booleandoesReadCommittedCauseWritersToBlockReaders()For the underlying database, is READ_COMMITTED isolation implemented by forcing readers to wait for write locks to be released?booleandropConstraints()Do we need to drop constraints before dropping tables in this dialect?StringextractPattern(TemporalUnit unit)Obtain a pattern for the SQL equivalent to anextract()function call.StringgetCurrentTimestampSelectString()Retrieve the command used to retrieve the current timestamp from the database.intgetDefaultDecimalPrecision()This is the default precision for a generated column mapped to aBigIntegerorBigDecimal.String[]getDropSchemaCommand(String schemaName)Get the SQL command used to drop the named schemaSqmMultiTableMutationStrategygetFallbackSqmMutationStrategy(EntityMappingType rootEntityDescriptor, RuntimeModelCreationContext runtimeModelCreationContext)StringgetForUpdateSkipLockedString()Retrieves the FOR UPDATE SKIP LOCKED syntax specific to this dialect.StringgetForUpdateSkipLockedString(String aliases)Get the FOR UPDATE OF column_list SKIP LOCKED fragment appropriate for this dialect given the aliases of the columns to be write locked.StringgetForUpdateString()Get the string to append to SELECT statements to acquire locks for this dialect.longgetFractionalSecondPrecisionInNanos()Since we're usingseconds_between()andadd_seconds(), it makes sense to use seconds as the "native" precision.IdentityColumnSupportgetIdentityColumnSupport()Get the appropriateIdentityColumnSupportintgetInExpressionCountLimit()Return the limit that the underlying database places on the number of elements in anINpredicate.LimitHandlergetLimitHandler()Returns aLimitHandlerthat implements support forQuery.setMaxResults(int)andQuery.setFirstResult(int)for this dialect.StringgetLowercaseFunction()The name of the SQL function that transforms a string to lowercaseStringgetQuerySequencesString()Get the select command used retrieve the names of all sequences.StringgetReadLockString(int timeout)Get the string to append to SELECT statements to acquire READ locks for this dialect.ResultSetgetResultSet(CallableStatement ps)Given a callable statement previously processed byDialect.registerResultSetOutParameter(java.sql.CallableStatement, int), extract theResultSetfrom the OUT parameter.StringgetSelectClauseNullString(int sqlType)Given aTypestype code, determine an appropriate null value to use in a select clause.SequenceInformationExtractorgetSequenceInformationExtractor()A source ofSequenceInformation.SequenceSupportgetSequenceSupport()SqlAstTranslatorFactorygetSqlAstTranslatorFactory()Return an SqlAstTranslatorFactory specific for the Dialect.UniqueDelegategetUniqueDelegate()Get the UniqueDelegate supported by this dialectintgetVersion()StringgetWriteLockString(int timeout)Get the string to append to SELECT statements to acquire WRITE locks for this dialect.voidinitializeFunctionRegistry(QueryEngine queryEngine)Initialize the given registry with any dialect-specific functions.booleanisCurrentTimestampSelectStringCallable()Should the value returned byDialect.getCurrentTimestampSelectString()be treated as callable.intregisterResultSetOutParameter(CallableStatement statement, int col)Registers a parameter (either OUT, or the new REF_CURSOR param type available in Java 8) capable of returningResultSet*by position*.booleansupportsCommentOn()Does this dialect/database support commenting on tables, columns, etc?booleansupportsCurrentTimestampSelection()Does this dialect support a way to retrieve the database's current timestamp value?booleansupportsExistsInSelect()Does the dialect support an exists statement in the select clause?booleansupportsLobValueChangePropagation()Does the dialect support propagating changes to LOB values back to the database? Talking about mutating the internal value of the locator as opposed to supplying a new locator instance...booleansupportsLockTimeouts()Informational metadata about whether this dialect is known to support specifying timeouts for requested lock acquisitions.booleansupportsNonQueryWithCTE()Does this dialect/database support non-query statements (e.g.booleansupportsNullPrecedence()booleansupportsOffsetInSubquery()Does this dialect support offset in subqueries? Ex: select * from Table1 where col1 in (select col1 from Table2 order by col2 limit 1 offset 1)booleansupportsOuterJoinForUpdate()Does this dialect support FOR UPDATE in conjunction with outer joined rows?booleansupportsParametersInInsertSelect()Does this dialect support parameters within the SELECT clause of INSERT ...booleansupportsPartitionBy()Does the underlying database support partition bybooleansupportsResultSetPositionQueryMethodsOnForwardOnlyCursor()Does this dialect support asking the result set its positioning information on forward only cursors.booleansupportsSkipLocked()Does this dialect/database support SKIP_LOCKED timeout.booleansupportsTupleDistinctCounts()Does this dialect support `count(distinct a,b)`?booleansupportsValuesList()Does this dialect/database support VALUES list (e.g.booleansupportsWindowFunctions()Does this dialect support window functions like `row_number() over (..)`StringtimestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType)Obtain a pattern for the SQL equivalent to atimestampadd()function call.StringtimestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType)Obtain a pattern for the SQL equivalent to atimestampdiff()function call.StringtranslateExtractField(TemporalUnit unit)Return the name used to identify the given field as an argument to theextract()function, or of this dialect'sequivalentfunction.-
Methods inherited from class org.hibernate.dialect.Dialect
addSqlHintOrComment, appendDateTimeLiteral, appendDateTimeLiteral, appendDateTimeLiteral, appendIntervalLiteral, appendLiteral, appendLockHint, applyLocksToSql, augmentRecognizedTableTypes, binaryToDecimalPrecision, buildIdentifierHelper, canCreateCatalog, canCreateSchema, castPattern, closeQuote, currentDate, currentLocalTime, currentLocalTimestamp, currentTime, currentTimestamp, currentTimestampWithTimeZone, defaultScrollMode, doesRepeatableReadCauseReadersToBlockWriters, equivalentTypes, escapeComment, forceLobAsLastValue, getAddColumnString, getAddColumnSuffixString, getAddForeignKeyConstraintString, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getAlterTableString, getAuxiliaryDatabaseObjectExporter, getBooleanCheckCondition, getCallableStatementSupport, getCascadeConstraintsString, getCaseInsensitiveLike, getCastTypeName, getColumnAliasExtractor, getColumnComment, getCreateCatalogCommand, getCreateMultisetTableString, getCreateSchemaCommand, getCreateTableString, getCreateTemporaryTableColumnAnnotation, getCurrentSchemaCommand, getDefaultBatchLoadSizingStrategy, getDefaultLobLength, getDefaultProperties, getDefaultTimestampPrecision, getDoublePrecision, getDropCatalogCommand, getDropForeignKeyString, getDropTableString, getEnumCheckCondition, getFloatPrecision, getForeignKeyExporter, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateString, getForUpdateString, getForUpdateString, getForUpdateString, getGroupBySelectItemReferenceStrategy, getHibernateTypeName, getHibernateTypeName, getHqlTranslator, getIndexExporter, getKeywords, getLobMergeStrategy, getLockingStrategy, getLockRowIdentifier, getMaxAliasLength, getNameQualifierSupport, getNationalizationSupport, getNativeIdentifierGeneratorStrategy, getNoColumnsInsertString, getNullColumnString, getNullColumnString, getNullOrdering, getPreferredSqlTypeCodeForBoolean, getQueryHintString, getQueryHintString, getRawTypeName, getRawTypeName, getReadLockString, getReadRowLockStrategy, getResultSet, getResultSet, getSchemaNameResolver, getSelectGUIDString, getSequenceExporter, getSizeStrategy, getSqmTranslatorFactory, getTableComment, getTableExporter, getTableTypeString, getTimeZoneSupport, getTypeName, getTypeName, getTypeName, getTypeName, getUniqueKeyExporter, getViolatedConstraintNameExtractor, getWriteLockString, getWriteRowLockStrategy, hasAlterTable, hasSelfReferentialForeignKeyBug, inlineLiteral, isAnsiNullOn, isEmptyStringTreatedAsNull, isJdbcLogWarningsEnabledByDefault, isLockTimeoutParameterized, isTypeNameRegistered, openQuote, prependComment, qualifyIndexName, quote, registerColumnType, registerColumnType, registerDefaultKeywords, registerHibernateType, registerHibernateType, registerKeyword, registerKeywords, registerResultSetOutParameter, requiresFloatCastingOfIntegerDivision, requiresParensForTupleCounts, requiresParensForTupleDistinctCounts, resolveSqlTypeDescriptor, resolveSqlTypeLength, supportsBindAsCallableArgument, supportsBitType, supportsCascadeDelete, supportsCaseInsensitiveLike, supportsCircularCascadeDeleteConstraints, supportsColumnCheck, supportsExpectedLobUsagePattern, supportsFetchClause, supportsFractionalTimestampArithmetic, supportsIfExistsAfterAlterTable, supportsIfExistsAfterConstraintName, supportsIfExistsAfterTableName, supportsIfExistsBeforeConstraintName, supportsIfExistsBeforeTableName, supportsJdbcConnectionLobCreation, supportsNamedParameters, supportsNoColumnsInsert, supportsNoWait, supportsOrderByInSubquery, supportsOrdinalSelectItemReference, supportsSubqueryInSelect, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsTemporalLiteralOffset, supportsTemporaryTables, supportsTruncateWithCast, supportsTupleCounts, supportsUnboundedLobLocatorMaterialization, supportsUnionAll, supportsUnionInSubquery, supportsValuesListForInsert, supportsWait, toBooleanValueString, toString, transformSelectString, translateDurationField, trimPattern, useFollowOnLocking, useInputStreamToInsertBlob
-
-
-
-
Constructor Detail
-
DB2Dialect
public DB2Dialect(DialectResolutionInfo info)
-
DB2Dialect
public DB2Dialect()
-
DB2Dialect
public DB2Dialect(int version)
-
-
Method Detail
-
createUniqueDelegate
protected UniqueDelegate createUniqueDelegate()
-
getDefaultDecimalPrecision
public int getDefaultDecimalPrecision()
Description copied from class:DialectThis is the default precision for a generated column mapped to aBigIntegerorBigDecimal.Usually returns the maximum precision of the database, except when there is no such maximum precision, or the maximum precision is very high.
- Overrides:
getDefaultDecimalPrecisionin classDialect- Returns:
- the default precision, in decimal digits
-
getVersion
public int getVersion()
- Specified by:
getVersionin classDialect
-
initializeFunctionRegistry
public void initializeFunctionRegistry(QueryEngine queryEngine)
Description copied from class:DialectInitialize the given registry with any dialect-specific functions. Support for certain SQL functions is required, and if the database does not support a required function, then the dialect must define a way to emulate it. These required functions include the functions defined by the JPA query language specification:- avg(arg) - aggregate function
- count([distinct ]arg) - aggregate function
- max(arg) - aggregate function
- min(arg) - aggregate function
- sum(arg) - aggregate function
- coalesce(arg0, arg1, ...)
- nullif(arg0, arg1)
- lower(arg)
- upper(arg)
- length(arg)
- concat(arg0, arg1, ...)
- locate(pattern, string[, start])
- substring(string, start[, length])
- trim([[spec ][character ]from] string)
- abs(arg)
- mod(arg0, arg1)
- sqrt(arg)
- current date
- current time
- current timestamp
- any(arg) - aggregate function
- every(arg) - aggregate function
- cast(arg as Type)
- extract(field from arg)
- ln(arg)
- exp(arg)
- power(arg0, arg1)
- floor(arg)
- ceiling(arg)
- position(pattern in string)
- substring(string from start[ for length])
- overlay(string placing replacement from start[ for length])
- local date
- local time
- local datetime
- offset datetime
- instant
- left(string, length)
- right(string, length)
- replace(string, pattern, replacement)
- pad(string with length spec[ character])
- sign(arg)
- sin(arg)
- cos(arg)
- tan(arg)
- asin(arg)
- acos(arg)
- atan(arg)
- atan2(arg0, arg1)
- round(arg0, arg1)
- least(arg0, arg1, ...)
- greatest(arg0, arg1, ...)
- format(datetime as pattern)
- str(arg) - synonym of cast(a as String)
- ifnull(arg0, arg1) - synonym of coalesce(a, b)
- second(arg) - synonym of extract(second from a)
- minute(arg) - synonym of extract(minute from a)
- hour(arg) - synonym of extract(hour from a)
- day(arg) - synonym of extract(day from a)
- month(arg) - synonym of extract(month from a)
- year(arg) - synonym of extract(year from a)
- Overrides:
initializeFunctionRegistryin classDialect
-
getDropSchemaCommand
public String[] getDropSchemaCommand(String schemaName)
Description copied from class:DialectGet the SQL command used to drop the named schema- Overrides:
getDropSchemaCommandin classDialect- Parameters:
schemaName- The name of the schema to be dropped.- Returns:
- The drop commands
-
getFractionalSecondPrecisionInNanos
public long getFractionalSecondPrecisionInNanos()
Since we're usingseconds_between()andadd_seconds(), it makes sense to use seconds as the "native" precision.- Overrides:
getFractionalSecondPrecisionInNanosin classDialect- Returns:
- the precision, specified as a quantity of nanoseconds
- See Also:
TemporalUnit.NATIVE
-
timestampdiffPattern
public String timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType)
Description copied from class:DialectObtain a pattern for the SQL equivalent to atimestampdiff()function call. The resulting pattern must contain ?1, ?2, and ?3 placeholders for the arguments.- Overrides:
timestampdiffPatternin classDialect- Parameters:
unit- the first argumentfromTemporalType- true if the first argument is a timestamp, false if a datetoTemporalType- true if the second argument is
-
timestampaddPattern
public String timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType)
Description copied from class:DialectObtain a pattern for the SQL equivalent to atimestampadd()function call. The resulting pattern must contain ?1, ?2, and ?3 placeholders for the arguments.- Overrides:
timestampaddPatternin classDialect- Parameters:
unit- The unit to add to the temporaltemporalType- The type of the temporalintervalType- The type of interval to add or null if it's not a native interval
-
getLowercaseFunction
public String getLowercaseFunction()
Description copied from class:DialectThe name of the SQL function that transforms a string to lowercase- Overrides:
getLowercaseFunctionin classDialect- Returns:
- The dialect-specific lowercase function.
-
dropConstraints
public boolean dropConstraints()
Description copied from class:DialectDo we need to drop constraints before dropping tables in this dialect?- Overrides:
dropConstraintsin classDialect- Returns:
- True if constraints must be dropped prior to dropping the table; false otherwise.
-
getSequenceSupport
public SequenceSupport getSequenceSupport()
- Overrides:
getSequenceSupportin classDialect
-
getQuerySequencesString
public String getQuerySequencesString()
Description copied from class:DialectGet the select command used retrieve the names of all sequences.- Overrides:
getQuerySequencesStringin classDialect- Returns:
- The select command; or null if sequences are not supported.
- See Also:
org.hibernate.tool.hbm2ddl.SchemaUpdate
-
getSequenceInformationExtractor
public SequenceInformationExtractor getSequenceInformationExtractor()
Description copied from class:DialectA source ofSequenceInformation.- Overrides:
getSequenceInformationExtractorin classDialect
-
getForUpdateString
public String getForUpdateString()
Description copied from class:DialectGet the string to append to SELECT statements to acquire locks for this dialect.- Overrides:
getForUpdateStringin classDialect- Returns:
- The appropriate FOR UPDATE clause string.
-
supportsSkipLocked
public boolean supportsSkipLocked()
Description copied from class:DialectDoes this dialect/database support SKIP_LOCKED timeout.- Overrides:
supportsSkipLockedin classDialect- Returns:
trueif SKIP_LOCKED is supported
-
getForUpdateSkipLockedString
public String getForUpdateSkipLockedString()
Description copied from class:DialectRetrieves the FOR UPDATE SKIP LOCKED syntax specific to this dialect.- Overrides:
getForUpdateSkipLockedStringin classDialect- Returns:
- The appropriate FOR UPDATE SKIP LOCKED clause string.
-
getForUpdateSkipLockedString
public String getForUpdateSkipLockedString(String aliases)
Description copied from class:DialectGet the FOR UPDATE OF column_list SKIP LOCKED fragment appropriate for this dialect given the aliases of the columns to be write locked.- Overrides:
getForUpdateSkipLockedStringin classDialect- Parameters:
aliases- The columns to be write locked.- Returns:
- The appropriate FOR UPDATE colunm_list SKIP LOCKED clause string.
-
getWriteLockString
public String getWriteLockString(int timeout)
Description copied from class:DialectGet the string to append to SELECT statements to acquire WRITE locks for this dialect. Location of the returned string is treated the same as getForUpdateString.- Overrides:
getWriteLockStringin classDialect- Parameters:
timeout- in milliseconds, -1 for indefinite wait and 0 for no wait.- Returns:
- The appropriate LOCK clause string.
-
getReadLockString
public String getReadLockString(int timeout)
Description copied from class:DialectGet the string to append to SELECT statements to acquire READ locks for this dialect. Location of the returned string is treated the same as getForUpdateString.- Overrides:
getReadLockStringin classDialect- Parameters:
timeout- in milliseconds, -1 for indefinite wait and 0 for no wait.- Returns:
- The appropriate LOCK clause string.
-
supportsOuterJoinForUpdate
public boolean supportsOuterJoinForUpdate()
Description copied from class:DialectDoes this dialect support FOR UPDATE in conjunction with outer joined rows?- Overrides:
supportsOuterJoinForUpdatein classDialect- Returns:
- True if outer joined rows can be locked via FOR UPDATE.
-
supportsExistsInSelect
public boolean supportsExistsInSelect()
Description copied from class:DialectDoes the dialect support an exists statement in the select clause?- Overrides:
supportsExistsInSelectin classDialect- Returns:
- True if exists checks are allowed in the select clause; false otherwise.
-
supportsLockTimeouts
public boolean supportsLockTimeouts()
Description copied from class:DialectInformational metadata about whether this dialect is known to support specifying timeouts for requested lock acquisitions.- Overrides:
supportsLockTimeoutsin classDialect- Returns:
- True is this dialect supports specifying lock timeouts.
-
getSelectClauseNullString
public String getSelectClauseNullString(int sqlType)
Description copied from class:DialectGiven aTypestype code, determine an appropriate null value to use in a select clause. One thing to consider here is that certain databases might require proper casting for the nulls here since the select here will be part of a UNION/UNION ALL.- Overrides:
getSelectClauseNullStringin classDialect- Parameters:
sqlType- TheTypestype code.- Returns:
- The appropriate select clause value fragment.
-
registerResultSetOutParameter
public int registerResultSetOutParameter(CallableStatement statement, int col) throws SQLException
Description copied from class:DialectRegisters a parameter (either OUT, or the new REF_CURSOR param type available in Java 8) capable of returningResultSet*by position*. Pre-Java 8, registering such ResultSet-returning parameters varied greatly across database and drivers; hence its inclusion as part of the Dialect contract.- Overrides:
registerResultSetOutParameterin classDialect- Parameters:
statement- The callable statement.col- The bind position at which to register the output param.- Returns:
- The number of (contiguous) bind positions used.
- Throws:
SQLException- Indicates problems registering the param.
-
getResultSet
public ResultSet getResultSet(CallableStatement ps) throws SQLException
Description copied from class:DialectGiven a callable statement previously processed byDialect.registerResultSetOutParameter(java.sql.CallableStatement, int), extract theResultSetfrom the OUT parameter.- Overrides:
getResultSetin classDialect- Parameters:
ps- The callable statement.- Returns:
- The extracted result set.
- Throws:
SQLException- Indicates problems extracting the result set.
-
supportsCommentOn
public boolean supportsCommentOn()
Description copied from class:DialectDoes this dialect/database support commenting on tables, columns, etc?- Overrides:
supportsCommentOnin classDialect- Returns:
trueif commenting is supported
-
getFallbackSqmMutationStrategy
public SqmMultiTableMutationStrategy getFallbackSqmMutationStrategy(EntityMappingType rootEntityDescriptor, RuntimeModelCreationContext runtimeModelCreationContext)
- Overrides:
getFallbackSqmMutationStrategyin classDialect
-
supportsCurrentTimestampSelection
public boolean supportsCurrentTimestampSelection()
Description copied from class:DialectDoes this dialect support a way to retrieve the database's current timestamp value?- Overrides:
supportsCurrentTimestampSelectionin classDialect- Returns:
- True if the current timestamp can be retrieved; false otherwise.
-
getCurrentTimestampSelectString
public String getCurrentTimestampSelectString()
Description copied from class:DialectRetrieve the command used to retrieve the current timestamp from the database.- Overrides:
getCurrentTimestampSelectStringin classDialect- Returns:
- The command.
-
isCurrentTimestampSelectStringCallable
public boolean isCurrentTimestampSelectStringCallable()
Description copied from class:DialectShould the value returned byDialect.getCurrentTimestampSelectString()be treated as callable. Typically this indicates that JDBC escape syntax is being used...- Overrides:
isCurrentTimestampSelectStringCallablein classDialect- Returns:
- True if the
Dialect.getCurrentTimestampSelectString()return is callable; false otherwise.
-
supportsParametersInInsertSelect
public boolean supportsParametersInInsertSelect()
Description copied from class:DialectDoes this dialect support parameters within the SELECT clause of INSERT ... SELECT ... statements?- Overrides:
supportsParametersInInsertSelectin classDialect- Returns:
- True if this is supported; false otherwise.
-
supportsResultSetPositionQueryMethodsOnForwardOnlyCursor
public boolean supportsResultSetPositionQueryMethodsOnForwardOnlyCursor()
Description copied from class:DialectDoes this dialect support asking the result set its positioning information on forward only cursors. Specifically, in the case of scrolling fetches, Hibernate needs to useResultSet.isAfterLast()andResultSet.isBeforeFirst(). Certain drivers do not allow access to these methods for forward only cursors. NOTE : this is highly driver dependent!- Overrides:
supportsResultSetPositionQueryMethodsOnForwardOnlyCursorin classDialect- Returns:
- True if methods like
ResultSet.isAfterLast()andResultSet.isBeforeFirst()are supported for forward only cursors; false otherwise.
-
supportsLobValueChangePropagation
public boolean supportsLobValueChangePropagation()
Description copied from class:DialectDoes the dialect support propagating changes to LOB values back to the database? Talking about mutating the internal value of the locator as opposed to supplying a new locator instance... For BLOBs, the internal value might be changed by:Blob.setBinaryStream(long),Blob.setBytes(long, byte[]),Blob.setBytes(long, byte[], int, int), orBlob.truncate(long). For CLOBs, the internal value might be changed by:Clob.setAsciiStream(long),Clob.setCharacterStream(long),Clob.setString(long, String),Clob.setString(long, String, int, int), orClob.truncate(long). NOTE : I do not know the correct answer currently for databases which (1) are not part of the cruise control process or (2) do notDialect.supportsExpectedLobUsagePattern().- Overrides:
supportsLobValueChangePropagationin classDialect- Returns:
- True if the changes are propagated back to the database; false otherwise.
-
doesReadCommittedCauseWritersToBlockReaders
public boolean doesReadCommittedCauseWritersToBlockReaders()
Description copied from class:DialectFor the underlying database, is READ_COMMITTED isolation implemented by forcing readers to wait for write locks to be released?- Overrides:
doesReadCommittedCauseWritersToBlockReadersin classDialect- Returns:
- True if writers block readers to achieve READ_COMMITTED; false otherwise.
-
supportsTupleDistinctCounts
public boolean supportsTupleDistinctCounts()
Description copied from class:DialectDoes this dialect support `count(distinct a,b)`?- Overrides:
supportsTupleDistinctCountsin classDialect- Returns:
- True if the database supports counting distinct tuples; false otherwise.
-
contributeTypes
public void contributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)
Description copied from class:DialectAllows the Dialect to contribute additional types- Overrides:
contributeTypesin classDialect- Parameters:
typeContributions- Callback to contribute the typesserviceRegistry- The service registry
-
appendBinaryLiteral
public void appendBinaryLiteral(SqlAppender appender, byte[] bytes)
- Overrides:
appendBinaryLiteralin classDialect
-
buildSQLExceptionConversionDelegate
public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate()
Description copied from class:DialectBuild an instance of aSQLExceptionConversionDelegatefor interpreting dialect-specific error or SQLState codes. If this method is overridden to return a non-null value, the defaultSQLExceptionConverterwill use the returnedSQLExceptionConversionDelegatein addition to the following standard delegates:- a "static" delegate based on the JDBC 4 defined SQLException hierarchy;
- a delegate that interprets SQLState codes for either X/Open or SQL-2003 codes, depending on java.sql.DatabaseMetaData#getSQLStateType
- Overrides:
buildSQLExceptionConversionDelegatein classDialect- Returns:
- The SQLExceptionConversionDelegate for this dialect
-
getUniqueDelegate
public UniqueDelegate getUniqueDelegate()
Description copied from class:DialectGet the UniqueDelegate supported by this dialect- Overrides:
getUniqueDelegatein classDialect- Returns:
- The UniqueDelegate
-
getLimitHandler
public LimitHandler getLimitHandler()
Description copied from class:DialectReturns aLimitHandlerthat implements support forQuery.setMaxResults(int)andQuery.setFirstResult(int)for this dialect.- Overrides:
getLimitHandlerin classDialect
-
supportsNullPrecedence
public boolean supportsNullPrecedence()
- Overrides:
supportsNullPrecedencein classDialect
-
getSqlAstTranslatorFactory
public SqlAstTranslatorFactory getSqlAstTranslatorFactory()
Description copied from class:DialectReturn an SqlAstTranslatorFactory specific for the Dialect. Returnnullto use Hibernate's standard translator.- Overrides:
getSqlAstTranslatorFactoryin classDialect- See Also:
StandardSqlAstTranslatorFactory,JdbcEnvironment.getSqlAstTranslatorFactory()
-
getIdentityColumnSupport
public IdentityColumnSupport getIdentityColumnSupport()
Description copied from class:DialectGet the appropriateIdentityColumnSupport- Overrides:
getIdentityColumnSupportin classDialect- Returns:
- the IdentityColumnSupport
-
supportsValuesList
public boolean supportsValuesList()
Description copied from class:DialectDoes this dialect/database support VALUES list (e.g. VALUES (1), (2), (3) )- Overrides:
supportsValuesListin classDialect- Returns:
trueif VALUES list are supported
-
supportsPartitionBy
public boolean supportsPartitionBy()
Description copied from class:DialectDoes the underlying database support partition by- Overrides:
supportsPartitionByin classDialect- Returns:
- boolean
-
supportsNonQueryWithCTE
public boolean supportsNonQueryWithCTE()
Description copied from class:DialectDoes this dialect/database support non-query statements (e.g. INSERT, UPDATE, DELETE) with CTE (Common Table Expressions)?- Overrides:
supportsNonQueryWithCTEin classDialect- Returns:
trueif non-query statements are supported with CTE
-
supportsOffsetInSubquery
public boolean supportsOffsetInSubquery()
Description copied from class:DialectDoes this dialect support offset in subqueries? Ex: select * from Table1 where col1 in (select col1 from Table2 order by col2 limit 1 offset 1)- Overrides:
supportsOffsetInSubqueryin classDialect- Returns:
- boolean
-
supportsWindowFunctions
public boolean supportsWindowFunctions()
Description copied from class:DialectDoes this dialect support window functions like `row_number() over (..)`- Overrides:
supportsWindowFunctionsin classDialect- Returns:
trueif the underlying database supports window functions,falseotherwise. The default isfalse.
-
appendDatetimeFormat
public void appendDatetimeFormat(SqlAppender appender, String format)
Description copied from class:DialectTranslate the given datetime format string from the pattern language defined by Java'sDateTimeFormatterto whatever pattern language is understood by the native datetime formatting function for this database (often theto_char()function).Since it's never possible to translate all of the pattern letter sequences understood by
DateTimeFormatter, only the following subset of pattern letters is accepted by Hibernate:- G: era
- y: year of era
- Y: year of week-based year
- M: month of year
- w: week of week-based year (ISO week number)
- W: week of month
- E: day of week (name)
- e: day of week (number)
- d: day of month
- D: day of year
- a: AM/PM
- H: hour of day (24 hour time)
- h: hour of AM/PM (12 hour time)
- m: minutes
- s: seconds
- z,Z,x: timezone offset
- Overrides:
appendDatetimeFormatin classDialect
-
translateExtractField
public String translateExtractField(TemporalUnit unit)
Description copied from class:DialectReturn the name used to identify the given field as an argument to theextract()function, or of this dialect'sequivalentfunction.This method does not need to handle
TemporalUnit.NANOSECOND,TemporalUnit.NATIVE,TemporalUnit.OFFSET,TemporalUnit.DATE,TemporalUnit.TIME,TemporalUnit.WEEK_OF_YEAR, norTemporalUnit.WEEK_OF_MONTH, which are already desugared byExtractFunction.- Overrides:
translateExtractFieldin classDialect
-
appendBooleanValueString
public void appendBooleanValueString(SqlAppender appender, boolean bool)
- Overrides:
appendBooleanValueStringin classDialect
-
extractPattern
public String extractPattern(TemporalUnit unit)
Description copied from class:DialectObtain a pattern for the SQL equivalent to anextract()function call. The resulting pattern must contain ?1 and ?2 placeholders for the arguments.This method does not need to handle
TemporalUnit.NANOSECOND,TemporalUnit.NATIVE,TemporalUnit.OFFSET,TemporalUnit.DATE,TemporalUnit.TIME,TemporalUnit.WEEK_OF_YEAR, orTemporalUnit.WEEK_OF_MONTH, which are already desugared byExtractFunction.- Overrides:
extractPatternin classDialect- Parameters:
unit- the first argument
-
getInExpressionCountLimit
public int getInExpressionCountLimit()
Description copied from class:DialectReturn the limit that the underlying database places on the number of elements in anINpredicate. If the database defines no such limits, simply return zero or less-than-zero.- Overrides:
getInExpressionCountLimitin classDialect- Returns:
- int The limit, or zero-or-less to indicate no limit.
-
-