Class InformixDialect

  • All Implemented Interfaces:
    ConversionContext
    Direct Known Subclasses:
    Informix10Dialect

    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 Detail

      • InformixDialect

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

      • 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.
      • getAddForeignKeyConstraintString

        public java.lang.String getAddForeignKeyConstraintString​(java.lang.String constraintName,
                                                                 java.lang.String[] foreignKey,
                                                                 java.lang.String referencedTable,
                                                                 java.lang.String[] primaryKey,
                                                                 boolean referencesPrimaryKey)
        Informix constraint name must be at the end.

        The syntax used to add a foreign key constraint to a table.

        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:
        the "add FK" fragment
      • getAddForeignKeyConstraintString

        public java.lang.String getAddForeignKeyConstraintString​(java.lang.String constraintName,
                                                                 java.lang.String foreignKeyDefinition)
        Overrides:
        getAddForeignKeyConstraintString in class Dialect
      • getAddPrimaryKeyConstraintString

        public java.lang.String getAddPrimaryKeyConstraintString​(java.lang.String constraintName)
        Informix constraint name must be at the end.

        The syntax used to add a primary key constraint to a table.

        Overrides:
        getAddPrimaryKeyConstraintString in class Dialect
        Parameters:
        constraintName - The name of the PK constraint.
        Returns:
        The "add PK" fragment
      • getCreateSequenceString

        public java.lang.String getCreateSequenceString​(java.lang.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 java.lang.String getDropSequenceString​(java.lang.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 java.lang.String getSequenceNextValString​(java.lang.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 java.lang.String getSelectSequenceNextValString​(java.lang.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.
      • getQuerySequencesString

        public java.lang.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:
        SchemaUpdate
      • getLimitHandler

        public LimitHandler getLimitHandler()
        Description copied from class: Dialect
        Returns the delegate managing LIMIT clause.
        Overrides:
        getLimitHandler in class Dialect
        Returns:
        LIMIT clause delegate.
      • 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 java.lang.String getLimitString​(java.lang.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.
      • 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.
      • getCurrentTimestampSelectString

        public java.lang.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.
      • getUniqueDelegate

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

        public java.lang.String toBooleanValueString​(boolean bool)
        Description copied from class: Dialect
        The SQL literal value to which this database maps boolean values.
        Overrides:
        toBooleanValueString in class Dialect
        Parameters:
        bool - The boolean value
        Returns:
        The appropriate SQL literal.