Class VirtualTable

  • All Implemented Interfaces:
    TableDataSource
    Direct Known Subclasses:
    OuterTable

    public class VirtualTable
    extends JoinedTable
    A VirtualTable is a representation of a table whose rows are actually physically stored in another table. In other words, this table just stores pointers to rows in other tables.

    We use the VirtualTable to represent temporary tables created from select, join, etc operations.

    An important note about VirtualTables: When we perform a 'select' operation on a virtual table, unlike a DataTable that permanently stores information about column cell relations, we must resolve column relations between the sub-set at select time. This involves asking the tables parent(s) for a scheme to describe relations in a sub-set.

    • Field Detail

      • row_list

        protected IntegerVector[] row_list
        Array of IntegerVectors that represent the rows taken from the given parents.
      • row_count

        private int row_count
        The number of rows in the table.
    • Constructor Detail

      • VirtualTable

        VirtualTable​(Table[] tables)
        The Constructor. It is constructed with a list of tables that this virtual table is a sub-set or join of.
      • VirtualTable

        VirtualTable​(Table table)
      • VirtualTable

        protected VirtualTable()
    • Method Detail

      • init

        protected void init​(Table[] tables)
        Helper function for the constructor.
        Overrides:
        init in class JoinedTable
      • getReferenceRows

        protected IntegerVector[] getReferenceRows()
        Returns the list of IntegerVector that represents the rows that this VirtualTable references.
      • set

        void set​(Table table,
                 IntegerVector rows)
        Sets the rows in this table. We should search for the 'table' in the 'reference_list' however we don't for efficiency.
      • set

        void set​(Table[] tables,
                 IntegerVector[] rows)
        This is used in a join to set a list or joined rows and tables. The 'tables' array should be an exact mirror of the 'reference_list'. The IntegerVector[] array contains the rows to add for each respective table. The given IntegerVector objects should have identical lengths.
      • set

        void set​(Table table,
                 BlockIntegerList rows)
        Sets the rows in this table as above, but uses a BlockIntegerList as an argument instead.
      • set

        void set​(Table[] tables,
                 BlockIntegerList[] rows)
        Sets the rows in this table as above, but uses a BlockIntegerList array as an argument instead.
      • resolveRowForTableAt

        protected int resolveRowForTableAt​(int row_number,
                                           int table_num)
        Description copied from class: JoinedTable
        Given a row and a table index (to a parent reference table), this will return the row index in the given parent table for the given row.
        Specified by:
        resolveRowForTableAt in class JoinedTable
      • resolveAllRowsForTableAt

        protected void resolveAllRowsForTableAt​(IntegerVector row_set,
                                                int table_num)
        Description copied from class: JoinedTable
        Given an IntegerVector that represents a list of pointers to rows in this table, this resolves the rows to row indexes in the given parent table. This method changes the 'row_set' IntegerVector object.
        Specified by:
        resolveAllRowsForTableAt in class JoinedTable