Class CockroachDialect

java.lang.Object
org.hibernate.dialect.Dialect
org.hibernate.dialect.CockroachDialect
All Implemented Interfaces:
CheckConstraintSupport, ForeignKeySupport, IdentifierSupport, KeywordSupport, LiteralSupport, AlterTableSupport, ColumnDefinitionSupport, ConstraintControlSupport, IndexDdlSupport, TableCreationSupport, TruncateSupport, CurrentTemporalSupport, TemporalFormatSupport, TemporalOperationSupport, ConversionContext
Direct Known Subclasses:
CockroachDB202SpatialDialect

public class CockroachDialect extends Dialect implements CurrentTemporalSupport, TemporalFormatSupport, TemporalOperationSupport
A SQL dialect for CockroachDB 23.2 and above.
  • Field Details

  • Constructor Details

  • Method Details

    • getDirectJavaTimeJdbcSupport

      public DirectJavaTimeJdbcSupport getDirectJavaTimeJdbcSupport()
      Description copied from class: Dialect
      Supply direct JDBC access capabilities for Java Time classes. Return one stable, non-null, thread-safe implementation.
      Overrides:
      getDirectJavaTimeJdbcSupport in class Dialect
      Returns:
      the direct Java Time JDBC support for this Dialect and driver
      See Also:
    • getTemporalOperationSupport

      @SPI({IMPLEMENT,SUPPLY}) public TemporalOperationSupport getTemporalOperationSupport()
      Description copied from class: Dialect
      Supply extraction and timestamp-arithmetic syntax. Return one stable, non-null, thread-safe implementation. Providers may implement TemporalOperationSupport directly and return this.
      Overrides:
      getTemporalOperationSupport in class Dialect
      See Also:
    • getTemporalFormatSupport

      @SPI({IMPLEMENT,SUPPLY}) public TemporalFormatSupport getTemporalFormatSupport()
      Description copied from class: Dialect
      Supply datetime-format translation. Return one stable, non-null, thread-safe implementation.
      Overrides:
      getTemporalFormatSupport in class Dialect
      See Also:
    • getCurrentTemporalSupport

      @SPI({IMPLEMENT,SUPPLY}) public CurrentTemporalSupport getCurrentTemporalSupport()
      Description copied from class: Dialect
      Supply current temporal expressions and database-side timestamp retrieval. Return one stable, non-null, thread-safe implementation. Providers may implement CurrentTemporalSupport directly and return this.
      Overrides:
      getCurrentTemporalSupport in class Dialect
      See Also:
    • getTypeSizingProfile

      public TypeSizingProfile getTypeSizingProfile()
      Description copied from class: Dialect

      Supplies this Dialect's resolved type-sizing limits and defaults.

      Return TypeSizingProfile.STANDARD when 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:
      getTypeSizingProfile in class Dialect
    • determineDatabaseVersion

      @SPI({USE,IMPLEMENT}) public DatabaseVersion determineDatabaseVersion(DialectResolutionInfo info)
      Description copied from class: Dialect
      Determine the database version, as precise as possible and using Dialect-specific techniques, from a DialectResolutionInfo object.

      This method is called during superclass construction by Dialect(DialectResolutionInfo). Implementations must not depend on subclass initialization. Integration providers may also invoke this method on an existing Dialect when database metadata becomes available after the Dialect was constructed.

      Overrides:
      determineDatabaseVersion in class Dialect
      Parameters:
      info - The dialect resolution info that would be passed by Hibernate ORM to the constructor of a Dialect of the same type.
      Returns:
      The corresponding database version.
    • fetchDataBaseVersion

      protected static DatabaseVersion fetchDataBaseVersion(DialectResolutionInfo info)
    • parseVersion

      public static DatabaseVersion parseVersion(String versionString)
    • getMinimumSupportedVersion

      @SPI({IMPLEMENT,SUPPLY}) protected DatabaseVersion getMinimumSupportedVersion()
      Description copied from class: Dialect
      Get 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:
      getMinimumSupportedVersion in class Dialect
    • columnType

      @SPI({USE,IMPLEMENT}) protected String columnType(int sqlTypeCode)
      Description copied from class: Dialect

      Return the complete database column declaration pattern for a JDBC Types or Hibernate SqlTypes code used during type registration.

      Use only $l, $p, and $s for length, precision, and scale. Define distinct mappings for the LONG32 codes; the JDBC LONG synonyms are normalized before this hook. Delegate unknown inherited codes to the superclass so its standard exception remains authoritative.

      Overrides:
      columnType in class Dialect
    • castType

      @SPI({USE,IMPLEMENT}) protected String castType(int sqlTypeCode)
      Description copied from class: Dialect

      Return the complete cast-target type pattern for sqlTypeCode.

      Override this hook when cast syntax differs from column declaration syntax; otherwise delegate to Dialect.columnType(int).

      Overrides:
      castType in class Dialect
    • registerColumnTypes

      @SPI({IMPLEMENT,SUPPLY}) protected void registerColumnTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)
      Description copied from class: Dialect

      Register the inherited ANSI-oriented DDL type descriptors during Dialect type contribution.

      Override this focused sub-hook to extend or replace column type registrations. Invoke super first 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 independent TypeContributor instead when the contribution is not owned by a Dialect.

      Overrides:
      registerColumnTypes in class Dialect
      Parameters:
      typeContributions - the Hibernate-supplied contribution target
      serviceRegistry - the Hibernate-supplied bootstrap services
      See Also:
    • resolveSqlTypeDescriptor

      @SPI({USE,IMPLEMENT}) public JdbcType resolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry)
      Description copied from class: Dialect

      Resolve the non-null JDBC descriptor for result-set metadata.

      Preserve vendor replacement and array-component resolution, and delegate unmatched codes to jdbcTypeRegistry.

      Overrides:
      resolveSqlTypeDescriptor in class Dialect
    • resolveSqlTypeCode

      @SPI({USE,IMPLEMENT}) protected Integer resolveSqlTypeCode(String columnTypeName, TypeConfiguration typeConfiguration)
      Description copied from class: Dialect

      Resolve a database-reported type name before base-name extraction.

      columnTypeName is complete and may include parameters or an array suffix. Return null when it cannot be resolved.

      Overrides:
      resolveSqlTypeCode in class Dialect
    • equivalentTypes

      @SPI({USE,IMPLEMENT}) public boolean equivalentTypes(int typeCode1, int typeCode2)
      Description copied from class: Dialect

      Determine directional compatibility of two JDBC or extended SQL type codes.

      Preserve widening integral compatibility and enum-to-character compatibility as directional relationships; accepting (a,b) does not imply that (b,a) is accepted. Provider overrides should delegate unmatched pairs.

      Overrides:
      equivalentTypes in class Dialect
    • contributeTypes

      @SPI({IMPLEMENT,SUPPLY}) public void contributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)
      Description copied from class: Dialect

      Contribute 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 super first unless the Dialect intentionally replaces the complete inherited contribution protocol. Obtain reusable dialect-specific JDBC descriptors from the family facades in org.hibernate.dialect.type.spi, and preserve whether a descriptor replaces an existing registration or is added only when absent.

      Overrides:
      contributeTypes in class Dialect
      Parameters:
      typeContributions - the Hibernate-supplied contribution registry
      serviceRegistry -

      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 TypeContributor instead when the contribution is not owned by a Dialect.

    • contributeCockroachTypes

      protected void contributeCockroachTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)
    • initializeFunctionRegistry

      @SPI({IMPLEMENT,SUPPLY}) public void initializeFunctionRegistry(FunctionContributions functionContributions)
      Description copied from class: Dialect

      Contribute the database-specific function descriptors after independent function contributors have run.

      Override this callback to extend or replace the inherited function set. Invoke super first 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 independent FunctionContributor instead when the contribution is not owned by a Dialect.

      Overrides:
      initializeFunctionRegistry in class Dialect
      Parameters:
      functionContributions - the Hibernate-supplied function contribution target
      See Also:
    • registerJsonFunctions

      protected static void registerJsonFunctions(CommonFunctionFactory functionFactory)
    • registerArrayFunctions

      protected static void registerArrayFunctions(CommonFunctionFactory functionFactory)
    • getDefaultOrdinalityColumnName

      @Nullable public String getDefaultOrdinalityColumnName()
      Description copied from class: Dialect

      Supplies the preferred default ordinality-column name for a set-returning function.

      Return a stable, unqualified SQL column name, or null when the database does not define a preferred name. Hibernate uses i as the fallback and applies collision suffixing where necessary. A null result does not mean that set-returning functions are unsupported.

      Overrides:
      getDefaultOrdinalityColumnName in class Dialect
      Returns:
      the preferred unqualified name, or null to use Hibernate's fallback
    • getTimeZoneSupport

      @SPI({IMPLEMENT,SUPPLY}) public TimeZoneSupport getTimeZoneSupport()
      Description copied from class: Dialect

      Select the database's support profile for SQL with time zone types.

      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:
      getTimeZoneSupport in class Dialect
      Returns:
      the database time-zone type support profile
      See Also:
    • appendBooleanValueString

      @SPI({USE,IMPLEMENT}) public void appendBooleanValueString(SqlAppender appender, boolean bool)
      Description copied from interface: LiteralSupport
      Append a SQL Boolean literal expression.
      Specified by:
      appendBooleanValueString in interface LiteralSupport
    • getSchemaDropSupport

      @SPI({IMPLEMENT,SUPPLY}) public SchemaDropSupport getSchemaDropSupport()
      Description copied from class: Dialect

      Supply schema-drop composition and ordered pre-drop commands.

      Return one immutable profile for this Dialect's lifetime.

      Overrides:
      getSchemaDropSupport in class Dialect
      See Also:
    • getCurrentTimestampSelection

      @SPI({USE,IMPLEMENT}) public CurrentTimestampSelection getCurrentTimestampSelection()
      Description copied from interface: CurrentTemporalSupport
      Select the JDBC command used for database-side current timestamp retrieval, or return null when the database offers no supported command.
      Specified by:
      getCurrentTimestampSelection in interface CurrentTemporalSupport
      See Also:
    • isCurrentTimestampStable

      @SPI({USE,IMPLEMENT}) public boolean isCurrentTimestampStable()
      Description copied from interface: CurrentTemporalSupport
      Whether the current timestamp remains stable throughout a transaction.
      Specified by:
      isCurrentTimestampStable in interface CurrentTemporalSupport
    • getPredicateSupport

      public PredicateSupport getPredicateSupport()
      Description copied from class: Dialect

      The database's native predicate syntax and predicate-placement profile.

      Override this method to supply independent support for a native case-insensitive-like operator, scalar distinct from, truthness predicates, and predicates used as value expressions. An absent case-insensitive-like operator selects Hibernate's lowercase-expression emulation. Return one immutable, non-null profile whose values remain stable for the lifetime of this Dialect; do not override individual consumers to reproduce these decisions.

      Overrides:
      getPredicateSupport in class Dialect
      Returns:
      this Dialect's stable predicate-support profile
    • getIfExistsSupport

      @SPI({IMPLEMENT,SUPPLY}) public IfExistsSupport getIfExistsSupport()
      Description copied from class: Dialect

      Supply existence-check placement for schema DDL targets.

      Return one immutable profile for this Dialect's lifetime.

      Overrides:
      getIfExistsSupport in class Dialect
      See Also:
    • nameQualification

      @SPI({USE,IMPLEMENT}) public IndexNameQualification nameQualification()
      Specified by:
      nameQualification in interface IndexDdlSupport
    • getIdentityColumnSupport

      public IdentityColumnSupport getIdentityColumnSupport()
      Description copied from class: Dialect

      Supply 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 extending IdentityColumnSupportBase and return the same immutable or otherwise stable support instance on every invocation. Do not construct Hibernate mutation delegates in this supply point.

      Overrides:
      getIdentityColumnSupport in class Dialect
    • alterColumnType

      @SPI({USE,IMPLEMENT}) public String alterColumnType(AlterColumnTypeRequest request)
      Specified by:
      alterColumnType in interface AlterTableSupport
    • getValuesListSupport

      public ValuesListSupport getValuesListSupport()
      Description copied from class: Dialect

      The contexts in which this Dialect supports native multi-row values syntax.

      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:
      getValuesListSupport in class Dialect
    • getCteSupport

      public CteSupport getCteSupport()
      Description copied from class: Dialect

      The 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; invoking super is 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:
      getCteSupport in class Dialect
    • getNullOrderingSupport

      public NullOrderingSupport getNullOrderingSupport()
      Description copied from class: Dialect

      Supply the database's default null ordering and explicit null-precedence syntax capabilities.

      Override this method with a stable, non-null profile when the database's default null placement differs from NullOrderingSupport.STANDARD, or when it cannot render nulls first and nulls last natively. Dialect subclasses refining a family profile should copy Dialect.getNullOrderingSupport() from the superclass and change only the values which differ.

      Overrides:
      getNullOrderingSupport in class Dialect
      Returns:
      the stable, non-null null-ordering-support profile
    • getTupleCountSupport

      public TupleCountSupport getTupleCountSupport()
      Description copied from class: Dialect

      Supplies 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.UNSUPPORTED to use Hibernate's existing emulation, TupleCountSupport.Syntax.ARGUMENT_LIST for syntax such as count(a, b), or TupleCountSupport.Syntax.PARENTHESIZED_TUPLE for syntax such as count((a, b)). Configure the ordinary and distinct forms independently; a database may require different forms for them. When refining a family Dialect, copy Dialect.getTupleCountSupport() from the superclass and replace only the differing syntax choice.

      Overrides:
      getTupleCountSupport in class Dialect
      Returns:
      the non-null tuple-count-syntax profile
    • getNativeValueGenerationStrategy

      public GenerationType getNativeValueGenerationStrategy()
      Description copied from class: Dialect

      Supply 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.IDENTITY when this Dialect's IdentityColumnSupport supports identity columns and GenerationType.SEQUENCE otherwise. Override it when the database's native choice differs from that rule.

      Legacy "native" mappings and NativeGenerator consume this same provider decision.

      Overrides:
      getNativeValueGenerationStrategy in class Dialect
      Returns:
      the non-null semantic native identifier-generation type
      See Also:
    • getSequenceSupport

      @SPI({IMPLEMENT,SUPPLY}) public SequenceSupport getSequenceSupport()
      Description copied from class: Dialect

      Supplies 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 of SequenceSupport.

      Overrides:
      getSequenceSupport in class Dialect
      Returns:
      the non-null sequence-support strategy
      See Also:
    • getRowLevelSecurity

      @SPI({IMPLEMENT,SUPPLY}) public RowLevelSecurity getRowLevelSecurity()
      Description copied from class: Dialect

      Supplies the complete database-native row-level-security strategy for this Dialect.

      Return the same stable, thread-safe strategy for the Dialect's lifetime. Use RowLevelSecurityStrategies.none() when native row-level security is unsupported, and return declarative DDL instead of mutating boot metadata.

      Overrides:
      getRowLevelSecurity in class Dialect
      Returns:
      the non-null row-level-security strategy
      See Also:
    • getSequenceInformationExtractor

      public SequenceInformationExtractor getSequenceInformationExtractor()
      Description copied from class: Dialect

      Supply 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 with SequenceInformationExtractors.builder(String), and implement SequenceInformationExtractor directly only for a genuinely multi-stage algorithm.

      Overrides:
      getSequenceInformationExtractor in class Dialect
      See Also:
    • getSqlAstTranslatorFactory

      @SPI({IMPLEMENT,SUPPLY}) public SqlAstTranslatorFactory getSqlAstTranslatorFactory()
      Description copied from class: Dialect

      Supply the factory for this Dialect's single-use SQL AST translators.

      Return null to use StandardSqlAstTranslatorFactory. A custom Dialect should normally return a reusable factory derived from that class and create translators derived from AbstractSqlAstTranslator or an appropriate supported family base. The factory must not retain translation requests, and every translator it returns is used for one translation.

      Overrides:
      getSqlAstTranslatorFactory in class Dialect
      See Also:
    • createOptionalTableUpdateOperation

      @SPI({USE,IMPLEMENT,SUPPLY}) public MutationOperation createOptionalTableUpdateOperation(OptionalTableUpdateOperationRequest request)
      Description copied from class: Dialect

      Creates 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:
      createOptionalTableUpdateOperation in class Dialect
      Returns:
      a non-null operation for the supplied optional-table update
      See Also:
    • getNationalizationSupport

      @SPI({IMPLEMENT,SUPPLY}) public NationalizationSupport getNationalizationSupport()
      Description copied from class: Dialect

      Describe how this database represents nationalized character data.

      This database SQL-type capability is independent of whether the JDBC driver correctly implements nationalized access methods. Override Dialect.supportsNationalizedMethods() separately when the driver cannot use those methods.

      Overrides:
      getNationalizationSupport in class Dialect
      Returns:
      the database nationalization profile
      See Also:
    • getAggregateSupport

      @SPI({IMPLEMENT,SUPPLY}) public AggregateSupport getAggregateSupport()
      Description copied from class: Dialect
      Supply the aggregate-column mapping, DDL, read, assignment, and write behavior for this dialect. Override this method to return a provider implementation of AggregateSupport, or retain the standard behavior returned by the default.
      Overrides:
      getAggregateSupport in class Dialect
      Returns:
      this dialect's aggregate support
      See Also:
    • getMaxIdentifierLength

      @SPI({USE,IMPLEMENT}) public int getMaxIdentifierLength()
      Description copied from interface: IdentifierSupport
      Return the database's maximum identifier length.
      Specified by:
      getMaxIdentifierLength in interface IdentifierSupport
    • getArraySupport

      public ArraySupport getArraySupport()
      Description copied from class: Dialect

      The independent array syntax and multi-valued parameter-binding behavior of this Dialect.

      Override this method to supply standard element-type array support, SQL array-constructor support, and the multi-valued parameter-binding strategy. Treat these as independent dimensions: do not infer syntax support from array binding, and do not infer array binding from either syntax capability. Return one immutable, non-null profile whose values remain stable for the lifetime of this Dialect.

      Overrides:
      getArraySupport in class Dialect
      Returns:
      this Dialect's stable array-support profile
    • getTemporalValueSemantics

      @SPI({IMPLEMENT,SUPPLY}) public TemporalValueSemantics getTemporalValueSemantics()
      Description copied from class: Dialect
      Supply temporal precision-adjustment and literal-offset semantics. Return one stable, non-null immutable profile.
      Overrides:
      getTemporalValueSemantics in class Dialect
      See Also:
    • appendDateTimeLiteral

      @SPI({USE,IMPLEMENT}) public void appendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone)
      Description copied from class: Dialect

      Append a datetime literal for a java.time value.

      Preserve the value's offset only when the Dialect's temporal-value semantics permit it. Append immediately and retain no invocation state.

      Specified by:
      appendDateTimeLiteral in interface LiteralSupport
      Overrides:
      appendDateTimeLiteral in class Dialect
    • appendDateTimeLiteral

      @SPI({USE,IMPLEMENT}) public void appendDateTimeLiteral(SqlAppender appender, Date date, TemporalType precision, TimeZone jdbcTimeZone)
      Description copied from class: Dialect

      Append a datetime literal for a legacy Date value.

      Apply the supplied JDBC time zone where required, append immediately, and retain no invocation state.

      Specified by:
      appendDateTimeLiteral in interface LiteralSupport
      Overrides:
      appendDateTimeLiteral in class Dialect
    • appendDateTimeLiteral

      @SPI({USE,IMPLEMENT}) public void appendDateTimeLiteral(SqlAppender appender, Calendar calendar, TemporalType precision, TimeZone jdbcTimeZone)
      Description copied from class: Dialect

      Append a datetime literal for a Calendar value.

      Preserve Calendar-specific time-zone and millisecond semantics, append immediately, and retain no invocation state.

      Specified by:
      appendDateTimeLiteral in interface LiteralSupport
      Overrides:
      appendDateTimeLiteral in class Dialect
    • currentTime

      @SPI({USE,IMPLEMENT}) public String currentTime()
      Description copied from interface: CurrentTemporalSupport
      Render the current SQL time expression used for java.sql.Time.
      Specified by:
      currentTime in interface CurrentTemporalSupport
    • currentTimestamp

      @SPI({USE,IMPLEMENT}) public String currentTimestamp()
      Description copied from interface: CurrentTemporalSupport
      Render the current SQL timestamp expression used for java.sql.Timestamp.
      Specified by:
      currentTimestamp in interface CurrentTemporalSupport
    • currentTimestampWithTimeZone

      @SPI({USE,IMPLEMENT}) public String currentTimestampWithTimeZone()
      Description copied from interface: CurrentTemporalSupport
      Render the current timestamp-with-time-zone expression.
      Specified by:
      currentTimestampWithTimeZone in interface CurrentTemporalSupport
    • extractPattern

      @SPI({USE,IMPLEMENT}) public String extractPattern(TemporalUnit unit)
      The extract() function returns TemporalUnit.DAY_OF_WEEK numbered from 0 to 6. This isn't consistent with what most other databases do, so here we adjust the result by generating (extract(dayofweek,arg)+1)).
      Specified by:
      extractPattern in interface TemporalOperationSupport
    • translateExtractField

      @SPI({USE,IMPLEMENT}) public String translateExtractField(TemporalUnit unit)
      Description copied from interface: TemporalOperationSupport
      Translate an extraction field name.
      Specified by:
      translateExtractField in interface TemporalOperationSupport
    • fractionalSecondPrecisionInNanos

      @SPI({USE,IMPLEMENT}) public long fractionalSecondPrecisionInNanos()
      microsecond is the smallest unit for an interval, and the highest precision for a timestamp.
      Specified by:
      fractionalSecondPrecisionInNanos in interface TemporalOperationSupport
    • timestampaddPattern

      @SPI({USE,IMPLEMENT}) public String timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType)
      Description copied from interface: TemporalOperationSupport
      Return a timestamp-add pattern containing ?1, ?2, and ?3.
      Specified by:
      timestampaddPattern in interface TemporalOperationSupport
    • timestampdiffPattern

      @SPI({USE,IMPLEMENT}) public String timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType)
      Description copied from interface: TemporalOperationSupport
      Return a timestamp-difference pattern containing ?1, ?2, and ?3.
      Specified by:
      timestampdiffPattern in interface TemporalOperationSupport
    • translateDurationField

      @SPI({USE,IMPLEMENT}) public String translateDurationField(TemporalUnit unit)
      Description copied from interface: TemporalOperationSupport
      Translate a duration unit name.
      Specified by:
      translateDurationField in interface TemporalOperationSupport
    • appendFormat

      @SPI({USE,IMPLEMENT}) public void appendFormat(SqlAppender appender, String format)
      Description copied from interface: TemporalFormatSupport
      Append the database translation of the supplied Hibernate format pattern.
      Specified by:
      appendFormat in interface TemporalFormatSupport
    • getLimitHandler

      public LimitHandler getLimitHandler()
      Description copied from class: Dialect

      Supplies execution-time pagination for already-rendered SQL requested by Query.setMaxResults(int) or Query.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 stock LimitHandler or extend a supported handler family. The returned handler may be reused concurrently and must not retain per-query state.

      Overrides:
      getLimitHandler in class Dialect
      Returns:
      a non-null handler
    • getLockingSupport

      public LockingSupport getLockingSupport()
      Description copied from class: Dialect

      Supplies 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:
      getLockingSupport in class Dialect
      See Also:
    • getLobSupport

      @SPI({IMPLEMENT,SUPPLY}) public LobSupport getLobSupport()
      Description copied from class: Dialect
      Supply 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:
      getLobSupport in class Dialect
      Returns:
      the non-null LOB support strategy
      See Also:
    • getSubquerySupport

      public SubquerySupport getSubquerySupport()
      Description copied from class: Dialect

      Supplies 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 exists predicates in the select list are separate capabilities. Lateral spelling and fallback rendering remain translator responsibilities. When refining a family Dialect, start from SubquerySupport.builder(super.getSubquerySupport()) and change only the differing placements.

      Overrides:
      getSubquerySupport in class Dialect
      Returns:
      this Dialect's stable subquery-support profile
    • getGeneratedValuesSupport

      public GeneratedValuesSupport getGeneratedValuesSupport()
      Description copied from class: Dialect

      Supply 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:
      getGeneratedValuesSupport in class Dialect
    • getWindowFunctionSupport

      public WindowFunctionSupport getWindowFunctionSupport()
      Description copied from class: Dialect

      Supplies 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:
      getWindowFunctionSupport in class Dialect
      Returns:
      this Dialect's stable window-function-support profile
    • getFunctionalDependencyAnalysisSupport

      @SPI({IMPLEMENT,SUPPLY}) public FunctionalDependencyAnalysisSupport getFunctionalDependencyAnalysisSupport()
      Description copied from class: Dialect

      The database's support for recognizing primary-key functional dependency in group by and order by clauses.

      This profile controls when Hibernate may omit functionally dependent columns. Report only behavior guaranteed by the database across the Dialect's supported versions.

      Overrides:
      getFunctionalDependencyAnalysisSupport in class Dialect
      Returns:
      a non-null immutable capability profile
      See Also:
    • getNameQualifierSupport

      @SPI({IMPLEMENT,SUPPLY}) public NameQualifierSupport getNameQualifierSupport()
      Description copied from class: Dialect

      Supply catalog and schema qualification support, or return null to use DatabaseMetaData.

      This value does not define the catalog separator; override Dialect.getCatalogSeparator() independently when the metadata-free fallback is not ..

      Overrides:
      getNameQualifierSupport in class Dialect
      See Also:
    • buildIdentifierHelper

      @SPI({USE,IMPLEMENT,SUPPLY}) public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuildRequest request)
      Description copied from interface: IdentifierSupport

      Build 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:
      buildIdentifierHelper in interface IdentifierSupport
      See Also:
    • getViolatedConstraintNameExtractor

      @SPI({IMPLEMENT,SUPPLY}) public ViolatedConstraintNameExtractor getViolatedConstraintNameExtractor()
      Description copied from class: Dialect

      Supplies the extractor used to recover violated constraint names from database exceptions.

      The extractor returns null when a name cannot be recovered. Do not use an empty string or sentinel to represent absence.

      Specified by:
      getViolatedConstraintNameExtractor in interface ConversionContext
      Overrides:
      getViolatedConstraintNameExtractor in class Dialect
      Returns:
      the non-null constraint-name extractor
      See Also:
    • buildSQLExceptionConversionDelegate

      @SPI({IMPLEMENT,SUPPLY}) public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate()
      Description copied from class: Dialect

      Supplies 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 null result means that it declined the exception so conversion may continue. Return null from this method when the Dialect has no vendor-specific delegate.

      Prefer stable vendor error codes or SQL states and preserve the original SQLException.

      Overrides:
      buildSQLExceptionConversionDelegate in class Dialect
      Returns:
      the vendor conversion delegate, or null when none is supplied
      See Also:
    • getQueryHintString

      @SPI({USE,IMPLEMENT}) public String getQueryHintString(String query, List<String> hintList)
      Applies the hints to the query string. The hints can be index selection hints or join hints.

      For index selection hints, use the format <tablename>@{FORCE_INDEX=<index>[,<DIRECTION>]} where the optional DIRECTION is either ASC (ascending) or DESC (descending). Multiple index hints can be provided. The effect is that in the final SQL statement the hint is added to the table name mentioned in the hint.

      For join hints, use the format "<MERGE|HASH|LOOKUP|INVERTED> JOIN". Only one join hint will be added. It is applied to all join statements in the SQL statement.

      Hints are only added to select statements.

      Overrides:
      getQueryHintString in class Dialect
      Parameters:
      query - The query to which to apply the hint.
      hintList - The hints to apply
      Returns:
      the query with hints added
    • getDmlTargetColumnQualifierSupport

      @SPI({USE,IMPLEMENT,SUPPLY}) public DmlTargetColumnQualifierSupport getDmlTargetColumnQualifierSupport()
      Description copied from class: Dialect

      The 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:
      getDmlTargetColumnQualifierSupport in class Dialect
      Returns:
      the non-null target-column qualifier support
      See Also:
    • getMutationSyntaxSupport

      public MutationSyntaxSupport getMutationSyntaxSupport()
      Description copied from class: Dialect

      The 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. QueryMutationRenderingSupport consumes this profile when selecting a native or emulated plan.

      Overrides:
      getMutationSyntaxSupport in class Dialect
    • getRowValueSupport

      public RowValueSupport getRowValueSupport()
      Description copied from class: Dialect

      The native row-value syntax of this Dialect.

      Override this method to supply explicit row(a, b) construction, row equality, ordering, and distinctness comparisons, row-valued IN lists, row-valued IN subqueries, and quantified row comparisons. Treat each feature as an exact native-syntax declaration: do not infer IN-subquery support from IN-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:
      getRowValueSupport in class Dialect
      Returns:
      this Dialect's stable row-value-support profile
    • getInformationExtractor

      @SPI({IMPLEMENT,SUPPLY}) public InformationExtractor getInformationExtractor(ExtractionContext extractionContext)
      Description copied from class: Dialect

      Supply 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 from InformationExtractors, and implement InformationExtractor directly only when none of those complete profiles matches the database.

      Overrides:
      getInformationExtractor in class Dialect
      See Also:
    • causesRollback

      @SPI({IMPLEMENT,SUPPLY}) public boolean causesRollback(SQLException sqlException)
      Description copied from class: Dialect

      Determine whether this database marks the current transaction for rollback after the given statement failure.

      Inspect the original database exception when the policy depends on its error code, SQL state, or subtype. This decision is independent of how Hibernate converts the exception. This determines both JDBC rollback state and whether a pessimistic lock failure becomes a JPA PessimisticLockException or LockTimeoutException.

      Overrides:
      causesRollback in class Dialect
      Parameters:
      sqlException - the original database exception
      Returns:
      true when the failed statement invalidates the transaction
    • getNamespaceSupport

      @SPI({IMPLEMENT,SUPPLY}) public NamespaceSupport getNamespaceSupport()
      Description copied from class: Dialect

      Supply catalog and schema lifecycle behavior to schema tooling.

      Return one stable, non-null strategy. Prefer a complete immutable profile from NamespaceSupports, and implement NamespaceSupport directly only for custom or multi-command namespace SQL.

      Overrides:
      getNamespaceSupport in class Dialect
      See Also: