Package com.mckoi.database

## Class VirtualTable

- java.lang.Object
- - com.mckoi.database.Table
  - - com.mckoi.database.JoinedTable
    - - com.mckoi.database.VirtualTable

All Implemented Interfaces:
  `TableDataSource`

    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.

Author:
  Tobias Downer

### Field Summary

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

### Fields inherited from class com.mckoi.database.JoinedTable

`column_filter, column_scheme, column_table, reference_list`

### Fields inherited from class com.mckoi.database.Table

`DEBUG_QUERY`

### Constructor Summary

Constructors
`protected` `VirtualTable()`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected IntegerVector[]` `getReferenceRows()` Returns the list of IntegerVector that represents the rows that this VirtualTable references.
`int` `getRowCount()` Returns the number of rows stored in the table.
`protected void` `init​(Table[] tables)` Helper function for the constructor.
`protected void` `resolveAllRowsForTableAt​(IntegerVector row_set, int table_num)` 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.
`protected int` `resolveRowForTableAt​(int row_number, int table_num)` 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.

### Methods inherited from class com.mckoi.database.JoinedTable

`findFieldName, getCellContents, getColumnCount, getDatabase, getDataTableDef, getReferenceTables, getResolvedVariable, hasRootsLocked, lockRoot, printGraph, rowEnumeration, unlockRoot`

### Methods inherited from class com.mckoi.database.Table

`all, allColumnMatchesValue, any, columnContainsCell, columnContainsValue, columnMatchesValue, columnMerge, compareCells, Debug, distinct, distinct, dumpTo, emptySelect, exhaustiveSelect, fastFindFieldName, getColumnDefAt, getColumnScheme, getFirstCellContent, getFirstCellContent, getLastCellContent, getLastCellContent, getSingleCellContent, getSingleCellContent, getSystem, getTableAccessState, getTTypeForColumn, getTTypeForColumn, join, orderByColumn, orderByColumn, orderByColumn, orderByColumns, orderedRowList, outside, rangeSelect, selectAll, selectAll, selectFirst, selectLast, selectRange, selectRest, simpleJoin, simpleSelect, singleRowSelect, toMap, toString, union`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### row_list

    protected IntegerVector[] row_list

Array of IntegerVectors that represent the rows taken from the given parents.

### Constructor Detail

#### 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.

#### getRowCount

    public int getRowCount()

Returns the number of rows stored in the table.

Specified by:
  `getRowCount` in interface `TableDataSource`
Specified by:
  `getRowCount` in class `Table`

#### 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`