Class CockroachDialect
- java.lang.Object
-
- org.hibernate.dialect.Dialect
-
- org.hibernate.dialect.CockroachDialect
-
- All Implemented Interfaces:
ConversionContext
public class CockroachDialect extends Dialect
A dialect for CockroachDB.
-
-
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 CockroachDialect()CockroachDialect(int version)CockroachDialect(int version, PostgreSQLDriverKind driverKind)CockroachDialect(DialectResolutionInfo info)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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).voidappendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone)voidappendDateTimeLiteral(SqlAppender appender, Calendar calendar, TemporalType precision, TimeZone jdbcTimeZone)voidappendDateTimeLiteral(SqlAppender appender, Date date, TemporalType precision, TimeZone jdbcTimeZone)IdentifierHelperbuildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData)Build the IdentifierHelper indicated by this Dialect for handling identifier conversions.voidcontributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)Allows the Dialect to contribute additional typesStringextractPattern(TemporalUnit unit)Theextract()function returnsTemporalUnit.DAY_OF_WEEKnumbered from 0 to 6.StringgetCascadeConstraintsString()The keyword that specifies that adrop tableoperation should be cascaded to its constraints, typically" cascade"where the leading space is required, or the empty string if there is no such keyword in this dialect.StringgetCaseInsensitiveLike()The name of the SQL function that can do case insensitive like comparison.StringgetForUpdateNowaitString()Retrieves the FOR UPDATE NOWAIT syntax specific to this dialect.StringgetForUpdateNowaitString(String aliases)Get the FOR UPDATE OF column_list NOWAIT fragment appropriate for this dialect given the aliases of the columns to be write locked.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(String aliases)Get the FOR UPDATE OF column_list fragment appropriate for this dialect given the aliases of the columns to be write locked.StringgetForUpdateString(String aliases, LockOptions lockOptions)Get the FOR UPDATE OF column_list fragment appropriate for this dialect given the aliases of the columns to be write locked.StringgetForUpdateString(LockOptions lockOptions)Given LockOptions (lockMode, timeout), determine the appropriate for update fragment to use.longgetFractionalSecondPrecisionInNanos()microsecondis the smallest unit for aninterval, and the highest precision for atimestamp.LimitHandlergetLimitHandler()Returns aLimitHandlerthat implements support forQuery.setMaxResults(int)andQuery.setFirstResult(int)for this dialect.NameQualifierSupportgetNameQualifierSupport()By default interpret this based on DatabaseMetaData.NationalizationSupportgetNationalizationSupport()StringgetNativeIdentifierGeneratorStrategy()Resolves the native generation strategy associated to this dialect.StringgetNoColumnsInsertString()The fragment used to insert a row without specifying any column values.NullOrderinggetNullOrdering()Returns the ordering of null.StringgetQuerySequencesString()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.StringgetReadLockString(String aliases, int timeout)Get the string to append to SELECT statements to acquire READ locks for this dialect given the aliases of the columns to be read locked.SequenceSupportgetSequenceSupport()SqlAstTranslatorFactorygetSqlAstTranslatorFactory()Return an SqlAstTranslatorFactory specific for the Dialect.TimeZoneSupportgetTimeZoneSupport()How the Dialect supports time zone types likeTypes.TIMESTAMP_WITH_TIMEZONE.StringgetTypeName(int code, Size size)Get the name of the database type associated with the given java.sql.Types typecode.intgetVersion()StringgetWriteLockString(int timeout)Get the string to append to SELECT statements to acquire WRITE locks for this dialect.StringgetWriteLockString(String aliases, int timeout)Get the string to append to SELECT statements to acquire WRITE locks for this dialect given the aliases of the columns to be write locked.RowLockStrategygetWriteRowLockStrategy()The row lock strategy to use for write locks.voidinitializeFunctionRegistry(QueryEngine queryEngine)Initialize the given registry with any dialect-specific functions.booleanqualifyIndexName()Do we need to qualify index names with the schema name?booleanrequiresParensForTupleDistinctCounts()IfDialect.supportsTupleDistinctCounts()is true, does the Dialect require the tuple to be wrapped with parens?JdbcTyperesolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry)booleansupportsCaseInsensitiveLike()Does this dialect support case insensitive LIKE restrictions?booleansupportsIfExistsAfterAlterTable()For an "alter table", can the phrase "if exists" be applied?booleansupportsIfExistsBeforeConstraintName()For dropping a constraint with an "alter table", can the phrase "if exists" be applied before the constraint name?booleansupportsIfExistsBeforeTableName()For dropping a table, can the phrase "if exists" be applied before the table name?booleansupportsNonQueryWithCTE()Does this dialect/database support non-query statements (e.g.booleansupportsNoWait()Does this dialect/database support NO_WAIT timeout.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?booleansupportsPartitionBy()Does the underlying database support partition bybooleansupportsSkipLocked()Does this dialect/database support SKIP_LOCKED timeout.booleansupportsTupleCounts()Does this dialect support `count(a,b)`?booleansupportsValuesList()Does this dialect/database support VALUES list (e.g.booleansupportsWait()Does this dialect/database support WAIT timeout.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.StringtranslateDurationField(TemporalUnit unit)Return the name used to identify the given unit of duration as an argument to#timestampadd()or#timestampdiff(), or of this dialect'sequivalentfunctions.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, appendBinaryLiteral, appendIntervalLiteral, appendLiteral, appendLockHint, applyLocksToSql, augmentRecognizedTableTypes, binaryToDecimalPrecision, buildSQLExceptionConversionDelegate, canCreateCatalog, canCreateSchema, castPattern, closeQuote, currentDate, currentLocalTime, currentLocalTimestamp, currentTime, currentTimestamp, currentTimestampWithTimeZone, defaultScrollMode, doesReadCommittedCauseWritersToBlockReaders, doesRepeatableReadCauseReadersToBlockWriters, dropConstraints, equivalentTypes, escapeComment, forceLobAsLastValue, getAddColumnString, getAddColumnSuffixString, getAddForeignKeyConstraintString, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getAlterTableString, getAuxiliaryDatabaseObjectExporter, getBooleanCheckCondition, getCallableStatementSupport, getCastTypeName, getColumnAliasExtractor, getColumnComment, getCreateCatalogCommand, getCreateMultisetTableString, getCreateSchemaCommand, getCreateTableString, getCreateTemporaryTableColumnAnnotation, getCurrentSchemaCommand, getCurrentTimestampSelectString, getDefaultBatchLoadSizingStrategy, getDefaultDecimalPrecision, getDefaultLobLength, getDefaultProperties, getDefaultTimestampPrecision, getDoublePrecision, getDropCatalogCommand, getDropForeignKeyString, getDropSchemaCommand, getDropTableString, getEnumCheckCondition, getFallbackSqmMutationStrategy, getFloatPrecision, getForeignKeyExporter, getForUpdateString, getForUpdateString, getGroupBySelectItemReferenceStrategy, getHibernateTypeName, getHibernateTypeName, getHqlTranslator, getIdentityColumnSupport, getIndexExporter, getInExpressionCountLimit, getKeywords, getLobMergeStrategy, getLockingStrategy, getLockRowIdentifier, getLowercaseFunction, getMaxAliasLength, getNullColumnString, getNullColumnString, getPreferredSqlTypeCodeForBoolean, getQueryHintString, getQueryHintString, getRawTypeName, getRawTypeName, getReadRowLockStrategy, getResultSet, getResultSet, getResultSet, getSchemaNameResolver, getSelectClauseNullString, getSelectGUIDString, getSequenceExporter, getSequenceInformationExtractor, getSizeStrategy, getSqmTranslatorFactory, getTableComment, getTableExporter, getTableTypeString, getTypeName, getTypeName, getTypeName, getUniqueDelegate, getUniqueKeyExporter, getViolatedConstraintNameExtractor, hasAlterTable, hasSelfReferentialForeignKeyBug, inlineLiteral, isAnsiNullOn, isCurrentTimestampSelectStringCallable, isEmptyStringTreatedAsNull, isJdbcLogWarningsEnabledByDefault, isLockTimeoutParameterized, isTypeNameRegistered, openQuote, prependComment, quote, registerColumnType, registerColumnType, registerDefaultKeywords, registerHibernateType, registerHibernateType, registerKeyword, registerKeywords, registerResultSetOutParameter, registerResultSetOutParameter, requiresFloatCastingOfIntegerDivision, requiresParensForTupleCounts, resolveSqlTypeLength, supportsBindAsCallableArgument, supportsBitType, supportsCascadeDelete, supportsCircularCascadeDeleteConstraints, supportsColumnCheck, supportsCommentOn, supportsCurrentTimestampSelection, supportsExistsInSelect, supportsExpectedLobUsagePattern, supportsFetchClause, supportsFractionalTimestampArithmetic, supportsIfExistsAfterConstraintName, supportsIfExistsAfterTableName, supportsJdbcConnectionLobCreation, supportsLobValueChangePropagation, supportsLockTimeouts, supportsNamedParameters, supportsNoColumnsInsert, supportsOrderByInSubquery, supportsOrdinalSelectItemReference, supportsParametersInInsertSelect, supportsResultSetPositionQueryMethodsOnForwardOnlyCursor, supportsSubqueryInSelect, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsTemporalLiteralOffset, supportsTemporaryTables, supportsTruncateWithCast, supportsTupleDistinctCounts, supportsUnboundedLobLocatorMaterialization, supportsUnionAll, supportsUnionInSubquery, supportsValuesListForInsert, toBooleanValueString, toString, transformSelectString, trimPattern, useFollowOnLocking, useInputStreamToInsertBlob
-
-
-
-
Constructor Detail
-
CockroachDialect
public CockroachDialect()
-
CockroachDialect
public CockroachDialect(DialectResolutionInfo info)
-
CockroachDialect
public CockroachDialect(int version)
-
CockroachDialect
public CockroachDialect(int version, PostgreSQLDriverKind driverKind)
-
-
Method Detail
-
getTypeName
public String getTypeName(int code, Size size) throws HibernateException
Description copied from class:DialectGet the name of the database type associated with the given java.sql.Types typecode.- Overrides:
getTypeNamein classDialect- Parameters:
code- java.sql.Types typecodesize- the length, precision, scale of the column- Returns:
- the database type name
- Throws:
HibernateException
-
resolveSqlTypeDescriptor
public JdbcType resolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry)
- Overrides:
resolveSqlTypeDescriptorin classDialect
-
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
-
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
-
getTimeZoneSupport
public TimeZoneSupport getTimeZoneSupport()
Description copied from class:DialectHow the Dialect supports time zone types likeTypes.TIMESTAMP_WITH_TIMEZONE.- Overrides:
getTimeZoneSupportin classDialect
-
appendBooleanValueString
public void appendBooleanValueString(SqlAppender appender, boolean bool)
- Overrides:
appendBooleanValueStringin classDialect
-
getCascadeConstraintsString
public String getCascadeConstraintsString()
Description copied from class:DialectThe keyword that specifies that adrop tableoperation should be cascaded to its constraints, typically" cascade"where the leading space is required, or the empty string if there is no such keyword in this dialect.- Overrides:
getCascadeConstraintsStringin classDialect- Returns:
- The cascade drop keyword, if any, with a leading space
-
supportsIfExistsBeforeTableName
public boolean supportsIfExistsBeforeTableName()
Description copied from class:DialectFor dropping a table, can the phrase "if exists" be applied before the table name? NOTE : Only one or the other (or neither) of this andDialect.supportsIfExistsAfterTableName()should return true- Overrides:
supportsIfExistsBeforeTableNamein classDialect- Returns:
trueif the "if exists" can be applied before the table name
-
supportsIfExistsBeforeConstraintName
public boolean supportsIfExistsBeforeConstraintName()
Description copied from class:DialectFor dropping a constraint with an "alter table", can the phrase "if exists" be applied before the constraint name? NOTE : Only one or the other (or neither) of this andDialect.supportsIfExistsAfterConstraintName()should return true- Overrides:
supportsIfExistsBeforeConstraintNamein classDialect- Returns:
trueif the "if exists" can be applied before the constraint name
-
supportsIfExistsAfterAlterTable
public boolean supportsIfExistsAfterAlterTable()
Description copied from class:DialectFor an "alter table", can the phrase "if exists" be applied?- Overrides:
supportsIfExistsAfterAlterTablein classDialect- Returns:
trueif the "if exists" can be applied after ALTER TABLE
-
qualifyIndexName
public boolean qualifyIndexName()
Description copied from class:DialectDo we need to qualify index names with the schema name?- Overrides:
qualifyIndexNamein classDialect- Returns:
- boolean
-
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
-
getNoColumnsInsertString
public String getNoColumnsInsertString()
Description copied from class:DialectThe fragment used to insert a row without specifying any column values. This is not possible on some databases.- Overrides:
getNoColumnsInsertStringin classDialect- Returns:
- The appropriate empty values clause.
-
getCaseInsensitiveLike
public String getCaseInsensitiveLike()
Description copied from class:DialectThe name of the SQL function that can do case insensitive like comparison.- Overrides:
getCaseInsensitiveLikein classDialect- Returns:
- The dialect-specific "case insensitive" like function.
-
supportsCaseInsensitiveLike
public boolean supportsCaseInsensitiveLike()
Description copied from class:DialectDoes this dialect support case insensitive LIKE restrictions?- Overrides:
supportsCaseInsensitiveLikein classDialect- Returns:
trueif the underlying database supports case insensitive like comparison,falseotherwise. The default isfalse.
-
supportsNullPrecedence
public boolean supportsNullPrecedence()
- Overrides:
supportsNullPrecedencein classDialect
-
getNullOrdering
public NullOrdering getNullOrdering()
Description copied from class:DialectReturns the ordering of null.- Overrides:
getNullOrderingin classDialect
-
supportsTupleCounts
public boolean supportsTupleCounts()
Description copied from class:DialectDoes this dialect support `count(a,b)`?- Overrides:
supportsTupleCountsin classDialect- Returns:
- True if the database supports counting tuples; false otherwise.
-
requiresParensForTupleDistinctCounts
public boolean requiresParensForTupleDistinctCounts()
Description copied from class:DialectIfDialect.supportsTupleDistinctCounts()is true, does the Dialect require the tuple to be wrapped with parens?- Overrides:
requiresParensForTupleDistinctCountsin classDialect- Returns:
- boolean
-
getNativeIdentifierGeneratorStrategy
public String getNativeIdentifierGeneratorStrategy()
Description copied from class:DialectResolves the native generation strategy associated to this dialect. Comes into play whenever the user specifies the native generator.- Overrides:
getNativeIdentifierGeneratorStrategyin classDialect- Returns:
- The native generator strategy.
-
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
-
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()
-
getNationalizationSupport
public NationalizationSupport getNationalizationSupport()
- Overrides:
getNationalizationSupportin classDialect
-
appendDateTimeLiteral
public void appendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone)
- Overrides:
appendDateTimeLiteralin classDialect
-
appendDateTimeLiteral
public void appendDateTimeLiteral(SqlAppender appender, Date date, TemporalType precision, TimeZone jdbcTimeZone)
- Overrides:
appendDateTimeLiteralin classDialect
-
appendDateTimeLiteral
public void appendDateTimeLiteral(SqlAppender appender, Calendar calendar, TemporalType precision, TimeZone jdbcTimeZone)
- Overrides:
appendDateTimeLiteralin classDialect
-
extractPattern
public String extractPattern(TemporalUnit unit)
Theextract()function returnsTemporalUnit.DAY_OF_WEEKnumbered from 0 to 6. This isn't consistent with what most other databases do, so here we adjust the result by generating(extract(dayofweek,arg)+1)).- Overrides:
extractPatternin classDialect- Parameters:
unit- the first argument
-
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
-
getFractionalSecondPrecisionInNanos
public long getFractionalSecondPrecisionInNanos()
microsecondis the smallest unit for aninterval, and the highest precision for atimestamp.- Overrides:
getFractionalSecondPrecisionInNanosin classDialect- Returns:
- the precision, specified as a quantity of nanoseconds
- See Also:
TemporalUnit.NATIVE
-
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
public String translateDurationField(TemporalUnit unit)
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'sequivalentfunctions.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
-
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
-
getLimitHandler
public LimitHandler getLimitHandler()
Description copied from class:DialectReturns aLimitHandlerthat implements support forQuery.setMaxResults(int)andQuery.setFirstResult(int)for this dialect.- Overrides:
getLimitHandlerin classDialect
-
getForUpdateString
public String getForUpdateString(String aliases)
Description copied from class:DialectGet the FOR UPDATE OF column_list fragment appropriate for this dialect given the aliases of the columns to be write locked.- Overrides:
getForUpdateStringin classDialect- Parameters:
aliases- The columns to be write locked.- Returns:
- The appropriate FOR UPDATE OF column_list clause string.
-
getForUpdateString
public String getForUpdateString(LockOptions lockOptions)
Description copied from class:DialectGiven LockOptions (lockMode, timeout), determine the appropriate for update fragment to use.- Overrides:
getForUpdateStringin classDialect- Parameters:
lockOptions- contains the lock mode to apply.- Returns:
- The appropriate for update fragment.
-
getForUpdateString
public String getForUpdateString(String aliases, LockOptions lockOptions)
Description copied from class:DialectGet the FOR UPDATE OF column_list fragment appropriate for this dialect given the aliases of the columns to be write locked.- Overrides:
getForUpdateStringin classDialect- Parameters:
aliases- The columns to be write locked.lockOptions- the lock options to apply- Returns:
- The appropriate FOR UPDATE OF column_list 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.
-
getWriteLockString
public String getWriteLockString(String aliases, int timeout)
Description copied from class:DialectGet the string to append to SELECT statements to acquire WRITE locks for this dialect given the aliases of the columns to be write locked. Location of the of the returned string is treated the same as getForUpdateString.- Overrides:
getWriteLockStringin classDialect- Parameters:
aliases- The columns to be read locked.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.
-
getReadLockString
public String getReadLockString(String aliases, int timeout)
Description copied from class:DialectGet the string to append to SELECT statements to acquire READ locks for this dialect given the aliases of the columns to be read locked. Location of the returned string is treated the same as getForUpdateString.- Overrides:
getReadLockStringin classDialect- Parameters:
aliases- The columns to be read locked.timeout- in milliseconds, -1 for indefinite wait and 0 for no wait.- Returns:
- The appropriate LOCK clause string.
-
getForUpdateNowaitString
public String getForUpdateNowaitString()
Description copied from class:DialectRetrieves the FOR UPDATE NOWAIT syntax specific to this dialect.- Overrides:
getForUpdateNowaitStringin classDialect- Returns:
- The appropriate FOR UPDATE NOWAIT clause string.
-
getForUpdateNowaitString
public String getForUpdateNowaitString(String aliases)
Description copied from class:DialectGet the FOR UPDATE OF column_list NOWAIT fragment appropriate for this dialect given the aliases of the columns to be write locked.- Overrides:
getForUpdateNowaitStringin classDialect- Parameters:
aliases- The columns to be write locked.- Returns:
- The appropriate FOR UPDATE OF colunm_list NOWAIT clause string.
-
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.
-
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.
-
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.
-
supportsNoWait
public boolean supportsNoWait()
Description copied from class:DialectDoes this dialect/database support NO_WAIT timeout.- Overrides:
supportsNoWaitin classDialect- Returns:
trueif NO_WAIT is supported
-
supportsWait
public boolean supportsWait()
Description copied from class:DialectDoes this dialect/database support WAIT timeout.- Overrides:
supportsWaitin classDialect- Returns:
trueif WAIT is supported
-
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
-
getWriteRowLockStrategy
public RowLockStrategy getWriteRowLockStrategy()
Description copied from class:DialectThe row lock strategy to use for write locks.- Overrides:
getWriteRowLockStrategyin classDialect
-
getNameQualifierSupport
public NameQualifierSupport getNameQualifierSupport()
Description copied from class:DialectBy default interpret this based on DatabaseMetaData.- Overrides:
getNameQualifierSupportin classDialect- Returns:
- The NameQualifierSupport.
-
buildIdentifierHelper
public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData) throws SQLException
Description copied from class:DialectBuild the IdentifierHelper indicated by this Dialect for handling identifier conversions. Returningnullis allowed and indicates that Hibernate should fallback 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
- 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 semi-configured IdentifierHelper builder.dbMetaData- Access to the metadata returned from the driver if needed and if available. WARNING: may benull- Returns:
- The IdentifierHelper instance to use, or
nullto indicate Hibernate should use its fallback path - Throws:
SQLException- Accessing the DatabaseMetaData can throw it. Just re-throw and Hibernate will handle.- See Also:
Dialect.getNameQualifierSupport()
-
-