Package com.mckoi.database.interpret

## Class Select

- java.lang.Object
- - com.mckoi.database.interpret.Statement
  - - com.mckoi.database.interpret.Select

    public class Select
    extends Statement

Logic for interpreting an SQL SELECT statement.

Author:
  Tobias Downer

### Field Summary

### Fields inherited from class com.mckoi.database.interpret.Statement

`cmd, database, query, table_list, user`

### Constructor Summary

Constructors
`Select()`

### Method Summary

All Methods Instance Methods Concrete Methods
`Table` `evaluate()` Evaluates the select statement with the given Database context.
`void` `prepare()` Prepares the select statement with a Database object.
`java.lang.String` `toString()` Outputs information for debugging.

### Methods inherited from class com.mckoi.database.interpret.Statement

`addTable, Debug, init, resolveTree, resolveVariableName`

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

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

### Constructor Detail

#### Select

    public Select()

### Method Detail

#### prepare

    public void prepare()
                 throws DatabaseException

Prepares the select statement with a Database object. This sets up internal state so that it correctly maps to a database. Also, this checks format to ensure there are no run-time syntax problems. This must be called because we 'evaluate' the statement.

NOTE: Care must be taken to ensure that all methods called here are safe in as far as modifications to the data occuring. The rules for safety should be as follows. If the database is in EXCLUSIVE mode, then we need to wait until it's switched back to SHARED mode before this method is called. All collection of information done here should not involve any table state info. except for column count, column names, column types, etc. Queries such as obtaining the row count, selectable scheme information, and certainly 'getCellContents' must never be called during prepare. When prepare finishes, the affected tables are locked and the query ia safe to 'evaluate' at which time table state is safe to inspect.

Specified by:
  `prepare` in class `Statement`
Throws:
  `DatabaseException`

#### evaluate

    public Table evaluate()
                   throws DatabaseException

Evaluates the select statement with the given Database context.

Specified by:
  `evaluate` in class `Statement`
Throws:
  `DatabaseException`

#### toString

    public java.lang.String toString()

Outputs information for debugging.

Overrides:
  `toString` in class `java.lang.Object`