Interface SequenceSupport

All Known Implementing Classes:
ANSISequenceSupport, DB2iSequenceSupport, DB2SequenceSupport, DB2zSequenceSupport, DerbySequenceSupport, H2V1SequenceSupport, H2V2SequenceSupport, HANASequenceSupport, HSQLSequenceSupport, LegacyDB2SequenceSupport, MariaDBSequenceSupport, NextvalSequenceSupport, NoSequenceSupport, OracleSequenceSupport, PostgreSQLSequenceSupport, SQLServer16SequenceSupport, SQLServerSequenceSupport, TiDBSequenceSupport

public interface SequenceSupport
A set of operations providing support for sequences in a certain SQL dialect.
  • Method Details

    • supportsSequences

      default boolean supportsSequences()
      Does this dialect support sequences?
      Returns:
      True if sequences supported; false otherwise.
    • supportsPooledSequences

      default boolean supportsPooledSequences()
      Does this dialect support "pooled" sequences. Not aware of a better name for this. Essentially can we specify the initial and increment values?
      Returns:
      True if such "pooled" sequences are supported; false otherwise.
      See Also:
    • getSelectSequenceNextValString

      String getSelectSequenceNextValString(String sequenceName) throws MappingException
      Generate the select expression fragment that will retrieve the next value of a sequence as part of another (typically DML) statement.

      This differs from getSequenceNextValString(String) in that it must return an expression usable within another statement.

      Parameters:
      sequenceName - the name of the sequence
      Returns:
      The "next value" fragment.
      Throws:
      MappingException - If sequences are not supported.
    • getSelectSequencePreviousValString

      default String getSelectSequencePreviousValString(String sequenceName) throws MappingException
      Generate the select expression fragment that will retrieve the previous value of a sequence as part of another (typically DML) statement.

      This differs from getSequencePreviousValString(String) in that it must return an expression usable within another statement.

      Parameters:
      sequenceName - the name of the sequence
      Returns:
      The "previous value" fragment.
      Throws:
      MappingException - If sequences are not supported.
    • getSequenceNextValString

      default String getSequenceNextValString(String sequenceName) throws MappingException
      Generate the appropriate select statement to to retrieve the next value of a sequence.

      This should be a stand alone select statement.

      Parameters:
      sequenceName - the name of the sequence
      Returns:
      String The select "next value" statement.
      Throws:
      MappingException - If sequences are not supported.
    • getSequencePreviousValString

      default String getSequencePreviousValString(String sequenceName) throws MappingException
      Generate the appropriate select statement to to retrieve the previous value of a sequence.

      This should be a stand alone select statement.

      Parameters:
      sequenceName - the name of the sequence
      Returns:
      String The select "previous value" statement.
      Throws:
      MappingException - If sequences are not supported.
    • getFromDual

      default String getFromDual()
    • getSequenceNextValString

      default String getSequenceNextValString(String sequenceName, int increment) throws MappingException
      Generate the appropriate select statement to to retrieve the next value of a sequence.

      This should be a stand alone select statement.

      Parameters:
      sequenceName - the name of the sequence
      increment - the increment, in case it needs to be passed explicitly
      Returns:
      String The select "next value" statement.
      Throws:
      MappingException - If sequences are not supported.
    • getCreateSequenceStrings

      default String[] getCreateSequenceStrings(String sequenceName, int initialValue, int incrementSize) throws MappingException
      An optional multi-line form for databases which supportsPooledSequences().
      Parameters:
      sequenceName - The name of the sequence
      initialValue - The initial value to apply to 'create sequence' statement
      incrementSize - The increment value to apply to 'create sequence' statement
      Returns:
      The sequence creation commands
      Throws:
      MappingException - If sequences are not supported.
    • getCreateSequenceString

      default String getCreateSequenceString(String sequenceName) throws MappingException
      Typically dialects which support sequences can create a sequence with a single command. This method is a convenience making it easier to implement getCreateSequenceStrings(String,int,int) for these dialects.

      The default definition is to return create sequence sequenceName for the argument sequenceName. Dialects need to override this method if a sequence created in this manner does not start at 1, or if the syntax is nonstandard.

      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 override getCreateSequenceStrings(String,int,int) instead.

      Parameters:
      sequenceName - The name of the sequence
      Returns:
      The sequence creation command
      Throws:
      MappingException - If sequences are not supported.
    • getCreateSequenceString

      default String getCreateSequenceString(String sequenceName, int initialValue, int incrementSize) throws MappingException
      Typically dialects which support sequences can create a sequence with a single command. This method is a convenience making it easier to implement getCreateSequenceStrings(String,int,int) for these dialects.

      Overloaded form of getCreateSequenceString(String), additionally taking the initial value and increment size to be applied to the sequence definition.

      The default definition is to suffix getCreateSequenceString(String) with the string: start with initialValue increment by incrementSize for the arguments initialValue and incrementSize. Dialects need to override this method if different key phrases are used to apply the allocation information.
      Parameters:
      sequenceName - The name of the sequence
      initialValue - The initial value to apply to 'create sequence' statement
      incrementSize - The increment value to apply to 'create sequence' statement
      Returns:
      The sequence creation command
      Throws:
      MappingException - If sequences are not supported.
    • getDropSequenceStrings

      default String[] getDropSequenceStrings(String sequenceName) throws MappingException
      The multiline script used to drop a sequence.
      Parameters:
      sequenceName - The name of the sequence
      Returns:
      The sequence drop commands
      Throws:
      MappingException - If sequences are not supported.
    • getDropSequenceString

      default String getDropSequenceString(String sequenceName) throws MappingException
      Typically dialects which support sequences can drop a sequence with a single command. This is convenience form of 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 getDropSequenceStrings(java.lang.String).

      Parameters:
      sequenceName - The name of the sequence
      Returns:
      The sequence drop commands
      Throws:
      MappingException - If sequences are not supported.
    • sometimesNeedsStartingValue

      default boolean sometimesNeedsStartingValue()
      Do we need to explicitly specify minvalue or maxvalue when the initial value doesn't have the same sign as the increment?
    • startingValue

      default String startingValue(int initialValue, int incrementSize)