Class MVTable

  • All Implemented Interfaces:
    HasSQL

    public class MVTable
    extends TableBase
    A table stored in a MVStore.
    • Field Detail

      • WAITING_FOR_LOCK

        public static final DebuggingThreadLocal<java.lang.String> WAITING_FOR_LOCK
        The table name this thread is waiting to lock.
      • EXCLUSIVE_LOCKS

        public static final DebuggingThreadLocal<java.util.ArrayList<java.lang.String>> EXCLUSIVE_LOCKS
        The table names this thread has exclusively locked.
      • SHARED_LOCKS

        public static final DebuggingThreadLocal<java.util.ArrayList<java.lang.String>> SHARED_LOCKS
        The table names this thread has a shared lock on.
    • Method Detail

      • getMapName

        public java.lang.String getMapName()
      • lock

        public boolean lock​(SessionLocal session,
                            int lockType)
        Description copied from class: Table
        Lock the table for the given session. This method waits until the lock is granted.
        Overrides:
        lock in class Table
        Parameters:
        session - the session
        lockType - the type of lock
        Returns:
        true if the table was already exclusively locked by this session.
      • unlock

        public void unlock​(SessionLocal s)
        Description copied from class: Table
        Release the lock for this session.
        Overrides:
        unlock in class Table
        Parameters:
        s - the session
      • close

        public void close​(SessionLocal session)
        Description copied from class: Table
        Close the table object and flush changes.
        Specified by:
        close in class Table
        Parameters:
        session - the session
      • getRow

        public Row getRow​(SessionLocal session,
                          long key)
        Description copied from class: Table
        Get the given row.
        Overrides:
        getRow in class Table
        Parameters:
        session - the session
        key - the primary key
        Returns:
        the row
      • addIndex

        public Index addIndex​(SessionLocal session,
                              java.lang.String indexName,
                              int indexId,
                              IndexColumn[] cols,
                              int uniqueColumnCount,
                              IndexType indexType,
                              boolean create,
                              java.lang.String indexComment)
        Description copied from class: Table
        Create an index for this table
        Specified by:
        addIndex in class Table
        Parameters:
        session - the session
        indexName - the name of the index
        indexId - the id
        cols - the index columns
        uniqueColumnCount - the count of unique columns
        indexType - the index type
        create - whether this is a new index
        indexComment - the comment
        Returns:
        the index
      • removeRow

        public void removeRow​(SessionLocal session,
                              Row row)
        Description copied from class: Table
        Remove a row from the table and all indexes.
        Specified by:
        removeRow in class Table
        Parameters:
        session - the session
        row - the row
      • truncate

        public long truncate​(SessionLocal session)
        Description copied from class: Table
        Remove all rows from the table and indexes.
        Specified by:
        truncate in class Table
        Parameters:
        session - the session
        Returns:
        number of removed rows, possibly including uncommitted rows
      • addRow

        public void addRow​(SessionLocal session,
                           Row row)
        Description copied from class: Table
        Add a row to the table and all indexes.
        Specified by:
        addRow in class Table
        Parameters:
        session - the session
        row - the row
      • updateRow

        public void updateRow​(SessionLocal session,
                              Row oldRow,
                              Row newRow)
        Description copied from class: Table
        Update a row to the table and all indexes.
        Overrides:
        updateRow in class Table
        Parameters:
        session - the session
        oldRow - the row to update
        newRow - the row with updated values (_rowid_ suppose to be the same)
      • lockRow

        public Row lockRow​(SessionLocal session,
                           Row row,
                           int timeoutMillis)
        Description copied from class: Table
        Locks row, preventing any updated to it, except from the session specified.
        Overrides:
        lockRow in class Table
        Parameters:
        session - the session
        row - to lock
        timeoutMillis - timeout in milliseconds, -1 for default, -2 to skip locking if row is already locked by another session
        Returns:
        locked row, or null if row does not exist anymore or if it was skipped
      • getScanIndex

        public Index getScanIndex​(SessionLocal session)
        Description copied from class: Table
        Get the scan index to iterate through all rows.
        Specified by:
        getScanIndex in class Table
        Parameters:
        session - the session
        Returns:
        the index
      • getIndexes

        public java.util.List<Index> getIndexes()
        Description copied from class: Table
        Get all indexes for this table.
        Specified by:
        getIndexes in class Table
        Returns:
        the list of indexes
      • getMaxDataModificationId

        public long getMaxDataModificationId()
        Description copied from class: Table
        Get the last data modification id.
        Specified by:
        getMaxDataModificationId in class Table
        Returns:
        the modification id
      • removeChildrenAndResources

        public void removeChildrenAndResources​(SessionLocal session)
        Description copied from class: DbObject
        Delete all dependent children objects and resources of this object.
        Overrides:
        removeChildrenAndResources in class Table
        Parameters:
        session - the session
      • getRowCount

        public long getRowCount​(SessionLocal session)
        Description copied from class: Table
        Get the row count for this table.
        Specified by:
        getRowCount in class Table
        Parameters:
        session - the session
        Returns:
        the row count
      • getRowCountApproximation

        public long getRowCountApproximation​(SessionLocal session)
        Description copied from class: Table
        Get the approximated row count for this table.
        Specified by:
        getRowCountApproximation in class Table
        Parameters:
        session - the session
        Returns:
        the approximated row count
      • getDiskSpaceUsed

        public long getDiskSpaceUsed​(boolean total,
                                     boolean approximate)
        Overrides:
        getDiskSpaceUsed in class Table
      • isRowLockable

        public boolean isRowLockable()
        Description copied from class: Table
        Views, function tables, links, etc. do not support locks
        Overrides:
        isRowLockable in class Table
        Returns:
        true if table supports row-level locks
      • setModificationDataId

        public void setModificationDataId​(long nextModificationDataId)
      • updateRows

        public void updateRows​(SessionLocal session,
                               LocalResult rows,
                               java.lang.Runnable cancellationCheck)
        Description copied from class: Table
        Update a list of rows in this table.
        Overrides:
        updateRows in class Table
        Parameters:
        session - the session
        rows - a list of row pairs of the form old row, new row, old row, new row,...
        cancellationCheck - action executed periodically to check cancellation
      • canDrop

        public boolean canDrop()
        Description copied from class: Table
        Check if this table can be dropped.
        Specified by:
        canDrop in class Table
        Returns:
        true if it can
      • canGetRowCount

        public boolean canGetRowCount​(SessionLocal session)
        Description copied from class: Table
        Check if the row count can be retrieved quickly.
        Specified by:
        canGetRowCount in class Table
        Parameters:
        session - the session
        Returns:
        true if it can
      • canTruncate

        public boolean canTruncate()
        Description copied from class: Table
        Check if this table can be truncated.
        Overrides:
        canTruncate in class Table
        Returns:
        true if it can
      • checkDeadlock

        public java.util.ArrayList<SessionLocal> checkDeadlock​(SessionLocal session,
                                                               SessionLocal clash,
                                                               java.util.Set<SessionLocal> visited)
        Description copied from class: Table
        Check if a deadlock occurred. This method is called recursively. There is a circle if the session to be tested has already being visited. If this session is part of the circle (if it is the clash session), the method must return an empty object array. Once a deadlock has been detected, the methods must add the session to the list. If this session is not part of the circle, or if no deadlock is detected, this method returns null.
        Overrides:
        checkDeadlock in class Table
        Parameters:
        session - the session to be tested for
        clash - set with sessions already visited, and null when starting verification
        visited - set with sessions already visited, and null when starting verification
        Returns:
        an object array with the sessions involved in the deadlock, or null
      • checkSupportAlter

        public void checkSupportAlter()
        Description copied from class: Table
        Check if this table supports ALTER TABLE.
        Specified by:
        checkSupportAlter in class Table
      • getContainsLargeObject

        public boolean getContainsLargeObject()
      • getRowIdColumn

        public Column getRowIdColumn()
        Description copied from class: Table
        Get the row id column if this table has one.
        Overrides:
        getRowIdColumn in class Table
        Returns:
        the row id column, or null
      • getTableType

        public TableType getTableType()
        Description copied from class: Table
        Get the table type name
        Specified by:
        getTableType in class Table
        Returns:
        the table type name
      • isDeterministic

        public boolean isDeterministic()
        Description copied from class: Table
        Check if the table is deterministic.
        Specified by:
        isDeterministic in class Table
        Returns:
        true if it is
      • isLockedExclusively

        public boolean isLockedExclusively()
        Description copied from class: Table
        Check if this table is locked exclusively.
        Overrides:
        isLockedExclusively in class Table
        Returns:
        true if it is.
      • isLockedExclusivelyBy

        public boolean isLockedExclusivelyBy​(SessionLocal session)
        Description copied from class: Table
        Check if the table is exclusively locked by this session.
        Overrides:
        isLockedExclusivelyBy in class Table
        Parameters:
        session - the session
        Returns:
        true if it is
      • invalidate

        protected void invalidate()
        Description copied from class: DbObject
        Set the main attributes to null to make sure the object is no longer used.
        Overrides:
        invalidate in class DbObject
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class DbObject