Class TeradataDialect

    • Constructor Detail

      • TeradataDialect

        public TeradataDialect()
        Constructor
    • Method Detail

      • getForUpdateString

        public java.lang.String getForUpdateString()
        Does this dialect support the FOR UPDATE syntax?
        Overrides:
        getForUpdateString in class Dialect
        Returns:
        empty string ... Teradata does not support FOR UPDATE syntax
      • supportsSequences

        public boolean supportsSequences()
        Description copied from class: Dialect
        Does this dialect support sequences?
        Overrides:
        supportsSequences in class Dialect
        Returns:
        True if sequences supported; false otherwise.
      • getAddColumnString

        public java.lang.String getAddColumnString()
        Description copied from class: Dialect
        The syntax used to add a column to a table (optional).
        Overrides:
        getAddColumnString in class Dialect
        Returns:
        The "add column" fragment.
      • getTypeName

        public java.lang.String getTypeName​(int code,
                                            int length,
                                            int precision,
                                            int scale)
                                     throws HibernateException
        Get the name of the database type associated with the given java.sql.Types typecode.
        Parameters:
        code - java.sql.Types typecode
        length - the length or precision of the column
        precision - the precision of the column
        scale - the scale of the column
        Returns:
        the database type name
        Throws:
        HibernateException
      • supportsCascadeDelete

        public boolean supportsCascadeDelete()
        Description copied from class: Dialect
        Does this dialect support cascaded delete on foreign key definitions?
        Overrides:
        supportsCascadeDelete in class Dialect
        Returns:
        true indicates that the dialect does support cascaded delete on foreign keys.
      • supportsCircularCascadeDeleteConstraints

        public boolean supportsCircularCascadeDeleteConstraints()
        Description copied from class: Dialect
        Does this dialect support definition of cascade delete constraints which can cause circular chains?
        Overrides:
        supportsCircularCascadeDeleteConstraints in class Dialect
        Returns:
        True if circular cascade delete constraints are supported; false otherwise.
      • areStringComparisonsCaseInsensitive

        public boolean areStringComparisonsCaseInsensitive()
        Description copied from class: Dialect
        Are string comparisons implicitly case insensitive.

        In other words, does [where 'XYZ' = 'xyz'] resolve to true?

        Overrides:
        areStringComparisonsCaseInsensitive in class Dialect
        Returns:
        True if comparisons are case insensitive.
      • supportsEmptyInList

        public boolean supportsEmptyInList()
        Description copied from class: Dialect
        Does this dialect support empty IN lists?

        For example, is [where XYZ in ()] a supported construct?

        Overrides:
        supportsEmptyInList in class Dialect
        Returns:
        True if empty in lists are supported; false otherwise.
      • getSelectClauseNullString

        public java.lang.String getSelectClauseNullString​(int sqlType)
        Description copied from class: Dialect
        Given a Types type code, determine an appropriate null value to use in a select clause.

        One thing to consider here is that certain databases might require proper casting for the nulls here since the select here will be part of a UNION/UNION ALL.

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

        public java.lang.String getCreateMultisetTableString()
        Description copied from class: Dialect
        Slight variation on Dialect.getCreateTableString(). Here, we have the command used to create a table when there is no primary key and duplicate rows are expected.

        Most databases do not care about the distinction; originally added for Teradata support which does care.

        Overrides:
        getCreateMultisetTableString in class Dialect
        Returns:
        The command used to create a multiset table.
      • supportsLobValueChangePropogation

        public boolean supportsLobValueChangePropogation()
        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...

        For BLOBs, the internal value might be changed by: Blob.setBinaryStream(long), Blob.setBytes(long, byte[]), Blob.setBytes(long, byte[], int, int), or Blob.truncate(long).

        For CLOBs, the internal value might be changed by: Clob.setAsciiStream(long), Clob.setCharacterStream(long), Clob.setString(long, String), Clob.setString(long, String, int, int), or Clob.truncate(long).

        NOTE : I do not know the correct answer currently for databases which (1) are not part of the cruise control process or (2) do not Dialect.supportsExpectedLobUsagePattern().

        Overrides:
        supportsLobValueChangePropogation in class Dialect
        Returns:
        True if the changes are propagated back to the database; false otherwise.
      • doesReadCommittedCauseWritersToBlockReaders

        public boolean doesReadCommittedCauseWritersToBlockReaders()
        Description copied from class: Dialect
        For the underlying database, is READ_COMMITTED isolation implemented by forcing readers to wait for write locks to be released?
        Overrides:
        doesReadCommittedCauseWritersToBlockReaders in class Dialect
        Returns:
        True if writers block readers to achieve READ_COMMITTED; false otherwise.
      • doesRepeatableReadCauseReadersToBlockWriters

        public boolean doesRepeatableReadCauseReadersToBlockWriters()
        Description copied from class: Dialect
        For the underlying database, is REPEATABLE_READ isolation implemented by forcing writers to wait for read locks to be released?
        Overrides:
        doesRepeatableReadCauseReadersToBlockWriters in class Dialect
        Returns:
        True if readers block writers to achieve REPEATABLE_READ; false otherwise.
      • supportsBindAsCallableArgument

        public boolean supportsBindAsCallableArgument()
        Description copied from class: Dialect
        Does this dialect support using a JDBC bind parameter as an argument to a function or procedure call?
        Overrides:
        supportsBindAsCallableArgument in class Dialect
        Returns:
        Returns true if the database supports accepting bind params as args, false otherwise. The default is true.
      • getInExpressionCountLimit

        public int getInExpressionCountLimit()
        Description copied from class: Dialect
        Return the limit that the underlying database places on the number of elements in an IN predicate. If the database defines no such limits, simply return zero or less-than-zero.
        Overrides:
        getInExpressionCountLimit in class Dialect
        Returns:
        int The limit, or zero-or-less to indicate no limit.