org.d2rq.db.op
Interface DatabaseOp

All Known Implementing Classes:
AliasOp, AssertUniqueKeyOp, DatabaseOp.Wrapper, DistinctOp, EmptyOp, InnerJoinOp, LimitOp, NamedOp, OrderOp, ProjectOp, SelectOp, SQLOp, TableOp

public interface DatabaseOp

An operator or operand in a relational algebra expression over SQL-style tables.

Author:
Richard Cyganiak (richard@cyganiak.de)

Nested Class Summary
static class DatabaseOp.Wrapper
           
 
Field Summary
static DatabaseOp TRUE
          A table with one row and no columns.
 
Method Summary
 void accept(OpVisitor visitor)
           
 List<ColumnName> getColumns()
           
 DataType getColumnType(ColumnName column)
           
 TableName getTableName()
           
 Collection<Key> getUniqueKeys()
           
 boolean hasColumn(ColumnName column)
           
 boolean isNullable(ColumnName column)
           
 

Field Detail

TRUE

static final DatabaseOp TRUE
A table with one row and no columns. Like Oracle's DUAL table. The identity element of the relational cross product operation. In many databases, this table can be accessed by simply omitting the FROM clause in a SELECT statement.

Method Detail

getTableName

TableName getTableName()
Returns:
Name in [[CATALOG.]SCHEMA.]TABLE notation, possibly null

hasColumn

boolean hasColumn(ColumnName column)
Parameters:
column - A qualified or unqualified column name
Returns:
false for ambiguous unqualified names

getColumns

List<ColumnName> getColumns()
Returns:
Fully qualified column names if possible, no duplicates

isNullable

boolean isNullable(ColumnName column)

getColumnType

DataType getColumnType(ColumnName column)

getUniqueKeys

Collection<Key> getUniqueKeys()

accept

void accept(OpVisitor visitor)