Class OracleDialect
- All Implemented Interfaces:
CheckConstraintSupport, ForeignKeySupport, IdentifierSupport, KeywordSupport, LiteralSupport, AlterTableSupport, ColumnDefinitionSupport, ConstraintControlSupport, IndexDdlSupport, TableCreationSupport, TruncateSupport, CurrentTemporalSupport, TemporalFormatSupport, TemporalOperationSupport, ConversionContext
- Direct Known Subclasses:
OracleSpatial10gDialect, OracleSpatialSDO10gDialect
Please refer to the Oracle documentation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final booleanprotected final booleanprotected final intprotected final intprotected final booleanFields inherited from class Dialect
LEGACY_LOB_MERGE_STRATEGY, NEW_LOCATOR_LOB_MERGE_STRATEGY, STANDARD_MULTI_KEY_LOAD_SIZING_STRATEGY, STREAM_XFER_LOB_MERGE_STRATEGYFields inherited from interface ConstraintControlSupport
NONEFields inherited from interface TruncateSupport
STANDARD -
Constructor Summary
ConstructorsConstructorDescriptionOracleDialect(DatabaseVersion version) OracleDialect(DialectResolutionInfo info, OracleServerConfiguration serverConfiguration) -
Method Summary
Modifier and TypeMethodDescriptionalterColumnType(AlterColumnTypeRequest request) voidappendBinaryLiteral(SqlAppender appender, byte[] bytes) Append a SQL binary literal.voidappendBooleanValueString(SqlAppender appender, boolean bool) Append a SQL Boolean literal expression.voidappendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone) Append a datetime literal for ajava.timevalue.voidappendDefinition(SqlAppender appender, ColumnDefinitionRequest request) voidappendFormat(SqlAppender appender, String format) Append the database translation of the supplied Hibernate format pattern.Build and supply the configured identifier helper from the stable JDBC metadata snapshot and selected keyword strategy.Supplies vendor-specific SQL-exception conversion for this Dialect.castPattern(CastType from, CastType to) type orTypes.TIMEtype, and its default behavior for casting dates and timestamps to and from strings is just awful.protected StringcolumnType(int sqlTypeCode) protected voidcontributeDefaultProperties(Properties properties) Contribute provider configuration defaults after Dialect construction.voidcontributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) Contribute database-specific Java, JDBC, DDL, and basic type descriptors.Creates the JDBC mutation operation for an optional-table update.Render the current SQL date expression.Render the current local-time expression.Render the current local-timestamp expression.Render the current SQL time expression used forjava.sql.Time.Render the current SQL timestamp expression used forjava.sql.Timestamp.Render the current timestamp-with-time-zone expression.static ReplacerdatetimeFormat(String format, boolean useFm, boolean resetFm) extractPattern(TemporalUnit unit) Oracle supports a limited list of temporal fields in the extract() function, but we can emulate some of them by using to_char() with a format string instead of extract().longWe minimize multiplicative factors by using seconds (with fractional part) as the "native" precision for duration arithmetic.Supply the aggregate-column mapping, DDL, read, assignment, and write behavior for this dialect.getArrayTypeName(String javaElementTypeName, String elementTypeName, Integer maxLength) Render an array type name from the independent Java element name, rendered SQL element name, and optional maximum length.Supply the callable-statement protocol for this database and JDBC driver.static String[]getCreateVarcharEnumTypeCommand(String name, String[] values) Used to generate theCREATEDDL command for Data Use Case Domain based onVARCHAR2values.The common-table-expression capabilities of this Dialect.Supply current temporal expressions and database-side timestamp retrieval.Select the JDBC command used for database-side current timestamp retrieval, or returnnullwhen the database offers no supported command.The qualifier form accepted for target-column references in update and delete statements.intintSupply the database's finite-domain declaration, lifecycle, and check strategy.Supply thefetchclause forms accepted by this database.Supply the stable profile describing immediate retrieval of arbitrary database-generated values for this Dialect.Supplies this Dialect's global temporary-table strategy.Supply the stable identity-column DDL, insert syntax, and identity-specific retrieval behavior for this Dialect.Supply existence-check placement for schema DDL targets.getInformationExtractor(ExtractionContext extractionContext) Supply the context-bound strategy Hibernate uses to discover database tables, keys, indexes, and related schema metadata.Supplies execution-time pagination for already-rendered SQL requested byQuery.setMaxResults(int)orQuery.setFirstResult(int).Supply the database and driver policy for LOB creation, binding, materialization, type classification, mutation ordering, and VALUE LOB DDL.Supplies this Dialect's local temporary-table strategy.Supplies the cohesive pessimistic-locking profile for this Dialect.intReturn the safe maximum length of a generated SQL alias, including room for Hibernate's generated suffix.intReturn the database's maximum identifier length.protected intOracle doesn't support thegenerate_seriesfunction orlateralrecursive CTEs, so it has to be emulated with a top level recursive CTE which requires an upper bound on the amount of elements that the series can return.protected DatabaseVersionGet the version of the SQL dialect that is the minimum supported by this implementation.Select the Hibernate-owned fallback families used for SQM update/delete and insert operations targeting entities mapped to multiple tables.The native SQL mutation-syntax capabilities of this Dialect.Supply catalog and schema lifecycle behavior to schema tooling.Supply the semantic identifier-generation type used for native generation.Supplies the database limits forIN-expression elements and total JDBC statement parameters.intSelect the defaultSqlTypescode for a basic Java array or collection.intSelect the defaultSqlTypescode for Javabooleanmappings.getQueryHintString(String sql, String hints) Apply a hint to the given SQL query.getQueryHintString(String query, List<String> hintList) Apply a hint to the given SQL query.Supply the stable factory which creates this Dialect's JDBC REF_CURSOR registration and extraction service.Supply the database's row-locator expression, JDBC type, and optional physical-column declaration policy.The native row-value syntax of this Dialect.Supply schema-export support for comments attached to database objects.Supply schema-drop composition and ordered pre-drop commands.Supply the strategy Hibernate uses to discover existing database sequences and their metadata.Supplies the complete sequence value-expression and lifecycle-DDL strategy for this Dialect.Supplies the database's set operators and structural query-group capabilities.getSetOperatorSqlString(SetOperator setOperator) Get the SQL string representation for a specific set operator (UNION, INTERSECT, EXCEPT).Supply the SQL renderings used for a reusable single-row table and for an otherwise table-less select.Supply the factory for this Dialect's single-use SQL AST translators.Supply the database's stable string-value semantics.Supplies the database's supported subquery placements.Supply the exporter used to create and drop relational tables.Supply datetime-format translation.Supply extraction and timestamp-arithmetic syntax.Supplies the complete temporal-table DDL and historical-query strategy for this Dialect.Select the database's support profile for SQLwith time zonetypes.Supplies the database syntax for ordinary and distinct tuple counts.Supplies this Dialect's resolved type-sizing limits and defaults.Supply the stable strategy used for unique-key representation and DDL.Supply the exporter used to create and drop user-defined types.The contexts in which this Dialect supports native multi-rowvaluessyntax.Supplies the extractor used to recover violated constraint names from database exceptions.Supplies the native window-function syntax supported by this database.voidinitializeFunctionRegistry(FunctionContributions functionContributions) Contribute the database-specific function descriptors after independent function contributors have run.booleanbooleanbooleanprotected static voidregisterArrayFunctions(CommonFunctionFactory functionFactory) protected voidregisterColumnTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) Register the inherited ANSI-oriented DDL type descriptors during Dialect type contribution.protected static voidregisterJsonFunctions(CommonFunctionFactory functionFactory) protected static voidregisterXmlFunctions(CommonFunctionFactory functionFactory) render(CheckConstraintRenderRequest request) resolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry) Resolve the non-null JDBC descriptor for result-set metadata.booleanWhether mapped aggregate structures may be represented as database user-defined types.booleanWhether schema-management DDL commands require a short delay before execution to accommodate database-side propagation.timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType) Return a timestamp-add pattern containing?1,?2, and?3.timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType) Return a timestamp-difference pattern containing?1,?2, and?3.Methods inherited from class Dialect
addPartitionKeyToPrimaryKey, appendArrayLiteral, appendDateTimeLiteral, appendDateTimeLiteral, augmentPhysicalTableTypes, augmentRecognizedTableTypes, buildLockingClauseStrategy, buildStringToBooleanCast, buildStringToBooleanCastDecode, castType, causesRollback, contributeKeywords, defaultScrollMode, determineDatabaseVersion, equivalentTypes, getAlterTableSupport, getArraySupport, getBatchLoadSizingStrategy, getCatalogSeparator, getCheckConstraintSupport, getColumnAliasExtractor, getColumnDefinitionSupport, getConstraintControlSupport, getDefaultOrdinalityColumnName, getDefaultProperties, getDirectJavaTimeJdbcSupport, getEntityLockingStrategyFactory, getExpressionCoercionSupport, getForeignKeyExporter, getForeignKeySupport, getFunctionalDependencyAnalysisSupport, getIdentifierSupport, getIndexDdlSupport, getIndexExporter, getJdbcMetadataOverrides, getKeywords, getKeywordSupport, getLiteralSupport, getLobMergeStrategy, getLockingClauseStrategy, getLowercaseFunction, getMultiKeyLoadSizingStrategy, getNameQualifierSupport, getNationalizationSupport, getNativeParameterMarkerStrategy, getNullOrderingSupport, getObjectNullBindingStrategy, getPersistentTemporaryTableStrategy, getPredicateSupport, getQueryHintPlacement, getRowLevelSecurity, getSchemaNameResolver, getSelectClauseNullString, getSequenceExporter, getSizeStrategy, getSyntheticTableGroupSupport, getTableCleaner, getTableCreationSupport, getTableMigrator, getTemporalValueSemantics, getTemporaryTableExporter, getTruncateSupport, getVersion, isJdbcLogWarningsEnabledByDefault, narrowCastType, resolveSqlTypeCode, resolveSqlTypeCode, resolveSqlTypeLength, supportsCrossJoin, supportsFilterClause, supportsNationalizedMethods, supportsOrdinalSelectItemReference, toString, trimPattern, truncateModeMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface AlterTableSupport
addColumnSuffix, alterTableCommandMethods inherited from interface CheckConstraintSupport
supportsMethods inherited from interface ConstraintControlSupport
disableCommands, enableCommandsMethods inherited from interface CurrentTemporalSupport
isCurrentTimestampStable, usesStandardCurrentTimestampFunctionMethods inherited from interface ForeignKeySupport
renderAddConstraint, renderDropConstraint, requiresSelfReferentialForeignKeyNullification, supportsAlterTableConstraints, supportsOnDeleteActionMethods inherited from interface IdentifierSupport
closeQuote, openQuote, quote, quoteCollation, toQuotedIdentifierMethods inherited from interface IndexDdlSupport
createCommand, createTail, nameQualificationMethods inherited from interface KeywordSupport
acceptsJdbcKeywordMethods inherited from interface LiteralSupport
appendIntervalLiteral, appendIntervalLiteral, appendLiteral, appendUUIDLiteral, toBooleanValueStringMethods inherited from interface TableCreationSupport
createTableCommand, requiresViewColumnList, tableCreationOptionsMethods inherited from interface TemporalOperationSupport
translateDurationField, translateExtractFieldMethods inherited from interface TruncateSupport
renderCommands
-
Field Details
-
autonomous
protected final boolean autonomous -
extended
protected final boolean extended -
applicationContinuity
protected final boolean applicationContinuity -
driverMajorVersion
protected final int driverMajorVersion -
driverMinorVersion
protected final int driverMinorVersion
-
-
Constructor Details
-
OracleDialect
public OracleDialect() -
OracleDialect
-
OracleDialect
-
OracleDialect
-
-
Method Details
-
getTemporalOperationSupport
Description copied from class:DialectSupply extraction and timestamp-arithmetic syntax. Return one stable, non-null, thread-safe implementation. Providers may implementTemporalOperationSupportdirectly and returnthis.- Overrides:
getTemporalOperationSupportin classDialect- See Also:
-
getTemporalFormatSupport
Description copied from class:DialectSupply datetime-format translation. Return one stable, non-null, thread-safe implementation.- Overrides:
getTemporalFormatSupportin classDialect- See Also:
-
getCurrentTemporalSupport
Description copied from class:DialectSupply current temporal expressions and database-side timestamp retrieval. Return one stable, non-null, thread-safe implementation. Providers may implementCurrentTemporalSupportdirectly and returnthis.- Overrides:
getCurrentTemporalSupportin classDialect- See Also:
-
getTypeSizingProfile
Description copied from class:DialectSupplies this Dialect's resolved type-sizing limits and defaults.
Return
TypeSizingProfile.STANDARDwhen no dimension differs. Construct one stable immutable profile after version and server configuration are known. A family Dialect may copy its superclass profile, but must set every effective dimension which formerly changed through scalar-method delegation because profile builder setters do not cascade.- Overrides:
getTypeSizingProfilein classDialect
-
isAutonomous
public boolean isAutonomous() -
isExtended
public boolean isExtended() -
isApplicationContinuity
public boolean isApplicationContinuity() -
getMinimumSupportedVersion
Description copied from class:DialectGet the version of the SQL dialect that is the minimum supported by this implementation.This method is called during superclass construction. Implementations must return construction-safe immutable data and must not depend on subclass initialization.
- Overrides:
getMinimumSupportedVersionin classDialect
-
getPreferredSqlTypeCodeForBoolean
Description copied from class:DialectSelect the default
SqlTypescode for Javabooleanmappings.Return a Boolean-compatible code such as
SqlTypes.BOOLEAN,SqlTypes.BIT,SqlTypes.SMALLINT,SqlTypes.TINYINT, orSqlTypes.INTEGER. Thehibernate.type.preferred_boolean_jdbc_typesetting takes precedence over this Dialect default. This method selects a type code; contribute a JDBC descriptor or customize DDL rendering through their dedicated contracts.- Overrides:
getPreferredSqlTypeCodeForBooleanin classDialect- Returns:
- a Boolean-compatible type code defined by
SqlTypes - See Also:
-
appendBooleanValueString
Description copied from interface:LiteralSupportAppend a SQL Boolean literal expression.- Specified by:
appendBooleanValueStringin interfaceLiteralSupport
-
initializeFunctionRegistry
@SPI({IMPLEMENT,SUPPLY}) public void initializeFunctionRegistry(FunctionContributions functionContributions) Description copied from class:DialectContribute the database-specific function descriptors after independent function contributors have run.
Override this callback to extend or replace the inherited function set. Invoke
superfirst to retain Hibernate's standard and emulated registrations; omitting it deliberately replaces that set. Mutate the supplied boot-scoped function registry only during this callback, and do not retain the contribution context or registry afterward. Implement an independentFunctionContributorinstead when the contribution is not owned by a Dialect.- Overrides:
initializeFunctionRegistryin classDialect- Parameters:
functionContributions- the Hibernate-supplied function contribution target- See Also:
-
registerXmlFunctions
-
registerJsonFunctions
-
registerArrayFunctions
-
getMaximumSeriesSize
protected int getMaximumSeriesSize()Oracle doesn't support thegenerate_seriesfunction orlateralrecursive CTEs, so it has to be emulated with a top level recursive CTE which requires an upper bound on the amount of elements that the series can return. -
getSqlAstTranslatorFactory
Description copied from class:DialectSupply the factory for this Dialect's single-use SQL AST translators.
Return
nullto useStandardSqlAstTranslatorFactory. A custom Dialect should normally return a reusable factory derived from that class and create translators derived fromAbstractSqlAstTranslatoror an appropriate supported family base. The factory must not retain translation requests, and every translator it returns is used for one translation.- Overrides:
getSqlAstTranslatorFactoryin classDialect- See Also:
-
currentDate
Description copied from interface:CurrentTemporalSupportRender the current SQL date expression.- Specified by:
currentDatein interfaceCurrentTemporalSupport
-
currentTime
Description copied from interface:CurrentTemporalSupportRender the current SQL time expression used forjava.sql.Time.- Specified by:
currentTimein interfaceCurrentTemporalSupport
-
currentTimestamp
Description copied from interface:CurrentTemporalSupportRender the current SQL timestamp expression used forjava.sql.Timestamp.- Specified by:
currentTimestampin interfaceCurrentTemporalSupport
-
currentLocalTime
Description copied from interface:CurrentTemporalSupportRender the current local-time expression.- Specified by:
currentLocalTimein interfaceCurrentTemporalSupport
-
currentLocalTimestamp
Description copied from interface:CurrentTemporalSupportRender the current local-timestamp expression.- Specified by:
currentLocalTimestampin interfaceCurrentTemporalSupport
-
currentTimestampWithTimeZone
Description copied from interface:CurrentTemporalSupportRender the current timestamp-with-time-zone expression.- Specified by:
currentTimestampWithTimeZonein interfaceCurrentTemporalSupport
-
getGeneratedValuesSupport
Description copied from class:DialectSupply the stable profile describing immediate retrieval of arbitrary database-generated values for this Dialect.
Override this method to declare native insert or update returning, row-id returning, or JDBC generated-key support for arbitrary generated columns. Identity-only retrieval belongs to
Dialect.getIdentityColumnSupport(), and an ordinary select after mutation is a Hibernate fallback rather than a capability of this profile. Refine a family profile by copying the value returned by the superclass and changing only the differing capabilities.- Overrides:
getGeneratedValuesSupportin classDialect
-
castPattern
type orTypes.TIMEtype, and its default behavior for casting dates and timestamps to and from strings is just awful.- Overrides:
castPatternin classDialect- Parameters:
from- aCastTypeindicating the type of the value argumentto- aCastTypeindicating the type the value argument is cast to
-
fractionalSecondPrecisionInNanos
We minimize multiplicative factors by using seconds (with fractional part) as the "native" precision for duration arithmetic.- Specified by:
fractionalSecondPrecisionInNanosin interfaceTemporalOperationSupport
-
extractPattern
Oracle supports a limited list of temporal fields in the extract() function, but we can emulate some of them by using to_char() with a format string instead of extract().Thus, the additional supported fields are
TemporalUnit.DAY_OF_YEAR,TemporalUnit.DAY_OF_MONTH,TemporalUnit.DAY_OF_YEAR, andTemporalUnit.WEEK.- Specified by:
extractPatternin interfaceTemporalOperationSupport
-
timestampaddPattern
@SPI({USE,IMPLEMENT}) public String timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType) Description copied from interface:TemporalOperationSupportReturn a timestamp-add pattern containing?1,?2, and?3.- Specified by:
timestampaddPatternin interfaceTemporalOperationSupport
-
timestampdiffPattern
@SPI({USE,IMPLEMENT}) public String timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType) Description copied from interface:TemporalOperationSupportReturn a timestamp-difference pattern containing?1,?2, and?3.- Specified by:
timestampdiffPatternin interfaceTemporalOperationSupport
-
columnType
Description copied from class:DialectReturn the complete database column declaration pattern for a JDBC
Typesor HibernateSqlTypescode used during type registration.Use only
$l,$p, and$sfor length, precision, and scale. Define distinct mappings for theLONG32codes; the JDBCLONGsynonyms are normalized before this hook. Delegate unknown inherited codes to the superclass so its standard exception remains authoritative.- Overrides:
columnTypein classDialect
-
registerColumnTypes
@SPI({IMPLEMENT,SUPPLY}) protected void registerColumnTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) Description copied from class:DialectRegister the inherited ANSI-oriented DDL type descriptors during Dialect type contribution.
Override this focused sub-hook to extend or replace column type registrations. Invoke
superfirst to retain the inherited descriptor set; omitting it deliberately replaces that set. Mutate the supplied boot-scoped registry only during this callback, and do not retain the contribution context or registry afterward. Implement an independentTypeContributorinstead when the contribution is not owned by a Dialect.- Overrides:
registerColumnTypesin classDialect- Parameters:
typeContributions- the Hibernate-supplied contribution targetserviceRegistry- the Hibernate-supplied bootstrap services- See Also:
-
getTimeZoneSupport
Description copied from class:DialectSelect the database's support profile for SQL
with time zonetypes.Override this method to report whether the database preserves the original zone, normalizes values to UTC, or has no native support. This value participates in mapping and JDBC type selection; it does not control temporal-literal syntax.
- Overrides:
getTimeZoneSupportin classDialect- Returns:
- the database time-zone type support profile
- See Also:
-
contributeDefaultProperties
Description copied from class:DialectContribute provider configuration defaults after Dialect construction.
Invoke
superfirst to extend the inherited defaults. Omittingsuperdeliberately replaces them. Mutate the supplied isolated property bag only during this callback; do not retain it or callDialect.getDefaultProperties()from a Dialect constructor.- Overrides:
contributeDefaultPropertiesin classDialect- Parameters:
properties- the isolated contribution target
-
resolveSqlTypeDescriptor
@SPI({USE,IMPLEMENT}) public JdbcType resolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry) Description copied from class:DialectResolve the non-null JDBC descriptor for result-set metadata.
Preserve vendor replacement and array-component resolution, and delegate unmatched codes to
jdbcTypeRegistry.- Overrides:
resolveSqlTypeDescriptorin classDialect
-
supportsUserDefinedTypes
Description copied from class:DialectWhether mapped aggregate structures may be represented as database user-defined types.
This capability is independent of
Dialect.getUserDefinedTypeExporter(), which supplies schema commands for any UDT definitions that are present.- Overrides:
supportsUserDefinedTypesin classDialect- See Also:
-
getArrayTypeName
@SPI({USE,IMPLEMENT}) public String getArrayTypeName(String javaElementTypeName, String elementTypeName, Integer maxLength) Description copied from class:DialectRender an array type name from the independent Java element name, rendered SQL element name, and optional maximum length.
Return null when array types are unsupported. The standard forms are
element arrayandelement array[length].- Overrides:
getArrayTypeNamein classDialect
-
getPreferredSqlTypeCodeForArray
Description copied from class:DialectSelect the default
SqlTypescode for a basic Java array or collection.Return the container type Hibernate should request when no local mapping selects one. Typical choices are
SqlTypes.ARRAY,SqlTypes.TABLE,SqlTypes.JSON_ARRAY,SqlTypes.XML_ARRAY, andSqlTypes.VARBINARY. Thehibernate.type.preferred_array_jdbc_typesetting takes precedence over this Dialect default. This method selects a type code; contribute a JDBC descriptor or customize DDL rendering through their dedicated contracts.- Overrides:
getPreferredSqlTypeCodeForArrayin classDialect- Returns:
- a container type code defined by
SqlTypes - See Also:
-
getUserDefinedTypeExporter
Description copied from class:DialectSupply the exporter used to create and drop user-defined types.
Return one stable exporter owned by this Dialect. Use
StandardUserDefinedTypeExporterwhen standard object-type DDL is sufficient.- Overrides:
getUserDefinedTypeExporterin classDialect
-
contributeTypes
@SPI({IMPLEMENT,SUPPLY}) public void contributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) Description copied from class:DialectContribute database-specific Java, JDBC, DDL, and basic type descriptors.
Override this method when the database or JDBC driver requires descriptors beyond the inherited registrations. Invoke
superfirst unless the Dialect intentionally replaces the complete inherited contribution protocol. Obtain reusable dialect-specific JDBC descriptors from the family facades inorg.hibernate.dialect.type.spi, and preserve whether a descriptor replaces an existing registration or is added only when absent.- Overrides:
contributeTypesin classDialect- Parameters:
typeContributions- the Hibernate-supplied contribution registryserviceRegistry-the Hibernate-supplied services, including class loading used by driver-backed descriptor factories
Mutate the supplied boot-scoped registries only during this callback and do not retain the contribution context or a mutable registry afterward. Implement an independent
TypeContributorinstead when the contribution is not owned by a Dialect.
-
getAggregateSupport
Description copied from class:DialectSupply the aggregate-column mapping, DDL, read, assignment, and write behavior for this dialect. Override this method to return a provider implementation ofAggregateSupport, or retain the standard behavior returned by the default.- Overrides:
getAggregateSupportin classDialect- Returns:
- this dialect's aggregate support
- See Also:
-
getNativeValueGenerationStrategy
Description copied from class:DialectSupply the semantic identifier-generation type used for native generation.
Return a non-null typed value instead of a legacy generator name or implementation class. The inherited implementation selects
GenerationType.IDENTITYwhen this Dialect'sIdentityColumnSupportsupports identity columns andGenerationType.SEQUENCEotherwise. Override it when the database's native choice differs from that rule.Legacy
"native"mappings andNativeGeneratorconsume this same provider decision.- Overrides:
getNativeValueGenerationStrategyin classDialect- Returns:
- the non-null semantic native identifier-generation type
- See Also:
-
getIdentityColumnSupport
Description copied from class:DialectSupply the stable identity-column DDL, insert syntax, and identity-specific retrieval behavior for this Dialect.
Override this method to supply a provider implementation of
IdentityColumnSupport. Prefer extendingIdentityColumnSupportBaseand return the same immutable or otherwise stable support instance on every invocation. Do not construct Hibernate mutation delegates in this supply point.- Overrides:
getIdentityColumnSupportin classDialect
-
getLimitHandler
Description copied from class:DialectSupplies execution-time pagination for already-rendered SQL requested by
Query.setMaxResults(int)orQuery.setFirstResult(int).This is distinct from SQL AST
PaginationRenderingSupport, which handles offset and fetch clauses represented in the semantic tree. A custom Dialect should normally return a stockLimitHandleror extend a supported handler family. The returned handler may be reused concurrently and must not retain per-query state.- Overrides:
getLimitHandlerin classDialect- Returns:
- a non-null handler
-
getCurrentTimestampSelection
Description copied from interface:CurrentTemporalSupportSelect the JDBC command used for database-side current timestamp retrieval, or returnnullwhen the database offers no supported command.- Specified by:
getCurrentTimestampSelectionin interfaceCurrentTemporalSupport- See Also:
-
getValuesListSupport
Description copied from class:DialectThe contexts in which this Dialect supports native multi-row
valuessyntax.The returned immutable profile must be non-null and stable for the lifetime of this Dialect. Report only native syntax support; translator emulation is selected separately.
- Overrides:
getValuesListSupportin classDialect
-
getLobSupport
Description copied from class:DialectSupply the database and driver policy for LOB creation, binding, materialization, type classification, mutation ordering, and VALUE LOB DDL. Return one stable, thread-safe strategy for this Dialect.- Overrides:
getLobSupportin classDialect- Returns:
- the non-null LOB support strategy
- See Also:
-
addColumnPrefix
- Specified by:
addColumnPrefixin interfaceAlterTableSupport
-
getIfExistsSupport
Description copied from class:DialectSupply existence-check placement for schema DDL targets.
Return one immutable profile for this Dialect's lifetime.
- Overrides:
getIfExistsSupportin classDialect- See Also:
-
getSchemaDropSupport
Description copied from class:DialectSupply schema-drop composition and ordered pre-drop commands.
Return one immutable profile for this Dialect's lifetime.
- Overrides:
getSchemaDropSupportin classDialect- See Also:
-
alterColumnType
- Specified by:
alterColumnTypein interfaceAlterTableSupport
-
getSequenceSupport
Description copied from class:DialectSupplies the complete sequence value-expression and lifecycle-DDL strategy for this Dialect.
Return the same stable, thread-safe strategy for the Dialect's lifetime. Use
SequenceSupports.none()when sequences are unsupported, select one of the other stock strategies only when its complete grammar matches the database, or supply a provider implementation ofSequenceSupport.- Overrides:
getSequenceSupportin classDialect- Returns:
- the non-null sequence-support strategy
- See Also:
-
getTableExporter
Description copied from class:DialectSupply the exporter used to create and drop relational tables.
Return one stable exporter owned by this Dialect. Prefer
StandardTableExporterwhen only its focused table-DDL template hooks are needed.- Overrides:
getTableExporterin classDialect
-
getSequenceInformationExtractor
Description copied from class:DialectSupply the strategy Hibernate uses to discover existing database sequences and their metadata.
Return
SequenceInformationExtractors.none()when the database version does not expose sequence metadata. Configure ordinary single-query extraction withSequenceInformationExtractors.builder(String), and implementSequenceInformationExtractordirectly only for a genuinely multi-stage algorithm.- Overrides:
getSequenceInformationExtractorin classDialect- See Also:
-
getViolatedConstraintNameExtractor
@SPI({IMPLEMENT,SUPPLY}) public ViolatedConstraintNameExtractor getViolatedConstraintNameExtractor()Description copied from class:DialectSupplies the extractor used to recover violated constraint names from database exceptions.
The extractor returns
nullwhen a name cannot be recovered. Do not use an empty string or sentinel to represent absence.- Specified by:
getViolatedConstraintNameExtractorin interfaceConversionContext- Overrides:
getViolatedConstraintNameExtractorin classDialect- Returns:
- the non-null constraint-name extractor
- See Also:
-
buildSQLExceptionConversionDelegate
@SPI({IMPLEMENT,SUPPLY}) public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate()Description copied from class:DialectSupplies vendor-specific SQL-exception conversion for this Dialect.
The returned delegate runs in addition to Hibernate's standard JDBC exception-hierarchy and SQL-state delegates. Its
nullresult means that it declined the exception so conversion may continue. Returnnullfrom this method when the Dialect has no vendor-specific delegate.Prefer stable vendor error codes or SQL states and preserve the original
SQLException.- Overrides:
buildSQLExceptionConversionDelegatein classDialect- Returns:
- the vendor conversion delegate, or
nullwhen none is supplied - See Also:
-
getSchemaCommentSupport
Description copied from class:DialectSupply schema-export support for comments attached to database objects.
This strategy does not control query comments, hints, SQL AST decoration, or statement inspection. Return one stable, non-null strategy.
- Overrides:
getSchemaCommentSupportin classDialect- See Also:
-
getSubquerySupport
Description copied from class:DialectSupplies the database's supported subquery placements.
Return one non-null, immutable profile whose values remain stable for this Dialect's lifetime. Declare every placement independently. In particular, scalar subqueries in the select list and
existspredicates in the select list are separate capabilities. Lateral spelling and fallback rendering remain translator responsibilities. When refining a family Dialect, start fromSubquerySupport.builder(super.getSubquerySupport())and change only the differing placements.- Overrides:
getSubquerySupportin classDialect- Returns:
- this Dialect's stable subquery-support profile
-
getParameterLimits
Description copied from class:DialectSupplies the database limits for
IN-expression elements and total JDBC statement parameters.Return a non-null, immutable profile whose values remain stable for this Dialect's lifetime. Use
ParameterLimits.UNLIMITEDwhen neither limit applies andParameterLimits.of(int)when both limits are identical. Keep the dimensions independent when the database imposes different expression and statement limits; Hibernate uses them for different planning decisions.- Overrides:
getParameterLimitsin classDialect- Returns:
- the non-null parameter-limit profile
-
getStringValueSemantics
Description copied from class:DialectSupply the database's stable string-value semantics.- Overrides:
getStringValueSemanticsin classDialect- Returns:
- the non-null string-value profile
- See Also:
-
getLocalTemporaryTableStrategy
Description copied from class:DialectSupplies this Dialect's local temporary-table strategy.
Return
nullwhen the database has no supported local temporary-table form. A non-null strategy must be stable for the Dialect lifetime and consistent withDialect.getTemporaryTableExporter().- Overrides:
getLocalTemporaryTableStrategyin classDialect
-
getGlobalTemporaryTableStrategy
Description copied from class:DialectSupplies this Dialect's global temporary-table strategy.
Return
nullwhen the database has no supported global temporary-table form. A non-null strategy must be stable for the Dialect lifetime and consistent withDialect.getTemporaryTableExporter().- Overrides:
getGlobalTemporaryTableStrategyin classDialect
-
getMultiTableMutationSupport
Description copied from class:DialectSelect the Hibernate-owned fallback families used for SQM update/delete and insert operations targeting entities mapped to multiple tables.
A custom Dialect should return one of the named profiles when both operation families use the same strategy kind, or construct an asymmetric profile when they differ. Local, global, and persistent-table selections require the corresponding non-null temporary-table strategy, while
CTErequires non-query CTE support.Configured global and entity-specific custom strategies take precedence over this fallback. Supply a custom execution implementation with
QuerySettings.QUERY_MULTI_TABLE_MUTATION_STRATEGYorQuerySettings.QUERY_MULTI_TABLE_INSERT_STRATEGYinstead of depending on Hibernate's internal fallback implementations.- Overrides:
getMultiTableMutationSupportin classDialect- Returns:
- a stable, non-null fallback selection profile
-
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:
query- The query to which to apply the hint.hintList- The hints to apply- Returns:
- The modified SQL
-
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
-
getMaxAliasLength
Description copied from interface:IdentifierSupportReturn the safe maximum length of a generated SQL alias, including room for Hibernate's generated suffix.- Specified by:
getMaxAliasLengthin interfaceIdentifierSupport
-
getMaxIdentifierLength
Description copied from interface:IdentifierSupportReturn the database's maximum identifier length.- Specified by:
getMaxIdentifierLengthin interfaceIdentifierSupport
-
getCallableStatementSupport
Description copied from class:DialectSupply the callable-statement protocol for this database and JDBC driver.
Return one non-null strategy whose behavior remains stable for this Dialect's lifetime. Use
CallableStatementSupportsfor the standard and stock database protocols.- Overrides:
getCallableStatementSupportin classDialect- Returns:
- the callable-statement strategy
- See Also:
-
getRefCursorSupportFactory
Description copied from class:DialectSupply the stable factory which creates this Dialect's JDBC REF_CURSOR registration and extraction service.
Return one non-null factory whose identity and selection behavior remain stable for this Dialect's lifetime. This factory controls JDBC cursor access;
Dialect.getCallableStatementSupport()independently controls whether and how the callable SQL protocol admits a REF_CURSOR parameter.- Overrides:
getRefCursorSupportFactoryin classDialect- Returns:
- the REF_CURSOR JDBC access factory
- See Also:
-
getNamespaceSupport
Description copied from class:DialectSupply catalog and schema lifecycle behavior to schema tooling.
Return one stable, non-null strategy. Prefer a complete immutable profile from
NamespaceSupports, and implementNamespaceSupportdirectly only for custom or multi-command namespace SQL.- Overrides:
getNamespaceSupportin classDialect- See Also:
-
getTupleCountSupport
Description copied from class:DialectSupplies the database syntax for ordinary and distinct tuple counts.
Return one non-null, immutable profile whose values remain stable for this Dialect's lifetime. Select
TupleCountSupport.Syntax.UNSUPPORTEDto use Hibernate's existing emulation,TupleCountSupport.Syntax.ARGUMENT_LISTfor syntax such ascount(a, b), orTupleCountSupport.Syntax.PARENTHESIZED_TUPLEfor syntax such ascount((a, b)). Configure the ordinary and distinct forms independently; a database may require different forms for them. When refining a family Dialect, copyDialect.getTupleCountSupport()from the superclass and replace only the differing syntax choice.- Overrides:
getTupleCountSupportin classDialect- Returns:
- the non-null tuple-count-syntax profile
-
getFetchClauseSupport
Description copied from class:DialectSupply the
fetchclause forms accepted by this database.Return one non-null immutable profile whose identity and answers remain stable for this Dialect's lifetime. The four forms are independent; do not infer percent or ties support from ordinary row-count support.
- Overrides:
getFetchClauseSupportin classDialect- Returns:
- the stable
fetchclause capability profile - See Also:
-
getWindowFunctionSupport
Description copied from class:DialectSupplies the native window-function syntax supported by this database.
Return one non-null, immutable profile whose values remain stable for this Dialect's lifetime. Baseline window calls, window partitioning, each frame unit, and frame exclusion are independent grammar facts. Every refinement requires baseline window support, and frame exclusion additionally requires a supported frame unit. Function-specific restrictions and individual frame-bound restrictions remain the responsibility of focused rendering.
When refining a family Dialect, start from
WindowFunctionSupport.builder(super.getWindowFunctionSupport())and change only the differing features.- Overrides:
getWindowFunctionSupportin classDialect- Returns:
- this Dialect's stable window-function-support profile
-
getCteSupport
Description copied from class:DialectThe common-table-expression capabilities of this Dialect.
The returned immutable profile must be non-null and stable for the lifetime of this Dialect. Hibernate may cache and reuse it. Overrides may construct a new profile or copy
CteSupport.STANDARD; invokingsuperis not required. This method is called only after Dialect construction, has no corresponding shutdown lifecycle, and failures propagate to the operation which obtains the profile.- Overrides:
getCteSupportin classDialect
-
getLockingSupport
Description copied from class:DialectSupplies the cohesive pessimistic-locking profile for this Dialect.
The profile coordinates capability metadata, statement-clause rendering, table hints, already-rendered SQL rewriting, connection timeout handling, and follow-on locking. A custom Dialect should supply one internally consistent profile instead of overriding those behaviors independently. The returned support must be non-null and stable for the Dialect lifetime; its components may be reused concurrently and must not retain per-query requests.
- Overrides:
getLockingSupportin classDialect- See Also:
-
appendDateTimeLiteral
@SPI({USE,IMPLEMENT}) public void appendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone) Description copied from class:DialectAppend a datetime literal for a
java.timevalue.Preserve the value's offset only when the Dialect's temporal-value semantics permit it. Append immediately and retain no invocation state.
- Specified by:
appendDateTimeLiteralin interfaceLiteralSupport- Overrides:
appendDateTimeLiteralin classDialect
-
appendFormat
Description copied from interface:TemporalFormatSupportAppend the database translation of the supplied Hibernate format pattern.- Specified by:
appendFormatin interfaceTemporalFormatSupport
-
datetimeFormat
-
appendBinaryLiteral
Description copied from interface:LiteralSupportAppend a SQL binary literal.- Specified by:
appendBinaryLiteralin interfaceLiteralSupport
-
appendDefinition
@SPI({USE,IMPLEMENT}) public void appendDefinition(SqlAppender appender, ColumnDefinitionRequest request) - Specified by:
appendDefinitionin interfaceColumnDefinitionSupport
-
buildIdentifierHelper
@SPI({USE,IMPLEMENT,SUPPLY}) public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuildRequest request) Description copied from interface:IdentifierSupportBuild and supply the configured identifier helper from the stable JDBC metadata snapshot and selected keyword strategy.
This inherited implementation initializes identifier casing, keywords, and namespace support from the request. Invoke it before replacing any of those values with authoritative provider settings, then build the final helper from the same builder. Settings which this implementation does not initialize may be applied before invoking it. If builder configuration cannot express a database rule, decorate the final helper with
DelegatingIdentifierHelper. Do not retain the request, builder, or metadata view.- Specified by:
buildIdentifierHelperin interfaceIdentifierSupport- See Also:
-
constraintControlMode
- Specified by:
constraintControlModein interfaceConstraintControlSupport- Overrides:
constraintControlModein classDialect
-
disableConstraintCommands
@SPI({USE,IMPLEMENT}) public List<String> disableConstraintCommands(ConstraintControlRequest request) - Specified by:
disableConstraintCommandsin interfaceConstraintControlSupport
-
enableConstraintCommands
@SPI({USE,IMPLEMENT}) public List<String> enableConstraintCommands(ConstraintControlRequest request) - Specified by:
enableConstraintCommandsin interfaceConstraintControlSupport
-
getUniqueDelegate
Description copied from class:DialectSupply the stable strategy used for unique-key representation and DDL.
Return a stock profile from
UniqueDelegates, or a stable provider-owned implementation or decorator. Do not import a Hibernate.internalleaf.- Overrides:
getUniqueDelegatein classDialect- See Also:
-
getRowIdSupport
Description copied from class:DialectSupply the database's row-locator expression, JDBC type, and optional physical-column declaration policy.- Overrides:
getRowIdSupportin classDialect- Returns:
- the stable non-null row-id strategy
- See Also:
-
createOptionalTableUpdateOperation
@SPI({USE,IMPLEMENT,SUPPLY}) public MutationOperation createOptionalTableUpdateOperation(OptionalTableUpdateOperationRequest request) Description copied from class:DialectCreates the JDBC mutation operation for an optional-table update.
Override this factory when the database needs an operation other than the standard update-then-insert behavior. The request contains the semantic update and bootstrap services; implementations must return an operation for the same
OptionalTableUpdateOperationRequest.mutationTarget()and must not retain the request.- Overrides:
createOptionalTableUpdateOperationin classDialect- Returns:
- a non-null operation for the supplied optional-table update
- See Also:
-
getDmlTargetColumnQualifierSupport
@SPI({USE,IMPLEMENT,SUPPLY}) public DmlTargetColumnQualifierSupport getDmlTargetColumnQualifierSupport()Description copied from class:DialectThe qualifier form accepted for target-column references in update and delete statements.
Translators use this value when rendering assignments and predicates. A custom Dialect should return the least permissive form required by the database, not a form used only by an emulation.
- Overrides:
getDmlTargetColumnQualifierSupportin classDialect- Returns:
- the non-null target-column qualifier support
- See Also:
-
getMutationSyntaxSupport
Description copied from class:DialectThe native SQL mutation-syntax capabilities of this Dialect.
The returned immutable profile must be non-null and stable for the lifetime of this Dialect. Report syntax which the translator may use directly; do not report a capability merely because it can be emulated.
QueryMutationRenderingSupportconsumes this profile when selecting a native or emulated plan.- Overrides:
getMutationSyntaxSupportin classDialect
-
getDriverMajorVersion
public int getDriverMajorVersion() -
getDriverMinorVersion
public int getDriverMinorVersion() -
getEnumSupport
Description copied from class:DialectSupply the database's finite-domain declaration, lifecycle, and check strategy. Return one stable, thread-safe strategy for this Dialect.- Overrides:
getEnumSupportin classDialect- Returns:
- the non-null enum support strategy
- See Also:
-
getCreateVarcharEnumTypeCommand
-
render
- Specified by:
renderin interfaceCheckConstraintSupport
-
getSingleRowTableSupport
Description copied from class:DialectSupply the SQL renderings used for a reusable single-row table and for an otherwise table-less select.
Override this method with one stable, non-null profile when either rendering differs from
SingleRowTableSupport.STANDARD. The table expression and the complete select-onlyfromfragment are independent; an empty fragment means that nofromclause is required. Dialect subclasses refining a family profile should copyDialect.getSingleRowTableSupport()from the superclass and change only the values which differ.- Overrides:
getSingleRowTableSupportin classDialect- Returns:
- the stable, non-null single-row-table-support profile
-
getSetOperationSupport
Description copied from class:DialectSupplies the database's set operators and structural query-group capabilities.
Return one non-null, immutable profile whose values remain stable for this Dialect's lifetime. Declare each
SetOperatorindependently; support for a distinct operator never implies itsALLform. Structural capabilities such asUNIONplacement in subqueries are separate from operator support. Continue to overrideDialect.getSetOperatorSqlString(SetOperator)when an operator requires database-specific spelling. When refining a family Dialect, start fromSetOperationSupport.builder(super.getSetOperationSupport())and change only the differing values.- Overrides:
getSetOperationSupportin classDialect- Returns:
- this Dialect's stable set-operation profile
-
getSetOperatorSqlString
Description copied from class:DialectGet the SQL string representation for a specific set operator (UNION, INTERSECT, EXCEPT).The default implementation delegates to
SetOperator.sqlString(). Dialects like Cloud Spanner that require explicit 'DISTINCT' keywords can override this.- Overrides:
getSetOperatorSqlStringin classDialect- Parameters:
setOperator- The set operator- Returns:
- The SQL fragment (e.g., "union", "union all", "union distinct")
-
getRowValueSupport
Description copied from class:DialectThe native row-value syntax of this Dialect.
Override this method to supply explicit
row(a, b)construction, row equality, ordering, and distinctness comparisons, row-valuedINlists, row-valuedINsubqueries, and quantified row comparisons. Treat each feature as an exact native-syntax declaration: do not inferIN-subquery support fromIN-list support or explicit row construction from comparison support. Copy the superclass profile when refining an inherited Dialect family. Return one immutable, non-null profile whose values remain stable for the lifetime of this Dialect.- Overrides:
getRowValueSupportin classDialect- Returns:
- this Dialect's stable row-value-support profile
-
getInformationExtractor
@SPI({IMPLEMENT,SUPPLY}) public InformationExtractor getInformationExtractor(ExtractionContext extractionContext) Description copied from class:DialectSupply the context-bound strategy Hibernate uses to discover database tables, keys, indexes, and related schema metadata.
Return a new extractor for
extractionContext. Prefer a stock profile fromInformationExtractors, and implementInformationExtractordirectly only when none of those complete profiles matches the database.- Overrides:
getInformationExtractorin classDialect- See Also:
-
getTemporalTableSupport
Description copied from class:DialectSupplies the complete temporal-table DDL and historical-query strategy for this Dialect.
Return an immutable strategy and use the supported request values without retaining them. Prefer
TemporalTableSupports.standard(int, int, boolean)when only the column type, precision, and table-check capability differ.- Overrides:
getTemporalTableSupportin classDialect- Returns:
- the non-null temporal-table support strategy
- See Also:
-
throttleDdl
public boolean throttleDdl()Description copied from class:DialectWhether schema-management DDL commands require a short delay before execution to accommodate database-side propagation.- Overrides:
throttleDdlin classDialect
-