Class SQLServerDialect
- All Implemented Interfaces:
FunctionContributor,TypeContributor,ConversionContext
-
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, LEGACY_LOB_MERGE_STRATEGY, LOG_BASE2OF10, NEW_LOCATOR_LOB_MERGE_STRATEGY, QUOTE, STANDARD_MULTI_KEY_LOAD_SIZING_STRATEGY, STREAM_XFER_LOB_MERGE_STRATEGY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidappendBinaryLiteral(SqlAppender appender, byte[] bytes) Append a binary literal to the givenSqlAppender.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).voidappendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone) Append a datetime literal representing the givenjava.timevalue to the givenSqlAppender.voidappendDateTimeLiteral(SqlAppender appender, Calendar calendar, TemporalType precision, TimeZone jdbcTimeZone) Append a datetime literal representing the givenCalendarvalue to the givenSqlAppender.voidappendDateTimeLiteral(SqlAppender appender, Date date, TemporalType precision, TimeZone jdbcTimeZone) Append a datetime literal representing the givenDatevalue to the givenSqlAppender.appendLockHint(LockOptions lockOptions, String tableName) Some dialects support an alternative means toSELECT FOR UPDATE, whereby a "lock hint" is appended to the table name in thefromclause.voidappendUUIDLiteral(SqlAppender appender, UUID literal) Append a literal SQLuuidrepresenting the given JavaUUID.buildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData) TheIdentifierHelperindicated by this dialect for handling identifier conversions.An instance ofSQLExceptionConversionDelegatefor interpreting dialect-specific error or SQLState codes.castPattern(CastType from, CastType to) Obtain a pattern for the SQL equivalent to acast()function call.protected StringcastType(int sqlTypeCode) The SQL type to use incast( ... as ... )expressions when casting to the target type represented by the given JDBC type code.charThe character specific to this dialect used to close a quoted identifier.protected StringcolumnType(int sqlTypeCode) voidcontributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) A callback which allows theDialectto contribute types.createOptionalTableUpdateOperation(EntityMutationTarget mutationTarget, OptionalTableUpdate optionalTableUpdate, SessionFactoryImplementor factory) Create aMutationOperationfor a updating an optional tableTranslation of the HQL/JPQLcurrent_timefunction, which maps to the Java typeTimewhich is a time with no time zone.Translation of the HQL/JPQLcurrent_timestampfunction, which maps to the Java typeTimestampwhich is a datetime with no time zone.Translation of the HQLoffset_datetimefunction, which maps to the Java typeOffsetDateTimewhich is a datetime with a time zone.static ReplacerdatetimeFormat(String format) booleanFor the underlying database, isREAD_COMMITTEDisolation implemented by forcing readers to wait for write locks to be released?booleanFor the underlying database, isREPEATABLE_READisolation implemented by forcing writers to wait for read locks to be released?extractPattern(TemporalUnit unit) Obtain a pattern for the SQL equivalent to anextract()function call.generatedAs(String generatedAs) Thegenerated asclause, or similar, for generated column declarations in DDL statements.getAlterColumnTypeString(String columnName, String columnType, String columnDefinition) The fragment of analter tablecommand which modifies a column type, or null if column types cannot be modified.TheCallableStatementSupportfor this database.getCheckConstraintString(CheckConstraint checkConstraint) Render a SQL check condition forCheckConstraintgetCreateIndexString(boolean unique) The command used to create an index, usuallycreate indexorcreate unique index.getCreateIndexTail(boolean unique, List<Column> columns) A string to be appended to the end of thecreate indexcommand, usually to specify thatnullvalues are to be considered distinct.getCreateTemporaryTableColumnAnnotation(int sqlTypeCode) Annotation to be appended to the end of each COLUMN clause for temporary tables.Get the SQL command used to retrieve the current schema name.The current_timestamp is more accurate, but only known to be supported in SQL Server 7.0 and later and Sybase not known to support it at alllongintThis is the default precision for a generated column of typeTIMESTAMPmapped to aTimestamporLocalDateTime.Get the minimumDmlTargetColumnQualifierSupportrequired by this dialect.String[]getDropSchemaCommand(String schemaName) Get the SQL command used to drop the named schema.longEven though SQL Server only supports 1/10th microsecond precision, we use nanosecond as the "native" precision for datetime arithmetic since it simplifies calculations.Get the appropriateIdentityColumnSupportfor this dialect.intReturn the limit that the underlying database places on the number of elements in anINpredicate.Obtain aLimitHandlerthat implements pagination support forQuery.setMaxResults(int)andQuery.setFirstResult(int).intWhat is the maximum identifier length supported by this dialect?intThe biggest size value that can be supplied as argument to aTypes.NVARCHAR-like type.intThe biggest size value that can be supplied as argument to aTypes.VARCHAR-like type.protected DatabaseVersionGet the version of the SQL dialect that is the minimum supported by this implementation.The fragment used to insert a row without specifying any column values, usually just(), but sometimesdefault values.getQueryHintString(String sql, String hints) Apply a hint to the given SQL query.Get theselectcommand used retrieve the names of all sequences.Get the appropriateSequenceSupportfor this dialect.A customDialect.SizeStrategyfor column types.How the dialect supports time zone types likeTypes.TIMESTAMP_WITH_TIMEZONE.Get theUniqueDelegatesupported by this dialectAViolatedConstraintNameExtractorfor extracting the name of a violated constraint from aSQLException.booleanIs an explicit column type required forgenerated ascolumns?voidinitializeFunctionRegistry(FunctionContributions functionContributions) Initialize the given registry with any dialect-specific functions.charThe character specific to this dialect used to begin a quoted identifier.protected voidregisterColumnTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) Register ANSI-standard column types using the length limits defined byDialect.getMaxVarcharLength(),Dialect.getMaxNVarcharLength(), andDialect.getMaxVarbinaryLength().protected voidRegister the reserved words of ANSI-standard SQL as keywords.resolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry) Assigns an appropriateJdbcTypeto a column of a JDBC result set based on the column type name, JDBC type code, precision, and scale.booleanDoes this dialect support modifying the type of an existing column?booleanDoes this dialect support definition of cascade delete constraints which can cause circular chains?booleanDoes this dialect support some kind ofdistinct frompredicate?booleanDoes this dialect support the givenFETCHclause type.booleanDoes this dialect support thefromclause for update statements?booleanFor dropping a constraint with analter tablestatement, can the phraseif existsbe applied before the constraint name?booleanFor dropping a table, can the phraseif existsbe applied before the table name?booleanDoes this dialect support the SQLlateralkeyword or a proprietary alternative?booleanDoes 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.booleanDoes this dialect support insert, update, and delete statements with Common Table Expressions (CTEs)?booleanDoes this dialect supportNO_WAITtimeout.booleanDoes this dialect supportnulls firstandnulls last?booleanDoes this dialect supportoffsetin subqueries?booleanDoes this dialect/database support recursive CTEs?booleanDoes this dialect support asking the result set its positioning information on forward-only cursors?booleanDoes this dialect supportSKIP_LOCKEDtimeout.booleanDoes this dialect supportvalueslists of formVALUES (1), (2), (3)?booleanDoes this dialect supportWAITtimeout.booleanDoes this dialect support window functions likerow_number() over (..)?timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType) Obtain a pattern for the SQL equivalent to atimestampadd()function call.timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType) Obtain a pattern for the SQL equivalent to atimestampdiff()function call.Return the name used to identify the given unit of duration as an argument to#timestampadd()or#timestampdiff(), or of this dialect's equivalent functions.Return the name used to identify the given field as an argument to theextract()function, or of this dialect's equivalent function.trimPattern(TrimSpec specification, boolean isWhitespace) Obtain a pattern for the SQL equivalent to atrim()function call.Methods inherited from class org.hibernate.dialect.AbstractTransactSQLDialect
applyLocksToSql, getAddColumnString, getDefaultStatementBatchSize, getFallbackSqmInsertStrategy, getFallbackSqmMutationStrategy, getForUpdateString, getNullOrdering, getPreferredSqlTypeCodeForBoolean, getResultSet, getSelectGUIDString, getSupportedTemporaryTableKind, getTemporaryTableAfterUseAction, getTemporaryTableBeforeUseAction, getTemporaryTableCreateCommand, getWriteRowLockStrategy, isCurrentTimestampSelectStringCallable, qualifyIndexName, registerResultSetOutParameter, replaceLtrimRtrim, requiresCastForConcatenatingNonStrings, supportsCurrentTimestampSelection, supportsExistsInSelect, supportsPartitionBy, supportsTupleDistinctCountsMethods inherited from class org.hibernate.dialect.Dialect
addSqlHintOrComment, appendArrayLiteral, appendBooleanValueString, appendCheckConstraintOptions, appendIntervalLiteral, appendLiteral, augmentPhysicalTableTypes, augmentRecognizedTableTypes, canBatchTruncate, canCreateCatalog, canCreateSchema, canDisableConstraints, checkVersion, contribute, contributeFunctions, currentLocalTime, currentLocalTimestamp, defaultScrollMode, doesRoundTemporalOnOverflow, dropConstraints, equivalentTypes, escapeComment, forceLobAsLastValue, getAddColumnSuffixString, getAddForeignKeyConstraintString, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getAggregateSupport, getAlterTableString, getArrayTypeName, getAuxiliaryDatabaseObjectExporter, getBatchLoadSizingStrategy, getBeforeDropStatement, getCascadeConstraintsString, getCaseInsensitiveLike, getCheckCondition, getCheckCondition, getCheckCondition, getCheckCondition, getCheckCondition, getCheckCondition, getColumnAliasExtractor, getColumnComment, getCreateCatalogCommand, getCreateEnumTypeCommand, getCreateEnumTypeCommand, getCreateMultisetTableString, getCreateSchemaCommand, getCreateTableString, getCreateUserDefinedTypeExtensionsString, getCreateUserDefinedTypeKindString, getCrossReferenceParentTableFilter, getDefaultDecimalPrecision, getDefaultIntervalSecondScale, getDefaultNonContextualLobCreation, getDefaultProperties, getDefaultUseGetGeneratedKeys, getDisableConstraintsStatement, getDisableConstraintStatement, getDoublePrecision, getDropCatalogCommand, getDropEnumTypeCommand, getDropEnumTypeCommand, getDropForeignKeyString, getDropTableString, getDropUniqueKeyString, getEnableConstraintsStatement, getEnableConstraintStatement, getEnumTypeDeclaration, getEnumTypeDeclaration, getFallbackSchemaManagementTool, getFloatPrecision, getForeignKeyExporter, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateSkipLockedString, getForUpdateSkipLockedString, getForUpdateString, getForUpdateString, getForUpdateString, getForUpdateString, getFunctionalDependencyAnalysisSupport, getGroupBySelectItemReferenceStrategy, getHqlTranslator, getIndexExporter, getKeywords, getLobMergeStrategy, getLockingStrategy, getLockRowIdentifier, getLowercaseFunction, getMaxAliasLength, getMaxNVarcharCapacity, getMaxVarbinaryCapacity, getMaxVarbinaryLength, getMaxVarcharCapacity, getMultiKeyLoadSizingStrategy, getNationalizationSupport, getNativeIdentifierGeneratorStrategy, getNativeParameterMarkerStrategy, getNullColumnString, getNullColumnString, getParameterCountLimit, getPreferredSqlTypeCodeForArray, getQueryHintString, getReadLockString, getReadLockString, getReadRowLockStrategy, getResultSet, getResultSet, getRowIdColumnString, getSchemaNameResolver, getSelectClauseNullString, getSequenceInformationExtractor, getSqmTranslatorFactory, getTableCleaner, getTableComment, getTableExporter, getTableMigrator, getTableTypeString, getTemporaryTableCreateOptions, getTemporaryTableDdlTransactionHandling, getTemporaryTableDropCommand, getTemporaryTableExporter, getTemporaryTableTruncateCommand, getTimeoutInSeconds, getTruncateTableStatement, getTruncateTableStatements, getUniqueKeyExporter, getUserDefinedTypeComment, getUserDefinedTypeExporter, getVersion, getWriteLockString, getWriteLockString, hasAlterTable, hasSelfReferentialForeignKeyBug, initDefaultProperties, isAnsiNullOn, isEmptyStringTreatedAsNull, isJdbcLogWarningsEnabledByDefault, isLob, ordinal, prependComment, quote, quoteCollation, registerKeyword, registerKeywords, registerResultSetOutParameter, requiresFloatCastingOfIntegerDivision, requiresParensForTupleCounts, requiresParensForTupleDistinctCounts, resolveSqlTypeCode, resolveSqlTypeCode, resolveSqlTypeLength, rowId, rowIdSqlType, supportsBatchUpdates, supportsBindAsCallableArgument, supportsBitType, supportsCascadeDelete, supportsCaseInsensitiveLike, supportsColumnCheck, supportsCommentOn, supportsConflictClauseForInsertCTE, supportsExpectedLobUsagePattern, supportsFractionalTimestampArithmetic, supportsIfExistsAfterAlterTable, supportsIfExistsAfterConstraintName, supportsIfExistsAfterTableName, supportsIfExistsAfterTypeName, supportsIfExistsBeforeTypeName, supportsInsertReturning, supportsInsertReturningGeneratedKeys, supportsInsertReturningRowId, supportsIsTrue, supportsJdbcConnectionLobCreation, supportsLockTimeouts, supportsMaterializedLobAccess, supportsNamedParameters, supportsNationalizedMethods, supportsNoColumnsInsert, supportsOrderByInSubquery, supportsOrdinalSelectItemReference, supportsOuterJoinForUpdate, supportsPredicateAsExpression, supportsRefCursors, supportsStandardArrays, supportsStandardCurrentTimestampFunction, supportsSubqueryInSelect, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsTableOptions, supportsTemporalLiteralOffset, supportsTemporaryTablePrimaryKey, supportsTemporaryTables, supportsTruncateWithCast, supportsTupleCounts, supportsUnboundedLobLocatorMaterialization, supportsUnionAll, supportsUnionInSubquery, supportsUpdateReturning, supportsValuesListForInsert, toBooleanValueString, toQuotedIdentifier, toString, transformSelectString, unquoteGetGeneratedKeys, useArrayForMultiValuedParameters, useConnectionToCreateLob, useCrossReferenceForeignKeys, useFollowOnLocking, useInputStreamToInsertBlob, useMaterializedLobWhenCapacityExceeded
-
Constructor Details
-
SQLServerDialect
public SQLServerDialect() -
SQLServerDialect
-
SQLServerDialect
-
-
Method Details
-
getMinimumSupportedVersion
Description copied from class:DialectGet the version of the SQL dialect that is the minimum supported by this implementation.- Overrides:
getMinimumSupportedVersionin classDialect
-
registerDefaultKeywords
protected void registerDefaultKeywords()Description copied from class:DialectRegister the reserved words of ANSI-standard SQL as keywords.- Overrides:
registerDefaultKeywordsin classDialect- See Also:
-
columnType
Description copied from class:DialectThe database column type name for a given JDBC type code defined inTypesorSqlTypes. This default implementation returns the ANSI-standard type name.This method may be overridden by concrete
Dialects as an alternative toDialect.registerColumnTypes(TypeContributions, ServiceRegistry)for simple registrations.Note that:
- Implementations of this method are expected to define a
sensible mapping for
Types.NCLOBTypes.NCHAR, andTypes.NVARCHAR. On some database, these types are simply remapped toCLOB,CHAR, andVARCHAR. - Mappings for
Types.TIMESTAMPandTypes.TIMESTAMP_WITH_TIMEZONEshould support explicit specification of precision if possible. - As specified by
DdlTypeRegistry.getDescriptor(int), this method never receivesTypes.LONGVARCHAR,Types.LONGNVARCHAR, norTypes.LONGVARBINARY, which are considered synonyms for their non-LONGcounterparts. - On the other hand, the types
SqlTypes.LONG32VARCHAR,SqlTypes.LONG32NVARCHAR, andSqlTypes.LONG32VARBINARYare not synonyms, and implementations of this method must define sensible mappings, for example to database-nativeTEXTorCLOBtypes.
- Overrides:
columnTypein classAbstractTransactSQLDialect- Parameters:
sqlTypeCode- a SQLtype code- Returns:
- a column type name, with
$l,$p,$splaceholders for length, precision, scale - See Also:
- Implementations of this method are expected to define a
sensible mapping for
-
castType
Description copied from class:DialectThe SQL type to use incast( ... as ... )expressions when casting to the target type represented by the given JDBC type code. -
registerColumnTypes
protected void registerColumnTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) Description copied from class:DialectRegister ANSI-standard column types using the length limits defined byDialect.getMaxVarcharLength(),Dialect.getMaxNVarcharLength(), andDialect.getMaxVarbinaryLength().This method is always called when a
Dialectis instantiated.- Overrides:
registerColumnTypesin classDialect
-
resolveSqlTypeDescriptor
public JdbcType resolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry) Description copied from class:DialectAssigns an appropriateJdbcTypeto a column of a JDBC result set based on the column type name, JDBC type code, precision, and scale.- Overrides:
resolveSqlTypeDescriptorin classAbstractTransactSQLDialect- Parameters:
columnTypeName- the column type namejdbcTypeCode- thetype codeprecision- the precision or 0scale- the scale or 0- Returns:
- an appropriate instance of
JdbcType
-
getMaxVarcharLength
public int getMaxVarcharLength()Description copied from class:DialectThe biggest size value that can be supplied as argument to aTypes.VARCHAR-like type.For longer column lengths, use some sort of
text-like type for the column.- Overrides:
getMaxVarcharLengthin classDialect
-
getMaxNVarcharLength
public int getMaxNVarcharLength()Description copied from class:DialectThe biggest size value that can be supplied as argument to aTypes.NVARCHAR-like type.For longer column lengths, use some sort of
ntext-like type for the column.- Overrides:
getMaxNVarcharLengthin classDialect
-
getTimeZoneSupport
Description copied from class:DialectHow the dialect supports time zone types likeTypes.TIMESTAMP_WITH_TIMEZONE.- Overrides:
getTimeZoneSupportin classDialect
-
getDefaultLobLength
public long getDefaultLobLength()Description copied from class:DialectThis is the default length for a generated column of typeBLOBorCLOBmapped toBloborClob, if LOB columns have a length in this dialect.- Overrides:
getDefaultLobLengthin classDialect- Returns:
- 1048576L by default
- See Also:
-
getMaxIdentifierLength
public int getMaxIdentifierLength()Description copied from class:DialectWhat is the maximum identifier length supported by this dialect?- Overrides:
getMaxIdentifierLengthin classDialect- Returns:
- The maximum length.
-
contributeTypes
Description copied from class:DialectA callback which allows theDialectto contribute types.- Overrides:
contributeTypesin classDialect- Parameters:
typeContributions- Callback to contribute the typesserviceRegistry- The service registry
-
initializeFunctionRegistry
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
-
var_samp(arg)- aggregate function -
var_pop(arg)- aggregate function -
stddev_samp(arg)- aggregate function -
stddev_pop(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])
java.timetypes:-
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]) -
repeat(string, times)
-
pi -
log10(arg) -
log(base, arg) -
sign(arg) -
sin(arg) -
cos(arg) -
tan(arg) -
asin(arg) -
acos(arg) -
atan(arg) -
atan2(arg0, arg1) -
round(arg0[, arg1]) -
truncate(arg0[, arg1]) -
sinh(arg) -
tanh(arg) -
cosh(arg) -
least(arg0, arg1, ...) -
greatest(arg0, arg1, ...) -
degrees(arg) -
radians(arg) -
bitand(arg1, arg1) -
bitor(arg1, arg1) -
bitxor(arg1, arg1)
-
format(datetime as pattern) -
collate(string as collation) -
str(arg)- synonym ofcast(a as String) -
ifnull(arg0, arg1)- synonym ofcoalesce(a, b)
extract(), and desugared by the parser:-
second(arg)- synonym ofextract(second from a) -
minute(arg)- synonym ofextract(minute from a) -
hour(arg)- synonym ofextract(hour from a) -
day(arg)- synonym ofextract(day from a) -
month(arg)- synonym ofextract(month from a) -
year(arg)- synonym ofextract(year from a)
second()function returns a floating point value, contrary to the integer type returned by the native function with this name on many databases. Thus, we don't just naively map these HQL functions to the native SQL functions with the same names.- Overrides:
initializeFunctionRegistryin classAbstractTransactSQLDialect
-
-
trimPattern
Description copied from class:DialectObtain a pattern for the SQL equivalent to atrim()function call. The resulting pattern must contain a ?1 placeholder for the argument of typeStringand a ?2 placeholder for the trim character ifisWhitespacewas false.- Overrides:
trimPatternin classAbstractTransactSQLDialect- Parameters:
specification- leading, trailing or bothisWhitespace-trueif the trim character is a whitespace and can be omitted,falseif it must be explicit and a ?2 placeholder should be included in the pattern
-
getSqlAstTranslatorFactory
Description copied from class:Dialect- Overrides:
getSqlAstTranslatorFactoryin classDialect- See Also:
-
getSizeStrategy
Description copied from class:DialectA customDialect.SizeStrategyfor column types.- Overrides:
getSizeStrategyin classDialect
-
castPattern
Description copied from class:DialectObtain a pattern for the SQL equivalent to acast()function call. The resulting pattern must contain ?1 and ?2 placeholders for the arguments.- Overrides:
castPatternin classDialect- Parameters:
from- aCastTypeindicating the type of the value argumentto- aCastTypeindicating the type the value argument is cast to
-
currentTimestamp
Description copied from class:DialectTranslation of the HQL/JPQLcurrent_timestampfunction, which maps to the Java typeTimestampwhich is a datetime with no time zone. This contradicts ANSI SQL wherecurrent_timestamphas the typeTIMESTAMP WITH TIME ZONE.It is recommended to override this in dialects for databases which support
localtimestamportimestamp at local.- Overrides:
currentTimestampin classDialect
-
buildIdentifierHelper
public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData) throws SQLException Description copied from class:DialectTheIdentifierHelperindicated by this dialect for handling identifier conversions. Returningnullis allowed and indicates that Hibernate should fall back to building a "standard" helper. In the fallback path, any changes made to the IdentifierHelperBuilder during this call will still be incorporated into the built IdentifierHelper.The incoming builder will have the following set:
IdentifierHelperBuilder.isGloballyQuoteIdentifiers()IdentifierHelperBuilder.getUnquotedCaseStrategy()- initialized to UPPERIdentifierHelperBuilder.getQuotedCaseStrategy()- initialized to MIXED
By default, Hibernate will do the following:
- Call
IdentifierHelperBuilder.applyIdentifierCasing(DatabaseMetaData) - Call
IdentifierHelperBuilder.applyReservedWords(DatabaseMetaData) - Applies
AnsiSqlKeywords.sql2003()as reserved words - Applies the {#link #sqlKeywords} collected here as reserved words
- Applies the Dialect's
NameQualifierSupport, if it defines one
- Overrides:
buildIdentifierHelperin classDialect- Parameters:
builder- A partially-configuredIdentifierHelperBuilder.dbMetaData- Access to the metadata returned from the driver if needed and if available. WARNING: it may benull.- Returns:
- The
IdentifierHelperinstance to use, ornullto indicate Hibernate should use its fallback path - Throws:
SQLException- Accessing theDatabaseMetaDatacan throw it. Just rethrow and Hibernate will handle it.- See Also:
-
currentTime
Description copied from class:DialectTranslation of the HQL/JPQLcurrent_timefunction, which maps to the Java typeTimewhich is a time with no time zone. This contradicts ANSI SQL wherecurrent_timehas the typeTIME WITH TIME ZONE.It is recommended to override this in dialects for databases which support
localtimeortime at local.- Overrides:
currentTimein classDialect
-
currentDate
Description copied from class:DialectTranslation of the HQL/JPQLcurrent_datefunction, which maps to the Java typeDate, and of the HQLlocal_datefunction which maps to the Java typeLocalDate.- Overrides:
currentDatein classDialect
-
currentTimestampWithTimeZone
Description copied from class:DialectTranslation of the HQLoffset_datetimefunction, which maps to the Java typeOffsetDateTimewhich is a datetime with a time zone. This in principle correctly maps to the ANSI SQLcurrent_timestampwhich has the typeTIMESTAMP WITH TIME ZONE.- Overrides:
currentTimestampWithTimeZonein classDialect
-
getNoColumnsInsertString
Description copied from class:DialectThe fragment used to insert a row without specifying any column values, usually just(), but sometimesdefault values.- Overrides:
getNoColumnsInsertStringin classDialect- Returns:
- The appropriate empty values clause.
-
getLimitHandler
Description copied from class:DialectObtain aLimitHandlerthat implements pagination support forQuery.setMaxResults(int)andQuery.setFirstResult(int).- Overrides:
getLimitHandlerin classDialect
-
supportsValuesList
public boolean supportsValuesList()Description copied from class:DialectDoes this dialect supportvalueslists of formVALUES (1), (2), (3)?- Overrides:
supportsValuesListin classDialect- Returns:
trueifvalueslist are supported
-
supportsDistinctFromPredicate
public boolean supportsDistinctFromPredicate()Description copied from class:DialectDoes this dialect support some kind ofdistinct frompredicate?That is, does it support syntax like:
... where FIRST_NAME IS DISTINCT FROM LAST_NAME
- Overrides:
supportsDistinctFromPredicatein classDialect- Returns:
- True if this SQL dialect is known to support some kind of
distinct frompredicate; false otherwise
-
closeQuote
public char closeQuote()Description copied from class:DialectThe character specific to this dialect used to close a quoted identifier.- Overrides:
closeQuotein classDialect- Returns:
- The dialect-specific close quote character.
-
getCurrentSchemaCommand
Description copied from class:DialectGet the SQL command used to retrieve the current schema name.Works in conjunction with
Dialect.getSchemaNameResolver(), unless the resultingSchemaNameResolverdoes not need this information. For example, a custom implementation might make use of the Java 1.7Connection.getSchema()method.- Overrides:
getCurrentSchemaCommandin classDialect- Returns:
- The current schema retrieval SQL
-
supportsIfExistsBeforeTableName
public boolean supportsIfExistsBeforeTableName()Description copied from class:DialectFor dropping a table, can the phraseif existsbe applied before the table name?- Overrides:
supportsIfExistsBeforeTableNamein classDialect- Returns:
trueifif existscan be applied before the table name
-
supportsIfExistsBeforeConstraintName
public boolean supportsIfExistsBeforeConstraintName()Description copied from class:DialectFor dropping a constraint with analter tablestatement, can the phraseif existsbe applied before the constraint name?- Overrides:
supportsIfExistsBeforeConstraintNamein classDialect- Returns:
trueifif existscan be applied before the constraint name
-
openQuote
public char openQuote()Description copied from class:DialectThe character specific to this dialect used to begin a quoted identifier. -
appendLockHint
Description copied from class:DialectSome dialects support an alternative means toSELECT FOR UPDATE, whereby a "lock hint" is appended to the table name in thefromclause.- Overrides:
appendLockHintin classAbstractTransactSQLDialect- Parameters:
lockOptions- The lock options to applytableName- The name of the table to which to apply the lock hint.- Returns:
- The table with any required lock hints.
-
getCurrentTimestampSelectString
The current_timestamp is more accurate, but only known to be supported in SQL Server 7.0 and later and Sybase not known to support it at allThe command used to retrieve the current timestamp from the database.
- Overrides:
getCurrentTimestampSelectStringin classAbstractTransactSQLDialect
-
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 use
ResultSet.isAfterLast()andResultSet.isBeforeFirst(). Certain drivers do not allow access to these methods for forward-only cursors.- Overrides:
supportsResultSetPositionQueryMethodsOnForwardOnlyCursorin classDialect- Returns:
- True if methods like
ResultSet.isAfterLast()andResultSet.isBeforeFirst()are supported for forward only cursors; false otherwise.
-
supportsCircularCascadeDeleteConstraints
public boolean supportsCircularCascadeDeleteConstraints()Description copied from class:DialectDoes this dialect support definition of cascade delete constraints which can cause circular chains?- Overrides:
supportsCircularCascadeDeleteConstraintsin classDialect- Returns:
- True if circular cascade delete constraints are supported; 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).
- Overrides:
supportsLobValueChangePropagationin classDialect- Returns:
- True if the changes are propagated back to the database; false otherwise.
- For BLOBs, the internal value might be changed by:
-
doesReadCommittedCauseWritersToBlockReaders
public boolean doesReadCommittedCauseWritersToBlockReaders()Description copied from class:DialectFor the underlying database, isREAD_COMMITTEDisolation implemented by forcing readers to wait for write locks to be released?- Overrides:
doesReadCommittedCauseWritersToBlockReadersin classAbstractTransactSQLDialect- Returns:
- True if writers block readers to achieve
READ_COMMITTED; false otherwise.
-
doesRepeatableReadCauseReadersToBlockWriters
public boolean doesRepeatableReadCauseReadersToBlockWriters()Description copied from class:DialectFor the underlying database, isREPEATABLE_READisolation implemented by forcing writers to wait for read locks to be released?- Overrides:
doesRepeatableReadCauseReadersToBlockWritersin classAbstractTransactSQLDialect- Returns:
- True if readers block writers to achieve
REPEATABLE_READ; false otherwise.
-
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 a number smaller than zero.- Overrides:
getInExpressionCountLimitin classDialect- Returns:
- The limit, or a non-positive integer to indicate no limit.
-
getIdentityColumnSupport
Description copied from class:DialectGet the appropriateIdentityColumnSupportfor this dialect.- Overrides:
getIdentityColumnSupportin classAbstractTransactSQLDialect- Returns:
- the IdentityColumnSupport
-
supportsNonQueryWithCTE
public boolean supportsNonQueryWithCTE()Description copied from class:DialectDoes this dialect support insert, update, and delete statements with Common Table Expressions (CTEs)?- Overrides:
supportsNonQueryWithCTEin classDialect- Returns:
trueif non-query statements are supported with CTE
-
supportsSkipLocked
public boolean supportsSkipLocked()Description copied from class:DialectDoes this dialect supportSKIP_LOCKEDtimeout.- Overrides:
supportsSkipLockedin classDialect- Returns:
trueif SKIP_LOCKED is supported
-
supportsNoWait
public boolean supportsNoWait()Description copied from class:DialectDoes this dialect supportNO_WAITtimeout.- Overrides:
supportsNoWaitin classDialect- Returns:
trueifNO_WAITis supported
-
supportsWait
public boolean supportsWait()Description copied from class:DialectDoes this dialect supportWAITtimeout.- Overrides:
supportsWaitin classDialect- Returns:
trueifWAITis supported
-
getSequenceSupport
Description copied from class:DialectGet the appropriateSequenceSupportfor this dialect.- Overrides:
getSequenceSupportin classDialect
-
getQuerySequencesString
Description copied from class:DialectGet theselectcommand used retrieve the names of all sequences.- Overrides:
getQuerySequencesStringin classDialect- Returns:
- The select command; or null if sequences are not supported.
-
getQueryHintString
Description copied from class:DialectApply a hint to the given SQL query.The entire query is provided, allowing full control over the placement and syntax of the hint.
By default, ignore the hint and simply return the query.
- Overrides:
getQueryHintStringin classDialect- Parameters:
sql- The query to which to apply the hint.hints- The hints to apply- Returns:
- The modified SQL
-
supportsNullPrecedence
public boolean supportsNullPrecedence()Description copied from class:DialectDoes this dialect supportnulls firstandnulls last?- Overrides:
supportsNullPrecedencein classDialect
-
supportsOffsetInSubquery
public boolean supportsOffsetInSubquery()Description copied from class:DialectDoes this dialect supportoffsetin subqueries?For example:
select * from Table1 where col1 in (select col1 from Table2 order by col2 limit 1 offset 1)
- Overrides:
supportsOffsetInSubqueryin classDialect- Returns:
trueif it does
-
supportsWindowFunctions
public boolean supportsWindowFunctions()Description copied from class:DialectDoes this dialect support window functions likerow_number() over (..)?- Overrides:
supportsWindowFunctionsin classDialect- Returns:
trueif the underlying database supports window functions,falseotherwise. The default isfalse.
-
supportsLateral
public boolean supportsLateral()Description copied from class:DialectDoes this dialect support the SQLlateralkeyword or a proprietary alternative?- Overrides:
supportsLateralin classDialect- Returns:
trueif the underlying database supports lateral,falseotherwise. The default isfalse.
-
supportsRecursiveCTE
public boolean supportsRecursiveCTE()Description copied from class:DialectDoes this dialect/database support recursive CTEs?- Overrides:
supportsRecursiveCTEin classDialect- Returns:
trueif recursive CTEs are supported
-
supportsFetchClause
Description copied from class:DialectDoes this dialect support the givenFETCHclause type.- Overrides:
supportsFetchClausein classDialect- Parameters:
type- The fetch clause type- Returns:
trueif the underlying database supports the given fetch clause type,falseotherwise. The default isfalse.
-
getViolatedConstraintNameExtractor
Description copied from class:DialectAViolatedConstraintNameExtractorfor extracting the name of a violated constraint from aSQLException.- Specified by:
getViolatedConstraintNameExtractorin interfaceConversionContext- Overrides:
getViolatedConstraintNameExtractorin classDialect
-
buildSQLExceptionConversionDelegate
Description copied from class:DialectAn instance ofSQLExceptionConversionDelegatefor interpreting dialect-specific error or SQLState codes.If this method is overridden to return a non-null value, the default
SQLExceptionConverterwill use the returnedSQLExceptionConversionDelegatein addition to the following standard delegates:- a "static" delegate based on the JDBC4-defined
SQLExceptionhierarchy, and - a delegate that interprets SQLState codes as either X/Open or SQL-2003 codes, depending on what is reported by the JDBC driver.
It is strongly recommended that every
Dialectimplementation override this method, since interpretation of a SQL error is much more accurate when based on the vendor-specific error code, rather than on the SQLState.- Overrides:
buildSQLExceptionConversionDelegatein classDialect- Returns:
- The
SQLExceptionConversionDelegatefor this dialect
- a "static" delegate based on the JDBC4-defined
-
getDefaultTimestampPrecision
public int getDefaultTimestampPrecision()Description copied from class:DialectThis is the default precision for a generated column of typeTIMESTAMPmapped to aTimestamporLocalDateTime.Usually 6 (microseconds) or 3 (milliseconds).
- Overrides:
getDefaultTimestampPrecisionin classDialect- Returns:
- the default precision, in decimal digits, of the fractional seconds field
- See Also:
-
getFractionalSecondPrecisionInNanos
public long getFractionalSecondPrecisionInNanos()Even though SQL Server only supports 1/10th microsecond precision, we use nanosecond as the "native" precision for datetime arithmetic since it simplifies calculations.- Overrides:
getFractionalSecondPrecisionInNanosin classDialect- Returns:
- the precision, specified as a quantity of nanoseconds
- See Also:
-
extractPattern
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
-
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
-
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
-
translateDurationField
Description copied from class:DialectReturn the name used to identify the given unit of duration as an argument to#timestampadd()or#timestampdiff(), or of this dialect's equivalent functions.This method does not need to handle
TemporalUnit.NANOSECOND,TemporalUnit.NATIVE,TemporalUnit.OFFSET,TemporalUnit.DAY_OF_WEEK,TemporalUnit.DAY_OF_MONTH,TemporalUnit.DAY_OF_YEAR,TemporalUnit.DATE,TemporalUnit.TIME,TemporalUnit.TIMEZONE_HOUR,TemporalUnit.TIMEZONE_MINUTE,TemporalUnit.WEEK_OF_YEAR, norTemporalUnit.WEEK_OF_MONTH, which are not units of duration.- Overrides:
translateDurationFieldin classDialect
-
translateExtractField
Description copied from class:DialectReturn the name used to identify the given field as an argument to theextract()function, or of this dialect's equivalent function.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
-
appendDatetimeFormat
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 every 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
In addition, punctuation characters and single-quoted literal strings are accepted.
Appends a pattern accepted by the function that formats dates and times in this dialect to a SQL fragment that is being constructed.
- Overrides:
appendDatetimeFormatin classDialect
-
datetimeFormat
-
appendBinaryLiteral
Description copied from class:DialectAppend a binary literal to the givenSqlAppender.- Overrides:
appendBinaryLiteralin classAbstractTransactSQLDialect
-
appendUUIDLiteral
Description copied from class:DialectAppend a literal SQLuuidrepresenting the given JavaUUID.This is usually a
cast()expression, but it might be a function call.- Overrides:
appendUUIDLiteralin classDialect
-
appendDateTimeLiteral
public void appendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone) Description copied from class:DialectAppend a datetime literal representing the givenjava.timevalue to the givenSqlAppender.- Overrides:
appendDateTimeLiteralin classDialect
-
appendDateTimeLiteral
public void appendDateTimeLiteral(SqlAppender appender, Date date, TemporalType precision, TimeZone jdbcTimeZone) Description copied from class:DialectAppend a datetime literal representing the givenDatevalue to the givenSqlAppender.- Overrides:
appendDateTimeLiteralin classDialect
-
appendDateTimeLiteral
public void appendDateTimeLiteral(SqlAppender appender, Calendar calendar, TemporalType precision, TimeZone jdbcTimeZone) Description copied from class:DialectAppend a datetime literal representing the givenCalendarvalue to the givenSqlAppender.- Overrides:
appendDateTimeLiteralin classDialect
-
getCreateTemporaryTableColumnAnnotation
Description copied from class:DialectAnnotation to be appended to the end of each COLUMN clause for temporary tables.- Overrides:
getCreateTemporaryTableColumnAnnotationin classDialect- Parameters:
sqlTypeCode- The SQL type code- Returns:
- The annotation to be appended, for example,
COLLATE DATABASE_DEFAULTin SQL Server
-
getDropSchemaCommand
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
-
getCreateIndexString
Description copied from class:DialectThe command used to create an index, usuallycreate indexorcreate unique index.- Overrides:
getCreateIndexStringin classDialect- Parameters:
unique-trueif the index is a unique index- Returns:
- The command used to create an index.
-
getCreateIndexTail
Description copied from class:DialectA string to be appended to the end of thecreate indexcommand, usually to specify thatnullvalues are to be considered distinct.- Overrides:
getCreateIndexTailin classDialect
-
getAlterColumnTypeString
public String getAlterColumnTypeString(String columnName, String columnType, String columnDefinition) Description copied from class:DialectThe fragment of analter tablecommand which modifies a column type, or null if column types cannot be modified. Oftenalter column col_name set data type col_type.- Overrides:
getAlterColumnTypeStringin classDialect- Parameters:
columnName- the name of the columncolumnType- the new type of the columncolumnDefinition- the full column definition- Returns:
- a fragment to be appended to
alter table
-
supportsAlterColumnType
public boolean supportsAlterColumnType()Description copied from class:DialectDoes this dialect support modifying the type of an existing column?- Overrides:
supportsAlterColumnTypein classDialect
-
getNameQualifierSupport
Description copied from class:DialectThe support for qualified identifiers.By default, decide based on
DatabaseMetaData.- Overrides:
getNameQualifierSupportin classDialect- Returns:
- The
NameQualifierSupport, or null to useDatabaseMetaData.
-
getUniqueDelegate
Description copied from class:DialectGet theUniqueDelegatesupported by this dialect- Overrides:
getUniqueDelegatein classDialect- Returns:
- The UniqueDelegate
-
getSequenceExporter
Description copied from class:Dialect- Overrides:
getSequenceExporterin classDialect
-
generatedAs
Description copied from class:DialectThegenerated asclause, or similar, for generated column declarations in DDL statements.- Overrides:
generatedAsin classDialect- Parameters:
generatedAs- a SQL expression used to generate the column value- Returns:
- The
generated asclause containing the given expression
-
hasDataTypeBeforeGeneratedAs
public boolean hasDataTypeBeforeGeneratedAs()Description copied from class:DialectIs an explicit column type required forgenerated ascolumns?- Overrides:
hasDataTypeBeforeGeneratedAsin classDialect- Returns:
trueif an explicit type is required
-
createOptionalTableUpdateOperation
public MutationOperation createOptionalTableUpdateOperation(EntityMutationTarget mutationTarget, OptionalTableUpdate optionalTableUpdate, SessionFactoryImplementor factory) Description copied from class:DialectCreate aMutationOperationfor a updating an optional table- Overrides:
createOptionalTableUpdateOperationin classDialect
-
getDmlTargetColumnQualifierSupport
Description copied from class:DialectGet the minimumDmlTargetColumnQualifierSupportrequired by this dialect.- Overrides:
getDmlTargetColumnQualifierSupportin classDialect- Returns:
- the column qualifier support required by this dialect
-
supportsFromClauseInUpdate
public boolean supportsFromClauseInUpdate()Description copied from class:DialectDoes this dialect support thefromclause for update statements?- Overrides:
supportsFromClauseInUpdatein classDialect- Returns:
trueiffromclause is supported
-
getCallableStatementSupport
Description copied from class:DialectTheCallableStatementSupportfor this database. Does this database support returning cursors?- Overrides:
getCallableStatementSupportin classDialect
-
getCheckConstraintString
Description copied from class:DialectRender a SQL check condition forCheckConstraint- Overrides:
getCheckConstraintStringin classDialect- Returns:
- a SQL expression representing the
CheckConstraint
-