Class InformixDialect

java.lang.Object
org.hibernate.dialect.Dialect
org.hibernate.dialect.InformixDialect

public class InformixDialect extends Dialect
Informix dialect.

Seems to work with Informix Dynamic Server Version 7.31.UD3, Informix JDBC driver version 2.21JC3.
  • Constructor Details

    • InformixDialect

      public InformixDialect()
      Creates new InformixDialect instance. Sets up the JDBC / Informix type mappings.
  • Method Details

    • getAddColumnString

      public 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.
    • supportsIdentityColumns

      public boolean supportsIdentityColumns()
      Description copied from class: Dialect
      Does this dialect support identity column key generation?
      Overrides:
      supportsIdentityColumns in class Dialect
      Returns:
      True if IDENTITY columns are supported; false otherwise.
    • getIdentitySelectString

      public String getIdentitySelectString(String table, String column, int type) throws MappingException
      Description copied from class: Dialect
      Get the select command to use to retrieve the last generated IDENTITY value for a particular table
      Overrides:
      getIdentitySelectString in class Dialect
      Parameters:
      table - The table into which the insert was done
      column - The PK column.
      type - The Types type code.
      Returns:
      The appropriate select command
      Throws:
      MappingException - If IDENTITY generation is not supported.
    • getIdentityColumnString

      public String getIdentityColumnString(int type) throws MappingException
      Description copied from class: Dialect
      The syntax used during DDL to define a column as being an IDENTITY of a particular type.
      Overrides:
      getIdentityColumnString in class Dialect
      Parameters:
      type - The Types type code.
      Returns:
      The appropriate DDL fragment.
      Throws:
      MappingException - If IDENTITY generation is not supported.
    • hasDataTypeInIdentityColumn

      public boolean hasDataTypeInIdentityColumn()
      Description copied from class: Dialect
      Whether this dialect have an Identity clause added to the data type or a completely separate identity data type
      Overrides:
      hasDataTypeInIdentityColumn in class Dialect
      Returns:
      boolean
    • getAddForeignKeyConstraintString

      public String getAddForeignKeyConstraintString(String constraintName, String[] foreignKey, String referencedTable, String[] primaryKey, boolean referencesPrimaryKey)
      The syntax used to add a foreign key constraint to a table. Informix constraint name must be at the end.
      Overrides:
      getAddForeignKeyConstraintString in class Dialect
      Parameters:
      constraintName - The FK constraint name.
      foreignKey - The names of the columns comprising the FK
      referencedTable - The table referenced by the FK
      primaryKey - The explicit columns in the referencedTable referenced by this FK.
      referencesPrimaryKey - if false, constraint should be explicit about which column names the constraint refers to
      Returns:
      String
    • getAddPrimaryKeyConstraintString

      public String getAddPrimaryKeyConstraintString(String constraintName)
      The syntax used to add a primary key constraint to a table. Informix constraint name must be at the end.
      Overrides:
      getAddPrimaryKeyConstraintString in class Dialect
      Parameters:
      constraintName - The name of the PK constraint.
      Returns:
      String
    • getCreateSequenceString

      public String getCreateSequenceString(String sequenceName)
      Description copied from class: Dialect
      Typically dialects which support sequences can create a sequence with a single command. This is convenience form of Dialect.getCreateSequenceStrings(java.lang.String) to help facilitate that.

      Dialects which support sequences and can create a sequence in a single command need *only* override this method. Dialects which support sequences but require multiple commands to create a sequence should instead override Dialect.getCreateSequenceStrings(java.lang.String).

      Overrides:
      getCreateSequenceString in class Dialect
      Parameters:
      sequenceName - The name of the sequence
      Returns:
      The sequence creation command
    • getDropSequenceString

      public String getDropSequenceString(String sequenceName)
      Description copied from class: Dialect
      Typically dialects which support sequences can drop a sequence with a single command. This is convenience form of Dialect.getDropSequenceStrings(java.lang.String) to help facilitate that.

      Dialects which support sequences and can drop a sequence in a single command need *only* override this method. Dialects which support sequences but require multiple commands to drop a sequence should instead override Dialect.getDropSequenceStrings(java.lang.String).

      Overrides:
      getDropSequenceString in class Dialect
      Parameters:
      sequenceName - The name of the sequence
      Returns:
      The sequence drop commands
    • getSequenceNextValString

      public String getSequenceNextValString(String sequenceName)
      Description copied from class: Dialect
      Generate the appropriate select statement to to retrieve the next value of a sequence.

      This should be a "stand alone" select statement.

      Overrides:
      getSequenceNextValString in class Dialect
      Parameters:
      sequenceName - the name of the sequence
      Returns:
      String The "nextval" select string.
    • getSelectSequenceNextValString

      public String getSelectSequenceNextValString(String sequenceName)
      Description copied from class: Dialect
      Generate the select expression fragment that will retrieve the next value of a sequence as part of another (typically DML) statement.

      This differs from Dialect.getSequenceNextValString(String) in that this should return an expression usable within another statement.

      Overrides:
      getSelectSequenceNextValString in class Dialect
      Parameters:
      sequenceName - the name of the sequence
      Returns:
      The "nextval" fragment.
    • 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.
    • supportsPooledSequences

      public boolean supportsPooledSequences()
      Description copied from class: Dialect
      Does this dialect support "pooled" sequences. Not aware of a better name for this. Essentially can we specify the initial and increment values?
      Overrides:
      supportsPooledSequences in class Dialect
      Returns:
      True if such "pooled" sequences are supported; false otherwise.
      See Also:
    • 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.
      See Also:
    • supportsLimit

      public boolean supportsLimit()
      Description copied from class: Dialect
      Does this dialect support some form of limiting query results via a SQL clause?
      Overrides:
      supportsLimit in class Dialect
      Returns:
      True if this dialect supports some form of LIMIT.
    • useMaxForLimit

      public boolean useMaxForLimit()
      Description copied from class: Dialect
      Does the LIMIT clause take a "maximum" row number instead of a total number of returned rows?

      This is easiest understood via an example. Consider you have a table with 20 rows, but you only want to retrieve rows number 11 through 20. Generally, a limit with offset would say that the offset = 11 and the limit = 10 (we only want 10 rows at a time); this is specifying the total number of returned rows. Some dialects require that we instead specify offset = 11 and limit = 20, where 20 is the "last" row we want relative to offset (i.e. total number of rows = 20 - 11 = 9)

      So essentially, is limit relative from offset? Or is limit absolute?

      Overrides:
      useMaxForLimit in class Dialect
      Returns:
      True if limit is relative from offset; false otherwise.
    • supportsLimitOffset

      public boolean supportsLimitOffset()
      Description copied from class: Dialect
      Does this dialect's LIMIT support (if any) additionally support specifying an offset?
      Overrides:
      supportsLimitOffset in class Dialect
      Returns:
      True if the dialect supports an offset within the limit support.
    • getLimitString

      public String getLimitString(String querySelect, int offset, int limit)
      Description copied from class: Dialect
      Given a limit and an offset, apply the limit clause to the query.
      Overrides:
      getLimitString in class Dialect
      Parameters:
      querySelect - The query to which to apply the limit.
      offset - The offset of the limit
      limit - The limit of the limit ;)
      Returns:
      The modified query statement with the limit applied.
    • supportsVariableLimit

      public boolean supportsVariableLimit()
      Description copied from class: Dialect
      Does this dialect support bind variables (i.e., prepared statement parameters) for its limit/offset?
      Overrides:
      supportsVariableLimit in class Dialect
      Returns:
      True if bind variables can be used; false otherwise.
    • getViolatedConstraintNameExtracter

      public ViolatedConstraintNameExtracter getViolatedConstraintNameExtracter()
      Overrides:
      getViolatedConstraintNameExtracter in class Dialect
    • supportsCurrentTimestampSelection

      public boolean supportsCurrentTimestampSelection()
      Description copied from class: Dialect
      Does this dialect support a way to retrieve the database's current timestamp value?
      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
      Should the value returned by Dialect.getCurrentTimestampSelectString() be treated as callable. Typically this indicates that JDBC escape syntax is being used...
      Overrides:
      isCurrentTimestampSelectStringCallable in class Dialect
      Returns:
      True if the Dialect.getCurrentTimestampSelectString() return is callable; false otherwise.
    • getCurrentTimestampSelectString

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