Package com.mckoi.database

## Class NaturallyJoinedTable

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

All Implemented Interfaces:
  `TableDataSource`

    public final class NaturallyJoinedTable
    extends JoinedTable

A table that is the cartesian product of two tables. This provides better memory-use and efficiency than a materialized table backed by a VirtualTable.

Author:
  Tobias Downer

### Field Summary

### 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
`NaturallyJoinedTable​(Table left, Table right)` Constructs the table.

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `getRowCount()` Returns the number of rows stored in the table.
`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, init, 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`

### Constructor Detail

#### NaturallyJoinedTable

    public NaturallyJoinedTable​(Table left,
                                Table right)

Constructs the table.

### Method Detail

#### getRowCount

    public int getRowCount()

Description copied from class: `Table`
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`