org.h2.command.dml
Class Query

java.lang.Object
  extended by org.h2.command.Prepared
      extended by org.h2.command.dml.Query
Direct Known Subclasses:
Select, SelectUnion

public abstract class Query
extends Prepared

Represents a SELECT statement (simple, or union).


Field Summary
protected  Expression limitExpr
          The limit expression as specified in the LIMIT or TOP clause.
protected  Expression offsetExpr
          The offset expression as specified in the LIMIT ..
protected  int sampleSize
          The sample size
 
Fields inherited from class org.h2.command.Prepared
create, parameters, prepareAlways, session, sqlStatement
 
Constructor Summary
Query(Session session)
           
 
Method Summary
abstract  void addGlobalCondition(Parameter param, int columnId, int comparisonType)
          Add a condition to the query.
abstract  void fireBeforeSelectTriggers()
          Call the before triggers on all tables.
abstract  int getColumnCount()
          Get the column count of this query.
abstract  double getCost()
          Calculate the cost to execute this query.
abstract  java.util.ArrayList<Expression> getExpressions()
          The the list of select expressions.
 long getMaxDataModificationId()
           
 Value[] getParameterValues()
           
abstract  java.util.HashSet<Table> getTables()
          Get all tables that are involved in this query.
abstract  void init()
          Initialize the query.
abstract  boolean isEverything(ExpressionVisitor visitor)
          Check if this expression and all sub-expressions can fulfill a criteria.
 boolean isEverything(int expressionVisitorType)
          Visit all expressions and subqueries in this query using the visitor pattern.
 boolean isQuery()
          Check if this object is a query.
 boolean isTransactional()
          Check if this command is transactional.
abstract  void mapColumns(ColumnResolver resolver, int level)
          Map the columns to the given column resolver.
 SortOrder prepareOrder(java.util.ArrayList<SelectOrderBy> orderList, int expressionCount)
          Create a SortOrder object given the list of SelectOrderBy objects.
 ResultInterface query(int maxrows)
          Execute the query.
protected abstract  LocalResult queryWithoutCache(int limit, ResultTarget target)
          Execute the query without checking the cache.
abstract  void setDistinct(boolean b)
          Set the distinct flag.
abstract  void setEvaluatable(TableFilter tableFilter, boolean b)
          Change the evaluatable flag.
abstract  void setForUpdate(boolean forUpdate)
          Set the 'for update' flag.
 void setLimit(Expression limit)
           
 void setOffset(Expression offset)
           
abstract  void setOrder(java.util.ArrayList<SelectOrderBy> order)
          Set the order by list.
 void setSampleSize(int sampleSize)
           
abstract  void updateAggregate(Session s)
          Update all aggregate function values.
 
Methods inherited from class org.h2.command.Prepared
checkCanceled, checkParameters, getCurrentObjectId, getCurrentRowNumber, getObjectId, getParameters, getPlanSQL, getSQL, getSQL, getSQL, getType, isCacheable, isReadOnly, needRecompile, prepare, queryMeta, setCommand, setCurrentRowNumber, setObjectId, setParameterList, setPrepareAlways, setRow, setSession, setSQL, toString, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

limitExpr

protected Expression limitExpr
The limit expression as specified in the LIMIT or TOP clause.


offsetExpr

protected Expression offsetExpr
The offset expression as specified in the LIMIT .. OFFSET clause.


sampleSize

protected int sampleSize
The sample size

Constructor Detail

Query

public Query(Session session)
Method Detail

queryWithoutCache

protected abstract LocalResult queryWithoutCache(int limit,
                                                 ResultTarget target)
Execute the query without checking the cache. If a target is specified, the results are written to it, and the method returns null. If no target is specified, a new LocalResult is created and returned.

Parameters:
limit - the limit as specified in the JDBC method call
target - the target to write results to
Returns:
the result

init

public abstract void init()
Initialize the query.


getExpressions

public abstract java.util.ArrayList<Expression> getExpressions()
The the list of select expressions. This may include invisible expressions such as order by expressions.

Returns:
the list of expressions

getCost

public abstract double getCost()
Calculate the cost to execute this query.

Returns:
the cost

getTables

public abstract java.util.HashSet<Table> getTables()
Get all tables that are involved in this query.

Returns:
the set of tables

setOrder

public abstract void setOrder(java.util.ArrayList<SelectOrderBy> order)
Set the order by list.

Parameters:
order - the order by list

setForUpdate

public abstract void setForUpdate(boolean forUpdate)
Set the 'for update' flag.

Parameters:
forUpdate - the new setting

getColumnCount

public abstract int getColumnCount()
Get the column count of this query.

Returns:
the column count

mapColumns

public abstract void mapColumns(ColumnResolver resolver,
                                int level)
Map the columns to the given column resolver.

Parameters:
resolver - the resolver
level - the subquery level (0 is the top level query, 1 is the first subquery level)

setEvaluatable

public abstract void setEvaluatable(TableFilter tableFilter,
                                    boolean b)
Change the evaluatable flag. This is used when building the execution plan.

Parameters:
tableFilter - the table filter
b - the new value

addGlobalCondition

public abstract void addGlobalCondition(Parameter param,
                                        int columnId,
                                        int comparisonType)
Add a condition to the query. This is used for views.

Parameters:
param - the parameter
columnId - the column index (0 meaning the first column)
comparisonType - the comparison type

setDistinct

public abstract void setDistinct(boolean b)
Set the distinct flag.

Parameters:
b - the new value

isEverything

public abstract boolean isEverything(ExpressionVisitor visitor)
Check if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.

Parameters:
visitor - the visitor
Returns:
if the criteria can be fulfilled

updateAggregate

public abstract void updateAggregate(Session s)
Update all aggregate function values.

Parameters:
s - the session

fireBeforeSelectTriggers

public abstract void fireBeforeSelectTriggers()
Call the before triggers on all tables.


isQuery

public boolean isQuery()
Description copied from class: Prepared
Check if this object is a query.

Overrides:
isQuery in class Prepared
Returns:
true if it is

isTransactional

public boolean isTransactional()
Description copied from class: Prepared
Check if this command is transactional. If it is not, then it forces the current transaction to commit.

Specified by:
isTransactional in class Prepared
Returns:
true if it is

getParameterValues

public final Value[] getParameterValues()

query

public ResultInterface query(int maxrows)
Description copied from class: Prepared
Execute the query.

Overrides:
query in class Prepared
Parameters:
maxrows - the maximum number of rows to return
Returns:
the result set

prepareOrder

public SortOrder prepareOrder(java.util.ArrayList<SelectOrderBy> orderList,
                              int expressionCount)
Create a SortOrder object given the list of SelectOrderBy objects. The expression list is extended if necessary.

Parameters:
orderList - a list of SelectOrderBy elements
expressionCount - the number of columns in the query
Returns:
the SortOrder object

setOffset

public void setOffset(Expression offset)

setLimit

public void setLimit(Expression limit)

setSampleSize

public void setSampleSize(int sampleSize)

getMaxDataModificationId

public final long getMaxDataModificationId()

isEverything

public final boolean isEverything(int expressionVisitorType)
Visit all expressions and subqueries in this query using the visitor pattern.

Parameters:
expressionVisitorType - the visitor type
Returns:
true if no component returned false