Class SequenceUpdater.BulkInsertUpdater

  • All Implemented Interfaces:
    Cacheable, BulkInsertCounter
    Enclosing class:
    SequenceUpdater

    public static final class SequenceUpdater.BulkInsertUpdater
    extends SequenceUpdater
    implements BulkInsertCounter

    Implementation of SequenceUpdater for use with the bulk-insert optimization used by InsertResultSet. This BulkInsertUpdater doesn't really write to disk. It is assumed that the BulkInsertUpdater will only be used by the bulk-insert code, where the user has exclusive write-access on the table whose identity column is backed by the original SequenceUpdater. At the end of bulk-insert, the current value of the BulkInsertUpdater is written to disk by other code.

    • Constructor Detail

      • BulkInsertUpdater

        public BulkInsertUpdater()
      • BulkInsertUpdater

        public BulkInsertUpdater​(SequenceUpdater originalUpdater,
                                 boolean restart)
    • Method Detail

      • updateCurrentValueOnDisk

        protected boolean updateCurrentValueOnDisk​(TransactionController tc,
                                                   java.lang.Long oldValue,
                                                   java.lang.Long newValue,
                                                   boolean wait)
                                            throws StandardException
        Description copied from class: SequenceUpdater

        Update the sequence value on disk. This method does its work in a subtransaction of the user's execution transaction.

        Specified by:
        updateCurrentValueOnDisk in class SequenceUpdater
        Parameters:
        tc - The transaction to use
        oldValue - Expected value on disk for this sequence
        newValue - The value to poke into the system table backing this sequence
        wait - Whether to wait for a lock
        Returns:
        Returns true if the value was successfully updated, false if we lost a race with another session.
        Throws:
        StandardException - May throw an exception if a lock can't be obtained.