Class PostgreSQLDialect

java.lang.Object
org.hibernate.dialect.Dialect
org.hibernate.dialect.PostgreSQLDialect
All Implemented Interfaces:
FunctionContributor, TypeContributor, ConversionContext
Direct Known Subclasses:
PostgisPG10Dialect, PostgisPG93Dialect, PostgisPG94Dialect, PostgisPG95Dialect, PostgresPlusDialect

public class PostgreSQLDialect extends Dialect
A SQL dialect for PostgreSQL 11 and above.
  • Field Details

  • Constructor Details

  • Method Details

    • getMinimumSupportedVersion

      protected DatabaseVersion getMinimumSupportedVersion()
      Description copied from class: Dialect
      Get the version of the SQL dialect that is the minimum supported by this implementation.
      Overrides:
      getMinimumSupportedVersion in class Dialect
    • getDefaultNonContextualLobCreation

      public boolean getDefaultNonContextualLobCreation()
      Description copied from class: Dialect
      The default value to use for the configuration property "hibernate.jdbc.lob.non_contextual_creation".
      Overrides:
      getDefaultNonContextualLobCreation in class Dialect
    • columnType

      protected String columnType(int sqlTypeCode)
      Description copied from class: Dialect
      The database column type name for a given JDBC type code defined in Types or SqlTypes. This default implementation returns the ANSI-standard type name.

      This method may be overridden by concrete Dialects as an alternative to Dialect.registerColumnTypes(TypeContributions, ServiceRegistry) for simple registrations.

      Note that:

      1. Implementations of this method are expected to define a sensible mapping forTypes.NCLOB Types.NCHAR, and Types.NVARCHAR. On some database, these types are simply remapped to CLOB, CHAR, and VARCHAR.
      2. Mappings for Types.TIMESTAMP and Types.TIMESTAMP_WITH_TIMEZONE should support explicit specification of precision if possible.
      3. As specified by DdlTypeRegistry.getDescriptor(int), this method never receives Types.LONGVARCHAR, Types.LONGNVARCHAR, nor Types.LONGVARBINARY, which are considered synonyms for their non-LONG counterparts.
      4. On the other hand, the types SqlTypes.LONG32VARCHAR, SqlTypes.LONG32NVARCHAR, and SqlTypes.LONG32VARBINARY are not synonyms, and implementations of this method must define sensible mappings, for example to database-native TEXT or CLOB types.
      Overrides:
      columnType in class Dialect
      Parameters:
      sqlTypeCode - a SQL type code
      Returns:
      a column type name, with $l, $p, $s placeholders for length, precision, scale
      See Also:
    • castType

      protected String castType(int sqlTypeCode)
      Description copied from class: Dialect
      The SQL type to use in cast( ... as ... ) expressions when casting to the target type represented by the given JDBC type code.
      Overrides:
      castType in class Dialect
      Parameters:
      sqlTypeCode - The JDBC type code representing the target type
      Returns:
      The SQL type to use in cast()
    • registerColumnTypes

      protected void registerColumnTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)
      Description copied from class: Dialect
      Register ANSI-standard column types using the length limits defined by Dialect.getMaxVarcharLength(), Dialect.getMaxNVarcharLength(), and Dialect.getMaxVarbinaryLength().

      This method is always called when a Dialect is instantiated.

      Overrides:
      registerColumnTypes in class Dialect
    • getMaxVarcharLength

      public int getMaxVarcharLength()
      Description copied from class: Dialect
      The biggest size value that can be supplied as argument to a Types.VARCHAR-like type.

      For longer column lengths, use some sort of text-like type for the column.

      Overrides:
      getMaxVarcharLength in class Dialect
    • getMaxVarcharCapacity

      public int getMaxVarcharCapacity()
      Description copied from class: Dialect
      The longest possible length of a Types.VARCHAR-like column.

      For longer column lengths, use some sort of clob-like type for the column.

      Overrides:
      getMaxVarcharCapacity in class Dialect
    • getMaxVarbinaryLength

      public int getMaxVarbinaryLength()
      Description copied from class: Dialect
      The biggest size value that can be supplied as argument to a Types.VARBINARY-like type.

      For longer column lengths, use some sort of image-like type for the column.

      Overrides:
      getMaxVarbinaryLength in class Dialect
    • getDefaultStatementBatchSize

      public int getDefaultStatementBatchSize()
      Description copied from class: Dialect
      The default value to use for the configuration property "hibernate.jdbc.batch_size".
      Overrides:
      getDefaultStatementBatchSize in class Dialect
    • resolveSqlTypeDescriptor

      public JdbcType resolveSqlTypeDescriptor(String columnTypeName, int jdbcTypeCode, int precision, int scale, JdbcTypeRegistry jdbcTypeRegistry)
      Description copied from class: Dialect
      Assigns an appropriate JdbcType to a column of a JDBC result set based on the column type name, JDBC type code, precision, and scale.
      Overrides:
      resolveSqlTypeDescriptor in class Dialect
      Parameters:
      columnTypeName - the column type name
      jdbcTypeCode - the type code
      precision - the precision or 0
      scale - the scale or 0
      Returns:
      an appropriate instance of JdbcType
    • resolveSqlTypeCode

      protected Integer resolveSqlTypeCode(String columnTypeName, TypeConfiguration typeConfiguration)
      Description copied from class: Dialect
      Resolves the SqlTypes type code for the given column type name as reported by the database, or null if it can't be resolved.
      Overrides:
      resolveSqlTypeCode in class Dialect
    • getEnumTypeDeclaration

      public String getEnumTypeDeclaration(String name, String[] values)
      Description copied from class: Dialect
      If this database has a special MySQL-style enum column type, return the type declaration for the given enumeration of values.

      If the database has no such type, return null.

      Overrides:
      getEnumTypeDeclaration in class Dialect
      values - the enumerated values of the type
      Returns:
      the DDL column type declaration
    • getCreateEnumTypeCommand

      public String[] getCreateEnumTypeCommand(String name, String[] values)
      Overrides:
      getCreateEnumTypeCommand in class Dialect
    • getDropEnumTypeCommand

      public String[] getDropEnumTypeCommand(String name)
      Overrides:
      getDropEnumTypeCommand in class Dialect
    • currentTime

      public String currentTime()
      Description copied from class: Dialect
      Translation of the HQL/JPQL current_time function, which maps to the Java type Time which is a time with no time zone. This contradicts ANSI SQL where current_time has the type TIME WITH TIME ZONE.

      It is recommended to override this in dialects for databases which support localtime or time at local.

      Overrides:
      currentTime in class Dialect
    • currentTimestamp

      public String currentTimestamp()
      Description copied from class: Dialect
      Translation of the HQL/JPQL current_timestamp function, which maps to the Java type Timestamp which is a datetime with no time zone. This contradicts ANSI SQL where current_timestamp has the type TIMESTAMP WITH TIME ZONE.

      It is recommended to override this in dialects for databases which support localtimestamp or timestamp at local.

      Overrides:
      currentTimestamp in class Dialect
    • currentTimestampWithTimeZone

      public String currentTimestampWithTimeZone()
      Description copied from class: Dialect
      Translation of the HQL offset_datetime function, which maps to the Java type OffsetDateTime which is a datetime with a time zone. This in principle correctly maps to the ANSI SQL current_timestamp which has the type TIMESTAMP WITH TIME ZONE.
      Overrides:
      currentTimestampWithTimeZone in class Dialect
    • extractPattern

      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(dow,arg)+1)).
      Overrides:
      extractPattern in class Dialect
      Parameters:
      unit - the first argument
    • getFractionalSecondPrecisionInNanos

      public long getFractionalSecondPrecisionInNanos()
      microsecond is the smallest unit for an interval, and the highest precision for a timestamp, so we could use it as the "native" precision, but it's more convenient to use whole seconds (with the fractional part), since we want to use extract(epoch from ...) in our emulation of timestampdiff().
      Overrides:
      getFractionalSecondPrecisionInNanos in class Dialect
      Returns:
      the precision, specified as a quantity of nanoseconds
      See Also:
    • timestampaddPattern

      public String timestampaddPattern(TemporalUnit unit, TemporalType temporalType, IntervalType intervalType)
      Description copied from class: Dialect
      Obtain a pattern for the SQL equivalent to a timestampadd() function call. The resulting pattern must contain ?1, ?2, and ?3 placeholders for the arguments.
      Overrides:
      timestampaddPattern in class Dialect
      Parameters:
      unit - The unit to add to the temporal
      temporalType - The type of the temporal
      intervalType - The type of interval to add or null if it's not a native interval
    • timestampdiffPattern

      public String timestampdiffPattern(TemporalUnit unit, TemporalType fromTemporalType, TemporalType toTemporalType)
      Description copied from class: Dialect
      Obtain a pattern for the SQL equivalent to a timestampdiff() function call. The resulting pattern must contain ?1, ?2, and ?3 placeholders for the arguments.
      Overrides:
      timestampdiffPattern in class Dialect
      Parameters:
      unit - the first argument
      fromTemporalType - true if the first argument is a timestamp, false if a date
      toTemporalType - true if the second argument is
    • extractField

      @Deprecated(forRemoval=true) protected void extractField(StringBuilder pattern, TemporalUnit unit, TemporalType fromTimestamp, TemporalType toTimestamp, TemporalUnit toUnit)
      Deprecated, for removal: This API element is subject to removal in a future version.
      No longer used, and should be removed
    • getTimeZoneSupport

      public TimeZoneSupport getTimeZoneSupport()
      Description copied from class: Dialect
      How the dialect supports time zone types like Types.TIMESTAMP_WITH_TIMEZONE.
      Overrides:
      getTimeZoneSupport in class Dialect
    • initializeFunctionRegistry

      public void initializeFunctionRegistry(FunctionContributions functionContributions)
      Description copied from class: Dialect
      Initialize the given registry with any dialect-specific functions.

      Support for certain SQL functions is required, and if the database does not support a required function, then the dialect must define a way to emulate it.

      These required functions include the functions defined by the JPA query language specification:

      • avg(arg) - aggregate function
      • count([distinct ]arg) - aggregate function
      • max(arg) - aggregate function
      • min(arg) - aggregate function
      • sum(arg) - aggregate function
      • coalesce(arg0, arg1, ...)
      • nullif(arg0, arg1)
      • lower(arg)
      • upper(arg)
      • length(arg)
      • concat(arg0, arg1, ...)
      • locate(pattern, string[, start])
      • substring(string, start[, length])
      • trim([[spec ][character ]from] string)
      • abs(arg)
      • mod(arg0, arg1)
      • sqrt(arg)
      • current date
      • current time
      • current timestamp
      Along with an additional set of functions defined by ANSI SQL:
      • any(arg) - aggregate function
      • every(arg) - aggregate function
      • var_samp(arg) - aggregate function
      • var_pop(arg) - aggregate function
      • stddev_samp(arg) - aggregate function
      • stddev_pop(arg) - aggregate function
      • cast(arg as Type)
      • extract(field from arg)
      • ln(arg)
      • exp(arg)
      • power(arg0, arg1)
      • floor(arg)
      • ceiling(arg)
      • position(pattern in string)
      • substring(string from start[ for length])
      • overlay(string placing replacement from start[ for length])
      And the following functions for working with java.time types:
      • local date
      • local time
      • local datetime
      • offset datetime
      • instant
      And a number of additional "standard" functions:
      • left(string, length)
      • right(string, length)
      • replace(string, pattern, replacement)
      • pad(string with length spec[ character])
      • repeat(string, times)
      • pi
      • log10(arg)
      • log(base, arg)
      • sign(arg)
      • sin(arg)
      • cos(arg)
      • tan(arg)
      • asin(arg)
      • acos(arg)
      • atan(arg)
      • atan2(arg0, arg1)
      • round(arg0[, arg1])
      • truncate(arg0[, arg1])
      • sinh(arg)
      • tanh(arg)
      • cosh(arg)
      • least(arg0, arg1, ...)
      • greatest(arg0, arg1, ...)
      • degrees(arg)
      • radians(arg)
      • bitand(arg1, arg1)
      • bitor(arg1, arg1)
      • bitxor(arg1, arg1)
      • format(datetime as pattern)
      • collate(string as collation)
      • str(arg) - synonym of cast(a as String)
      • ifnull(arg0, arg1) - synonym of coalesce(a, b)
      Finally, the following functions are defined as abbreviations for extract(), and desugared by the parser:
      • second(arg) - synonym of extract(second from a)
      • minute(arg) - synonym of extract(minute from a)
      • hour(arg) - synonym of extract(hour from a)
      • day(arg) - synonym of extract(day from a)
      • month(arg) - synonym of extract(month from a)
      • year(arg) - synonym of extract(year from a)
      Note that according to this definition, the second() function returns a floating point value, contrary to the integer type returned by the native function with this name on many databases. Thus, we don't just naively map these HQL functions to the native SQL functions with the same names.
      Overrides:
      initializeFunctionRegistry in class Dialect
    • supportsMinMaxOnUuid

      protected boolean supportsMinMaxOnUuid()
      Whether PostgreSQL supports min(uuid)/max(uuid), which it doesn't by default. Since the emulation does not perform well, this method may be overridden by any user who ensures that aggregate functions for handling uuids exist in the database.

      The following definitions can be used for this purpose:

       create or replace function min(uuid, uuid)
           returns uuid
           immutable parallel safe
           language plpgsql as
       $$
       begin
           return least($1, $2);
       end
       $$;
      
       create aggregate min(uuid) (
           sfunc = min,
           stype = uuid,
           combinefunc = min,
           parallel = safe,
           sortop = operator (<)
           );
      
       create or replace function max(uuid, uuid)
           returns uuid
           immutable parallel safe
           language plpgsql as
       $$
       begin
           return greatest($1, $2);
       end
       $$;
      
       create aggregate max(uuid) (
           sfunc = max,
           stype = uuid,
           combinefunc = max,
           parallel = safe,
           sortop = operator (>)
           );
       
    • getNameQualifierSupport

      public NameQualifierSupport getNameQualifierSupport()
      Description copied from class: Dialect
      The support for qualified identifiers.

      By default, decide based on DatabaseMetaData.

      Overrides:
      getNameQualifierSupport in class Dialect
      Returns:
      The NameQualifierSupport, or null to use DatabaseMetaData.
    • getCurrentSchemaCommand

      public String getCurrentSchemaCommand()
      Description copied from class: Dialect
      Get the SQL command used to retrieve the current schema name.

      Works in conjunction with Dialect.getSchemaNameResolver(), unless the resulting SchemaNameResolver does not need this information. For example, a custom implementation might make use of the Java 1.7 Connection.getSchema() method.

      Overrides:
      getCurrentSchemaCommand in class Dialect
      Returns:
      The current schema retrieval SQL
    • supportsDistinctFromPredicate

      public boolean supportsDistinctFromPredicate()
      Description copied from class: Dialect
      Does this dialect support some kind of distinct from predicate?

      That is, does it support syntax like:

       ... where FIRST_NAME IS DISTINCT FROM LAST_NAME
       
      Overrides:
      supportsDistinctFromPredicate in class Dialect
      Returns:
      True if this SQL dialect is known to support some kind of distinct from predicate; false otherwise
    • supportsIfExistsBeforeTableName

      public boolean supportsIfExistsBeforeTableName()
      Description copied from class: Dialect
      For dropping a table, can the phrase if exists be applied before the table name?
      Overrides:
      supportsIfExistsBeforeTableName in class Dialect
      Returns:
      true if if exists can be applied before the table name
    • supportsIfExistsBeforeTypeName

      public boolean supportsIfExistsBeforeTypeName()
      Description copied from class: Dialect
      For dropping a type, can the phrase if exists be applied before the type name?
      Overrides:
      supportsIfExistsBeforeTypeName in class Dialect
      Returns:
      true if if exists can be applied before the type name
    • supportsIfExistsBeforeConstraintName

      public boolean supportsIfExistsBeforeConstraintName()
      Description copied from class: Dialect
      For dropping a constraint with an alter table statement, can the phrase if exists be applied before the constraint name?
      Overrides:
      supportsIfExistsBeforeConstraintName in class Dialect
      Returns:
      true if if exists can be applied before the constraint name
    • supportsIfExistsAfterAlterTable

      public boolean supportsIfExistsAfterAlterTable()
      Description copied from class: Dialect
      For an alter table, can the phrase if exists be applied?
      Overrides:
      supportsIfExistsAfterAlterTable in class Dialect
      Returns:
      true if if exists can be applied after alter table
    • getBeforeDropStatement

      public String getBeforeDropStatement()
      Description copied from class: Dialect
      A command to execute before dropping tables.
      Overrides:
      getBeforeDropStatement in class Dialect
      Returns:
      A SQL statement, or null
    • getAlterColumnTypeString

      public String getAlterColumnTypeString(String columnName, String columnType, String columnDefinition)
      Description copied from class: Dialect
      The fragment of an alter table command which modifies a column type, or null if column types cannot be modified. Often alter column col_name set data type col_type.
      Overrides:
      getAlterColumnTypeString in class Dialect
      Parameters:
      columnName - the name of the column
      columnType - the new type of the column
      columnDefinition - the full column definition
      Returns:
      a fragment to be appended to alter table
    • supportsAlterColumnType

      public boolean supportsAlterColumnType()
      Description copied from class: Dialect
      Does this dialect support modifying the type of an existing column?
      Overrides:
      supportsAlterColumnType in class Dialect
    • supportsValuesList

      public boolean supportsValuesList()
      Description copied from class: Dialect
      Does this dialect support values lists of form VALUES (1), (2), (3)?
      Overrides:
      supportsValuesList in class Dialect
      Returns:
      true if values list are supported
    • supportsPartitionBy

      public boolean supportsPartitionBy()
      Description copied from class: Dialect
      Does is dialect support partition by?
      Overrides:
      supportsPartitionBy in class Dialect
    • supportsNonQueryWithCTE

      public boolean supportsNonQueryWithCTE()
      Description copied from class: Dialect
      Does this dialect support insert, update, and delete statements with Common Table Expressions (CTEs)?
      Overrides:
      supportsNonQueryWithCTE in class Dialect
      Returns:
      true if non-query statements are supported with CTE
    • supportsConflictClauseForInsertCTE

      public boolean supportsConflictClauseForInsertCTE()
      Description copied from class: Dialect
      Does this dialect support the conflict clause for insert statements that appear in a CTE?
      Overrides:
      supportsConflictClauseForInsertCTE in class Dialect
      Returns:
      true if conflict clause is supported
    • getSequenceSupport

      public SequenceSupport getSequenceSupport()
      Description copied from class: Dialect
      Get the appropriate SequenceSupport for this dialect.
      Overrides:
      getSequenceSupport in class Dialect
    • getCascadeConstraintsString

      public String getCascadeConstraintsString()
      Description copied from class: Dialect
      The keyword that specifies that a drop table operation should be cascaded to its constraints, typically " cascade" where the leading space is required, or the empty string if there is no such keyword in this dialect.
      Overrides:
      getCascadeConstraintsString in class Dialect
      Returns:
      The cascade drop keyword, if any, with a leading space
    • getQuerySequencesString

      public String getQuerySequencesString()
      Description copied from class: Dialect
      Get the select command used retrieve the names of all sequences.
      Overrides:
      getQuerySequencesString in class Dialect
      Returns:
      The select command; or null if sequences are not supported.
    • getLimitHandler

      public LimitHandler getLimitHandler()
      Description copied from class: Dialect
      Obtain a LimitHandler that implements pagination support for Query.setMaxResults(int) and Query.setFirstResult(int).
      Overrides:
      getLimitHandler in class Dialect
    • getForUpdateString

      public String getForUpdateString(String aliases)
      Description copied from class: Dialect
      Get the FOR UPDATE OF column_list fragment appropriate for this dialect, given the aliases of the columns to be write locked.
      Overrides:
      getForUpdateString in class Dialect
      Parameters:
      aliases - The columns to be write locked.
      Returns:
      The appropriate FOR UPDATE OF column_list clause string.
    • getForUpdateString

      public String getForUpdateString(String aliases, LockOptions lockOptions)
      Description copied from class: Dialect
      Get the FOR UPDATE OF or FOR SHARE OF fragment appropriate for this dialect, given the aliases of the columns to be locked.
      Overrides:
      getForUpdateString in class Dialect
      Parameters:
      aliases - The columns to be locked.
      lockOptions - the lock options to apply
      Returns:
      The appropriate FOR UPDATE OF column_list clause string.
    • getNoColumnsInsertString

      public String getNoColumnsInsertString()
      Description copied from class: Dialect
      The fragment used to insert a row without specifying any column values, usually just (), but sometimes default values.
      Overrides:
      getNoColumnsInsertString in class Dialect
      Returns:
      The appropriate empty values clause.
    • getCaseInsensitiveLike

      public String getCaseInsensitiveLike()
      Description copied from class: Dialect
      The name of the SQL operator that performs case-insensitive LIKE comparisons.
      Overrides:
      getCaseInsensitiveLike in class Dialect
      Returns:
      The dialect-specific case-insensitive like operator.
    • supportsCaseInsensitiveLike

      public boolean supportsCaseInsensitiveLike()
      Description copied from class: Dialect
      Does this dialect support case-insensitive LIKE comparisons?
      Overrides:
      supportsCaseInsensitiveLike in class Dialect
      Returns:
      true if the database supports case-insensitive like comparisons, false otherwise. The default is false.
    • getNativeIdentifierGeneratorStrategy

      public String getNativeIdentifierGeneratorStrategy()
      Description copied from class: Dialect
      The name identifying the "native" id generation strategy for this dialect.

      This is the name of the id generation strategy which should be used when "native" is specified in hbm.xml.

      Overrides:
      getNativeIdentifierGeneratorStrategy in class Dialect
      Returns:
      The name identifying the native generator strategy.
    • supportsOuterJoinForUpdate

      public boolean supportsOuterJoinForUpdate()
      Description copied from class: Dialect
      Does this dialect support FOR UPDATE in conjunction with outer-joined rows?
      Overrides:
      supportsOuterJoinForUpdate in class Dialect
      Returns:
      True if outer-joined rows can be locked via FOR UPDATE.
    • useInputStreamToInsertBlob

      public boolean useInputStreamToInsertBlob()
      Description copied from class: Dialect
      Should LOBs (both BLOB and CLOB) be bound using stream operations, that is, using PreparedStatement.setBinaryStream(int, java.io.InputStream, int)).
      Overrides:
      useInputStreamToInsertBlob in class Dialect
      Returns:
      True if BLOBs and CLOBs should be bound using stream operations.
    • useConnectionToCreateLob

      public boolean useConnectionToCreateLob()
      Description copied from class: Dialect
      Should BLOB, CLOB, and NCLOB be created solely using respectively Connection.createBlob(), Connection.createClob(), and Connection.createNClob().
      Overrides:
      useConnectionToCreateLob in class Dialect
      Returns:
      True if BLOB, CLOB, and NCLOB should be created using JDBC Connection.
    • getSelectClauseNullString

      public String getSelectClauseNullString(int sqlType, TypeConfiguration typeConfiguration)
      Description copied from class: Dialect
      Given a JDBC type code, return the expression for a literal null value of that type, to use in a select clause.

      The select query will be an element of a UNION or UNION ALL.

      Overrides:
      getSelectClauseNullString in class Dialect
      Parameters:
      sqlType - The Types type code.
      typeConfiguration - The type configuration
      Returns:
      The appropriate select clause value fragment.
    • quoteCollation

      public String quoteCollation(String collation)
      Description copied from class: Dialect
      Quote the given collation name if necessary.
      Overrides:
      quoteCollation in class Dialect
    • supportsCommentOn

      public boolean supportsCommentOn()
      Description copied from class: Dialect
      Does this dialect support commenting on tables and columns?
      Overrides:
      supportsCommentOn in class Dialect
      Returns:
      true if commenting is supported
    • supportsCurrentTimestampSelection

      public boolean supportsCurrentTimestampSelection()
      Description copied from class: Dialect
      Does this dialect support some way to retrieve the current timestamp value from the database?
      Overrides:
      supportsCurrentTimestampSelection in class Dialect
      Returns:
      True if the current timestamp can be retrieved; false otherwise.
    • isCurrentTimestampSelectStringCallable

      public boolean isCurrentTimestampSelectStringCallable()
      Description copied from class: Dialect
      Is the command returned by Dialect.getCurrentTimestampSelectString() treated as callable?

      Typically, this indicates the use of the JDBC escape syntax.

      Overrides:
      isCurrentTimestampSelectStringCallable in class Dialect
      Returns:
      if the Dialect.getCurrentTimestampSelectString() is treated as callable; false otherwise.
    • getCurrentTimestampSelectString

      public String getCurrentTimestampSelectString()
      Description copied from class: Dialect
      The command used to retrieve the current timestamp from the database.
      Overrides:
      getCurrentTimestampSelectString in class Dialect
    • supportsTupleCounts

      public boolean supportsTupleCounts()
      Description copied from class: Dialect
      Does this dialect support count(a,b)?
      Overrides:
      supportsTupleCounts in class Dialect
      Returns:
      True if the database supports counting tuples; false otherwise.
    • supportsIsTrue

      public boolean supportsIsTrue()
      Description copied from class: Dialect
      Does this dialect support the is true and is false operators?
      Overrides:
      supportsIsTrue in class Dialect
      Returns:
      true if the database supports is true and is false, or false if it does not. The default is is false.
    • requiresParensForTupleDistinctCounts

      public boolean requiresParensForTupleDistinctCounts()
      Description copied from class: Dialect
      If Dialect.supportsTupleDistinctCounts() is true, does this dialect require the tuple to be delimited with parentheses?
      Overrides:
      requiresParensForTupleDistinctCounts in class Dialect
      Returns:
      boolean
    • appendBooleanValueString

      public void appendBooleanValueString(SqlAppender appender, boolean bool)
      Description copied from class: Dialect
      Append the SQL literal expression representing the given boolean value to the given SqlAppender.
      Overrides:
      appendBooleanValueString in class Dialect
      Parameters:
      appender - The SqlAppender to append the literal expression to
      bool - The boolean value
    • buildIdentifierHelper

      public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData) throws SQLException
      Description copied from class: Dialect
      The IdentifierHelper indicated by this dialect for handling identifier conversions. Returning null is allowed and indicates that Hibernate should fall back to building a "standard" helper. In the fallback path, any changes made to the IdentifierHelperBuilder during this call will still be incorporated into the built IdentifierHelper.

      The incoming builder will have the following set:

      By default, Hibernate will do the following:

      Overrides:
      buildIdentifierHelper in class Dialect
      Parameters:
      builder - A partially-configured IdentifierHelperBuilder.
      dbMetaData - Access to the metadata returned from the driver if needed and if available. WARNING: it may be null.
      Returns:
      The IdentifierHelper instance to use, or null to indicate Hibernate should use its fallback path
      Throws:
      SQLException - Accessing the DatabaseMetaData can throw it. Just rethrow and Hibernate will handle it.
      See Also:
    • getFallbackSqmMutationStrategy

      public SqmMultiTableMutationStrategy getFallbackSqmMutationStrategy(EntityMappingType rootEntityDescriptor, RuntimeModelCreationContext runtimeModelCreationContext)
      Description copied from class: Dialect
      Overrides:
      getFallbackSqmMutationStrategy in class Dialect
      See Also:
    • getFallbackSqmInsertStrategy

      public SqmMultiTableInsertStrategy getFallbackSqmInsertStrategy(EntityMappingType rootEntityDescriptor, RuntimeModelCreationContext runtimeModelCreationContext)
      Description copied from class: Dialect
      Overrides:
      getFallbackSqmInsertStrategy in class Dialect
      See Also:
    • getSqlAstTranslatorFactory

      public SqlAstTranslatorFactory getSqlAstTranslatorFactory()
      Description copied from class: Dialect
      Return a SqlAstTranslatorFactory specific to this dialect, or null to use the standard translator.
      Overrides:
      getSqlAstTranslatorFactory in class Dialect
      See Also:
    • getViolatedConstraintNameExtractor

      public ViolatedConstraintNameExtractor getViolatedConstraintNameExtractor()
      Description copied from class: Dialect
      A ViolatedConstraintNameExtractor for extracting the name of a violated constraint from a SQLException.
      Specified by:
      getViolatedConstraintNameExtractor in interface ConversionContext
      Overrides:
      getViolatedConstraintNameExtractor in class Dialect
    • buildSQLExceptionConversionDelegate

      public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate()
      Description copied from class: Dialect
      An instance of SQLExceptionConversionDelegate for interpreting dialect-specific error or SQLState codes.

      If this method is overridden to return a non-null value, the default SQLExceptionConverter will use the returned SQLExceptionConversionDelegate in addition to the following standard delegates:

      1. a "static" delegate based on the JDBC4-defined SQLException hierarchy, and
      2. a delegate that interprets SQLState codes as either X/Open or SQL-2003 codes, depending on what is reported by the JDBC driver.

      It is strongly recommended that every Dialect implementation override this method, since interpretation of a SQL error is much more accurate when based on the vendor-specific error code, rather than on the SQLState.

      Overrides:
      buildSQLExceptionConversionDelegate in class Dialect
      Returns:
      The SQLExceptionConversionDelegate for this dialect
    • registerResultSetOutParameter

      public int registerResultSetOutParameter(CallableStatement statement, int col) throws SQLException
      Description copied from class: Dialect
      Registers a parameter capable of returning a ResultSet by position, either an OUT parameter, or a REF_CURSOR parameter as defined in Java 8.
      Overrides:
      registerResultSetOutParameter in class Dialect
      Parameters:
      statement - The callable statement.
      col - The bind position at which to register the output param.
      Returns:
      The number of (contiguous) bind positions used.
      Throws:
      SQLException - Indicates problems registering the param.
    • getResultSet

      public ResultSet getResultSet(CallableStatement ps) throws SQLException
      Description copied from class: Dialect
      Given a callable statement previously processed by Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int), extract the ResultSet from the OUT parameter.
      Overrides:
      getResultSet in class Dialect
      Parameters:
      ps - The callable statement.
      Returns:
      The extracted result set.
      Throws:
      SQLException - Indicates problems extracting the result set.
    • supportsLobValueChangePropagation

      public boolean supportsLobValueChangePropagation()
      Description copied from class: Dialect
      Does the dialect support propagating changes to LOB values back to the database? Talking about mutating the internal value of the locator, as opposed to supplying a new locator instance.
      Overrides:
      supportsLobValueChangePropagation in class Dialect
      Returns:
      True if the changes are propagated back to the database; false otherwise.
    • supportsUnboundedLobLocatorMaterialization

      public boolean supportsUnboundedLobLocatorMaterialization()
      Description copied from class: Dialect
      Is it supported to materialize a LOB locator outside the transaction in which it was created?
      Overrides:
      supportsUnboundedLobLocatorMaterialization in class Dialect
      Returns:
      True if unbounded materialization is supported; false otherwise.
    • getGroupBySelectItemReferenceStrategy

      public SelectItemReferenceStrategy getGroupBySelectItemReferenceStrategy()
      Description copied from class: Dialect
      Determine how selected items are referenced in the group by clause.
      Overrides:
      getGroupBySelectItemReferenceStrategy in class Dialect
    • getCallableStatementSupport

      public CallableStatementSupport getCallableStatementSupport()
      Description copied from class: Dialect
      The CallableStatementSupport for this database. Does this database support returning cursors?
      Overrides:
      getCallableStatementSupport in class Dialect
    • getResultSet

      public ResultSet getResultSet(CallableStatement statement, int position) throws SQLException
      Description copied from class: Dialect
      Given a callable statement previously processed by Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int), extract the ResultSet from the positional OUT parameter.
      Overrides:
      getResultSet in class Dialect
      Parameters:
      statement - The callable statement.
      position - The bind position at which to register the output param.
      Returns:
      The extracted result set.
      Throws:
      SQLException - Indicates problems extracting the result set.
    • getResultSet

      public ResultSet getResultSet(CallableStatement statement, String name) throws SQLException
      Description copied from class: Dialect
      Given a callable statement previously processed by Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int), extract the ResultSet from the named OUT parameter.
      Overrides:
      getResultSet in class Dialect
      Parameters:
      statement - The callable statement.
      name - The parameter name (for drivers which support named parameters).
      Returns:
      The extracted result set.
      Throws:
      SQLException - Indicates problems extracting the result set.
    • qualifyIndexName

      public boolean qualifyIndexName()
      Description copied from class: Dialect
      Do we need to qualify index names with the schema name?
      Overrides:
      qualifyIndexName in class Dialect
      Returns:
      true if we do
    • getIdentityColumnSupport

      public IdentityColumnSupport getIdentityColumnSupport()
      Description copied from class: Dialect
      Get the appropriate IdentityColumnSupport for this dialect.
      Overrides:
      getIdentityColumnSupport in class Dialect
      Returns:
      the IdentityColumnSupport
    • getNationalizationSupport

      public NationalizationSupport getNationalizationSupport()
      Description copied from class: Dialect
      Determines whether this database requires the use of explicitly nationalized character (Unicode) data types.

      That is, whether the use of Types.NCHAR, Types.NVARCHAR, and Types.NCLOB is required for nationalized character data.

      Overrides:
      getNationalizationSupport in class Dialect
    • getMaxIdentifierLength

      public int getMaxIdentifierLength()
      Description copied from class: Dialect
      What is the maximum identifier length supported by this dialect?
      Overrides:
      getMaxIdentifierLength in class Dialect
      Returns:
      The maximum length.
    • supportsStandardArrays

      public boolean supportsStandardArrays()
      Description copied from class: Dialect
      Does this database have native support for ANSI SQL standard arrays which are expressed in terms of the element type name: integer array.
      Overrides:
      supportsStandardArrays in class Dialect
      Returns:
      boolean
    • supportsJdbcConnectionLobCreation

      public boolean supportsJdbcConnectionLobCreation(DatabaseMetaData databaseMetaData)
      Description copied from class: Dialect
      Check whether the JDBC Connection supports creating LOBs via Connection.createBlob(), Connection.createNClob(), or Connection.createClob().
      Overrides:
      supportsJdbcConnectionLobCreation in class Dialect
      Parameters:
      databaseMetaData - JDBC DatabaseMetaData which can be used if LOB creation is supported only starting from a given driver version
      Returns:
      true if LOBs can be created via the JDBC Connection.
    • supportsMaterializedLobAccess

      public boolean supportsMaterializedLobAccess()
      Description copied from class: Dialect
      Overrides:
      supportsMaterializedLobAccess in class Dialect
      Returns:
      true if LOBs can be set with the materialized APIs.
    • supportsTemporalLiteralOffset

      public boolean supportsTemporalLiteralOffset()
      Description copied from class: Dialect
      Does this dialect supports timezone offsets in temporal literals.
      Overrides:
      supportsTemporalLiteralOffset in class Dialect
    • appendDatetimeFormat

      public void appendDatetimeFormat(SqlAppender appender, String format)
      Description copied from class: Dialect
      Translate the given datetime format string from the pattern language defined by Java's DateTimeFormatter to whatever pattern language is understood by the native datetime formatting function for this database (often the to_char() function).

      Since it's never possible to translate every pattern letter sequences understood by DateTimeFormatter, only the following subset of pattern letters is accepted by Hibernate:

      • G: era
      • y: year of era
      • Y: year of week-based year
      • M: month of year
      • w: week of week-based year (ISO week number)
      • W: week of month
      • E: day of week (name)
      • e: day of week (number)
      • d: day of month
      • D: day of year
      • a: AM/PM
      • H: hour of day (24 hour time)
      • h: hour of AM/PM (12 hour time)
      • m: minutes
      • s: seconds
      • z,Z,x: timezone offset

      In addition, punctuation characters and single-quoted literal strings are accepted.

      Appends a pattern accepted by the function that formats dates and times in this dialect to a SQL fragment that is being constructed.

      Overrides:
      appendDatetimeFormat in class Dialect
    • datetimeFormat

      public Replacer datetimeFormat(String format)
    • translateExtractField

      public String translateExtractField(TemporalUnit unit)
      Description copied from class: Dialect
      Return the name used to identify the given field as an argument to the extract() function, or of this dialect's equivalent function.

      This method does not need to handle TemporalUnit.NANOSECOND, TemporalUnit.NATIVE, TemporalUnit.OFFSET, TemporalUnit.DATE, TemporalUnit.TIME, TemporalUnit.WEEK_OF_YEAR, nor TemporalUnit.WEEK_OF_MONTH, which are already desugared by ExtractFunction.

      Overrides:
      translateExtractField in class Dialect
    • getAggregateSupport

      public AggregateSupport getAggregateSupport()
      Description copied from class: Dialect
      How does this dialect support aggregate types like SqlTypes.STRUCT.
      Overrides:
      getAggregateSupport in class Dialect
    • appendBinaryLiteral

      public void appendBinaryLiteral(SqlAppender appender, byte[] bytes)
      Description copied from class: Dialect
      Append a binary literal to the given SqlAppender.
      Overrides:
      appendBinaryLiteral in class Dialect
    • appendDateTimeLiteral

      public void appendDateTimeLiteral(SqlAppender appender, TemporalAccessor temporalAccessor, TemporalType precision, TimeZone jdbcTimeZone)
      Description copied from class: Dialect
      Append a datetime literal representing the given java.time value to the given SqlAppender.
      Overrides:
      appendDateTimeLiteral in class Dialect
    • appendDateTimeLiteral

      public void appendDateTimeLiteral(SqlAppender appender, Date date, TemporalType precision, TimeZone jdbcTimeZone)
      Description copied from class: Dialect
      Append a datetime literal representing the given Date value to the given SqlAppender.
      Overrides:
      appendDateTimeLiteral in class Dialect
    • appendDateTimeLiteral

      public void appendDateTimeLiteral(SqlAppender appender, Calendar calendar, TemporalType precision, TimeZone jdbcTimeZone)
      Description copied from class: Dialect
      Append a datetime literal representing the given Calendar value to the given SqlAppender.
      Overrides:
      appendDateTimeLiteral in class Dialect
    • getWriteLockString

      public String getWriteLockString(int timeout)
      Description copied from class: Dialect
      Get the string to append to SELECT statements to acquire pessimistic WRITE locks for this dialect.

      Location of the returned string is treated the same as Dialect.getForUpdateString().

      Overrides:
      getWriteLockString in class Dialect
      Parameters:
      timeout - in milliseconds, -1 for indefinite wait and 0 for no wait.
      Returns:
      The appropriate LOCK clause string.
    • getWriteLockString

      public String getWriteLockString(String aliases, int timeout)
      Description copied from class: Dialect
      Get the string to append to SELECT statements to acquire WRITE locks for this dialect, given the aliases of the columns to be write locked.

      Location of the returned string is treated the same as Dialect.getForUpdateString().

      Overrides:
      getWriteLockString in class Dialect
      Parameters:
      aliases - The columns to be read locked.
      timeout - in milliseconds, -1 for indefinite wait and 0 for no wait.
      Returns:
      The appropriate LOCK clause string.
    • getReadLockString

      public String getReadLockString(int timeout)
      Description copied from class: Dialect
      Get the string to append to SELECT statements to acquire READ locks for this dialect.

      Location of the returned string is treated the same as Dialect.getForUpdateString().

      Overrides:
      getReadLockString in class Dialect
      Parameters:
      timeout - in milliseconds, -1 for indefinite wait and 0 for no wait.
      Returns:
      The appropriate LOCK clause string.
    • getReadLockString

      public String getReadLockString(String aliases, int timeout)
      Description copied from class: Dialect
      Get the string to append to SELECT statements to acquire READ locks for this dialect, given the aliases of the columns to be read locked.

      Location of the returned string is treated the same as Dialect.getForUpdateString().

      Overrides:
      getReadLockString in class Dialect
      Parameters:
      aliases - The columns to be read locked.
      timeout - in milliseconds, -1 for indefinite wait and 0 for no wait.
      Returns:
      The appropriate LOCK clause string.
    • getForUpdateNowaitString

      public String getForUpdateNowaitString()
      Description copied from class: Dialect
      Retrieves the FOR UPDATE NOWAIT syntax specific to this dialect.
      Overrides:
      getForUpdateNowaitString in class Dialect
      Returns:
      The appropriate FOR UPDATE NOWAIT clause string.
    • getForUpdateNowaitString

      public String getForUpdateNowaitString(String aliases)
      Description copied from class: Dialect
      Get the FOR UPDATE OF column_list NOWAIT fragment appropriate for this dialect, given the aliases of the columns to be write locked.
      Overrides:
      getForUpdateNowaitString in class Dialect
      Parameters:
      aliases - The columns to be write locked.
      Returns:
      The appropriate FOR UPDATE OF colunm_list NOWAIT clause string.
    • getForUpdateSkipLockedString

      public String getForUpdateSkipLockedString()
      Description copied from class: Dialect
      Retrieves the FOR UPDATE SKIP LOCKED syntax specific to this dialect.
      Overrides:
      getForUpdateSkipLockedString in class Dialect
      Returns:
      The appropriate FOR UPDATE SKIP LOCKED clause string.
    • getForUpdateSkipLockedString

      public String getForUpdateSkipLockedString(String aliases)
      Description copied from class: Dialect
      Get the FOR UPDATE OF column_list SKIP LOCKED fragment appropriate for this dialect, given the aliases of the columns to be write locked.
      Overrides:
      getForUpdateSkipLockedString in class Dialect
      Parameters:
      aliases - The columns to be write locked.
      Returns:
      The appropriate FOR UPDATE colunm_list SKIP LOCKED clause string.
    • supportsNoWait

      public boolean supportsNoWait()
      Description copied from class: Dialect
      Does this dialect support NO_WAIT timeout.
      Overrides:
      supportsNoWait in class Dialect
      Returns:
      true if NO_WAIT is supported
    • supportsWait

      public boolean supportsWait()
      Description copied from class: Dialect
      Does this dialect support WAIT timeout.
      Overrides:
      supportsWait in class Dialect
      Returns:
      true if WAIT is supported
    • supportsSkipLocked

      public boolean supportsSkipLocked()
      Description copied from class: Dialect
      Does this dialect support SKIP_LOCKED timeout.
      Overrides:
      supportsSkipLocked in class Dialect
      Returns:
      true if SKIP_LOCKED is supported
    • supportsInsertReturning

      public boolean supportsInsertReturning()
      Description copied from class: Dialect
      Does this dialect fully support returning arbitrary generated column values after execution of an insert statement, using native SQL syntax?

      Support for identity columns is insufficient here, we require something like:

      1. insert ... returning ...
      2. select from final table (insert ... )
      Overrides:
      supportsInsertReturning in class Dialect
      Returns:
      true if InsertReturningDelegate works for any sort of primary key column (not just identity columns), or false if InsertReturningDelegate does not work, or only works for specialized identity/"autoincrement" columns
      See Also:
    • supportsOffsetInSubquery

      public boolean supportsOffsetInSubquery()
      Description copied from class: Dialect
      Does this dialect support offset in subqueries?

      For example:

       select * from Table1 where col1 in (select col1 from Table2 order by col2 limit 1 offset 1)
       
      Overrides:
      supportsOffsetInSubquery in class Dialect
      Returns:
      true if it does
    • supportsWindowFunctions

      public boolean supportsWindowFunctions()
      Description copied from class: Dialect
      Does this dialect support window functions like row_number() over (..)?
      Overrides:
      supportsWindowFunctions in class Dialect
      Returns:
      true if the underlying database supports window functions, false otherwise. The default is false.
    • supportsLateral

      public boolean supportsLateral()
      Description copied from class: Dialect
      Does this dialect support the SQL lateral keyword or a proprietary alternative?
      Overrides:
      supportsLateral in class Dialect
      Returns:
      true if the underlying database supports lateral, false otherwise. The default is false.
    • supportsRecursiveCTE

      public boolean supportsRecursiveCTE()
      Description copied from class: Dialect
      Does this dialect/database support recursive CTEs?
      Overrides:
      supportsRecursiveCTE in class Dialect
      Returns:
      true if recursive CTEs are supported
    • supportsFetchClause

      public boolean supportsFetchClause(FetchClauseType type)
      Description copied from class: Dialect
      Does this dialect support the given FETCH clause type.
      Overrides:
      supportsFetchClause in class Dialect
      Parameters:
      type - The fetch clause type
      Returns:
      true if the underlying database supports the given fetch clause type, false otherwise. The default is false.
    • getFunctionalDependencyAnalysisSupport

      public FunctionalDependencyAnalysisSupport getFunctionalDependencyAnalysisSupport()
      Description copied from class: Dialect
      Get this dialect's level of support for primary key functional dependency analysis within GROUP BY and ORDER BY clauses.
      Overrides:
      getFunctionalDependencyAnalysisSupport in class Dialect
    • getWriteRowLockStrategy

      public RowLockStrategy getWriteRowLockStrategy()
      Description copied from class: Dialect
      The row lock strategy to use for write locks.
      Overrides:
      getWriteRowLockStrategy in class Dialect
    • augmentRecognizedTableTypes

      public void augmentRecognizedTableTypes(List<String> tableTypesList)
      Overrides:
      augmentRecognizedTableTypes in class Dialect
    • contributeTypes

      public void contributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)
      Description copied from class: Dialect
      A callback which allows the Dialect to contribute types.
      Overrides:
      contributeTypes in class Dialect
      Parameters:
      typeContributions - Callback to contribute the types
      serviceRegistry - The service registry
    • contributePostgreSQLTypes

      protected void contributePostgreSQLTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry)
      Allow for extension points to override this only
    • getUniqueDelegate

      public UniqueDelegate getUniqueDelegate()
      Description copied from class: Dialect
      Get the UniqueDelegate supported by this dialect
      Overrides:
      getUniqueDelegate in class Dialect
      Returns:
      The UniqueDelegate
    • canBatchTruncate

      public boolean canBatchTruncate()
      Description copied from class: Dialect
      Does the truncate table statement accept multiple tables?
      Overrides:
      canBatchTruncate in class Dialect
      Returns:
      true, but only because we can "batch" truncate
    • rowId

      public String rowId(String rowId)
      Description copied from class: Dialect
      The name of a rowid-like pseudo-column which acts as a high-performance row locator, or null if this dialect has no such pseudo-column.

      If the rowid-like value is an explicitly-declared named column instead of an implicit pseudo-column, and if the given name is nonempty, return the given name.

      Overrides:
      rowId in class Dialect
      Parameters:
      rowId - the name specified by RowId.value(), which is ignored if Dialect.getRowIdColumnString(java.lang.String) is not overridden
    • rowIdSqlType

      public int rowIdSqlType()
      Description copied from class: Dialect
      The JDBC type code of the rowid-like pseudo-column which acts as a high-performance row locator.
      Overrides:
      rowIdSqlType in class Dialect
      Returns:
      Types.ROWID by default
    • getQueryHintString

      public String getQueryHintString(String sql, String hints)
      Description copied from class: Dialect
      Apply 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:
      getQueryHintString in class Dialect
      Parameters:
      sql - The query to which to apply the hint.
      hints - The hints to apply
      Returns:
      The modified SQL
    • addSqlHintOrComment

      public String addSqlHintOrComment(String sql, QueryOptions queryOptions, boolean commentsEnabled)
      Description copied from class: Dialect
      Modify the SQL, adding hints or comments, if necessary
      Overrides:
      addSqlHintOrComment in class Dialect
    • createOptionalTableUpdateOperation

      public MutationOperation createOptionalTableUpdateOperation(EntityMutationTarget mutationTarget, OptionalTableUpdate optionalTableUpdate, SessionFactoryImplementor factory)
      Description copied from class: Dialect
      Create a MutationOperation for a updating an optional table
      Overrides:
      createOptionalTableUpdateOperation in class Dialect
    • getNativeParameterMarkerStrategy

      public ParameterMarkerStrategy getNativeParameterMarkerStrategy()
      Description copied from class: Dialect
      Support for native parameter markers.

      This is generally dependent on both the database and the driver.

      Overrides:
      getNativeParameterMarkerStrategy in class Dialect
      Returns:
      May return null to indicate that the JDBC standard strategy should be used
    • getDefaultIntervalSecondScale

      public int getDefaultIntervalSecondScale()
      Description copied from class: Dialect
      This is the default scale for a generated column of type INTERVAL SECOND mapped to a Duration.

      Usually 9 (nanoseconds) or 6 (microseconds).

      Overrides:
      getDefaultIntervalSecondScale in class Dialect
      Returns:
      the default scale, in decimal digits, of the fractional seconds field
      See Also:
    • getDmlTargetColumnQualifierSupport

      public DmlTargetColumnQualifierSupport getDmlTargetColumnQualifierSupport()
      Description copied from class: Dialect
      Get the minimum DmlTargetColumnQualifierSupport required by this dialect.
      Overrides:
      getDmlTargetColumnQualifierSupport in class Dialect
      Returns:
      the column qualifier support required by this dialect
    • supportsFromClauseInUpdate

      public boolean supportsFromClauseInUpdate()
      Description copied from class: Dialect
      Does this dialect support the from clause for update statements?
      Overrides:
      supportsFromClauseInUpdate in class Dialect
      Returns:
      true if from clause is supported