Top Description Fields Constructors Methods
org.h2.expression

public final Class ExpressionColumn

extends Expression
Class Inheritance
Imports
org.h2.api.ErrorCode, org.h2.command.query.Select, .SelectGroups, .SelectListColumnResolver, org.h2.engine.Database, .SessionLocal, org.h2.expression.analysis.DataAnalysisOperation, org.h2.expression.condition.Comparison, org.h2.index.IndexCondition, org.h2.message.DbException, org.h2.mode.ModeFunction, org.h2.schema.Constant, .Schema, org.h2.table.Column, .ColumnResolver, .Table, .TableFilter, org.h2.util.ParserUtil, .StringUtils, org.h2.value.TypeInfo, .Value, .ValueBigint, .ValueBoolean, .ValueDecfloat, .ValueDouble, .ValueInteger, .ValueNumeric, .ValueReal, .ValueSmallint, .ValueTinyint

A column reference expression that represents a column of a table or view.

Field Summary

Modifier and TypeField and Description
private Column
private final String
private ColumnResolver
private final Database
private int
private final boolean
private final boolean
private final String
private final String
Inherited from org.h2.expression.Expression:
AUTO_PARENTHESESMAP_IN_AGGREGATEMAP_IN_WINDOWMAP_INITIALWITH_PARENTHESESWITHOUT_PARENTHESES

Constructor Summary

AccessConstructor and Description
public
ExpressionColumn(Database
the database
database
,
Column
the column
column
)

Creates a new column reference for metadata of queries; should not be used as normal expression.

public
ExpressionColumn(Database
the database
database
,
String
the schema name, or null
schemaName
,
String
the table alias name, table name, or null
tableAlias
,
String
the column name
columnName
)

Creates a new instance of column reference for regular columns as normal expression.

public
ExpressionColumn(Database
the database
database
,
String
the schema name, or null
schemaName
,
String
the table alias name, table name, or null
tableAlias
,
String
the column name
columnName
,
boolean
whether name was quoted
quotedName
)

Creates a new instance of column reference for regular columns as normal expression.

public
ExpressionColumn(Database
the database
database
,
String
the schema name, or null
schemaName
,
String
the table alias name, table name, or null
tableAlias
)

Creates a new instance of column reference for _ROWID_ column as normal expression.

Method Summary

Modifier and TypeMethod and Description
public void
createIndexConditions(SessionLocal
the session
session
,
TableFilter
the table filter
filter
)

Overrides org.h2.expression.Expression.createIndexConditions.

Create index conditions if possible and attach them to the table filter.

public String
getAlias(SessionLocal
the session
session
,
int
0-based column index
columnIndex
)

Overrides org.h2.expression.Expression.getAlias.

Get the alias name of a column or SQL expression if it is not an aliased expression.

public Column
public DbException

Returns:

DbException
getColumnException
(int
SQL error code
code
)

Get exception to throw, with column and table info added

public String
getColumnName(SessionLocal
the session
session
,
int
0-based column index
columnIndex
)

Overrides org.h2.expression.Expression.getColumnName.

Get the column name or alias name of this expression.

public String
getColumnNameForView(SessionLocal
the session
session
,
int
0-based column index
columnIndex
)

Overrides org.h2.expression.Expression.getColumnNameForView.

Get the column name of this expression for a view.

public int
getCost()

Implements abstract org.h2.expression.Expression.getCost.

Estimate the cost to process the expression.

public Expression
getNotIfPossible(SessionLocal
the session
session
)

Overrides org.h2.expression.Expression.getNotIfPossible.

If it is possible, return the negated expression.

public int
getNullable()

Overrides org.h2.expression.Expression.getNullable.

Check whether this expression is a column and can store NULL.

public String
public String
public String
getSchemaName()

Overrides org.h2.expression.Expression.getSchemaName.

Get the schema name, or null

public TableFilter
public String
getTableName()

Overrides org.h2.expression.Expression.getTableName.

Get the table name, or null

public TypeInfo
getType()

Implements abstract org.h2.expression.Expression.getType.

Implements org.h2.value.Typed.getType.

Returns the data type.

public StringBuilder
getUnenclosedSQL(StringBuilder
string builder
builder
,
int
formatting flags
sqlFlags
)

Implements abstract org.h2.expression.Expression.getUnenclosedSQL.

Get the SQL statement of this expression.

public Value
getValue(SessionLocal
the session
session
)

Implements abstract org.h2.expression.Expression.getValue.

Return the resulting value for the current row.

public boolean
isEverything(ExpressionVisitor
the visitor
visitor
)

Implements abstract org.h2.expression.Expression.isEverything.

Check if this expression and all sub-expressions can fulfill a criteria.

public boolean
isIdentity()

Overrides org.h2.expression.Expression.isIdentity.

Check if this is an identity column.

private void
mapColumn(ColumnResolver resolver, Column col, int level)

public void
mapColumns(ColumnResolver
the column resolver
resolver
,
int
the subquery nesting level
level
,
int
current state for nesting checks, initial value is MAP_INITIAL
state
)

Implements abstract org.h2.expression.Expression.mapColumns.

Map the columns of the resolver to expression columns.

public Expression
optimize(SessionLocal
the session
session
)

Implements abstract org.h2.expression.Expression.optimize.

Try to optimize the expression.

private Expression
public void
setEvaluatable(TableFilter
the table filter
tableFilter
,
boolean
true if the table filter can return value
b
)

Implements abstract org.h2.expression.Expression.setEvaluatable.

Tell the expression columns whether the table filter can return values now.

public void
updateAggregate(SessionLocal
the session
session
,
int
select stage
stage
)

Implements abstract org.h2.expression.Expression.updateAggregate.

Update an aggregate value.

Inherited from org.h2.expression.Expression:
addFilterConditionsgetBooleanValuegetEnclosedSQLgetNonAliasExpressiongetSQLgetSQLgetSQLgetSQLgetSubexpressiongetSubexpressionCountgetTableAliasgetTypeIfStaticallyKnowngetWhenSQLgetWhenValueisConstantisNullConstantisValueSetisWhenConditionOperandneedParenthesesoptimizeConditiontoStringwriteExpressionswriteExpressions

Field Detail

columnback to summary
private Column column
columnNameback to summary
private final String columnName
columnResolverback to summary
private ColumnResolver columnResolver
databaseback to summary
private final Database database
queryLevelback to summary
private int queryLevel
quotedNameback to summary
private final boolean quotedName
rowIdback to summary
private final boolean rowId
schemaNameback to summary
private final String schemaName
tableAliasback to summary
private final String tableAlias

Constructor Detail

ExpressionColumnback to summary
public ExpressionColumn(Database database, Column column)

Creates a new column reference for metadata of queries; should not be used as normal expression.

Parameters
database:Database

the database

column:Column

the column

ExpressionColumnback to summary
public ExpressionColumn(Database database, String schemaName, String tableAlias, String columnName)

Creates a new instance of column reference for regular columns as normal expression.

Parameters
database:Database

the database

schemaName:String

the schema name, or null

tableAlias:String

the table alias name, table name, or null

columnName:String

the column name

ExpressionColumnback to summary
public ExpressionColumn(Database database, String schemaName, String tableAlias, String columnName, boolean quotedName)

Creates a new instance of column reference for regular columns as normal expression.

Parameters
database:Database

the database

schemaName:String

the schema name, or null

tableAlias:String

the table alias name, table name, or null

columnName:String

the column name

quotedName:boolean

whether name was quoted

ExpressionColumnback to summary
public ExpressionColumn(Database database, String schemaName, String tableAlias)

Creates a new instance of column reference for _ROWID_ column as normal expression.

Parameters
database:Database

the database

schemaName:String

the schema name, or null

tableAlias:String

the table alias name, table name, or null

Method Detail

createIndexConditionsback to summary
public void createIndexConditions(SessionLocal session, TableFilter filter)

Overrides org.h2.expression.Expression.createIndexConditions.

Doc from org.h2.expression.Expression.createIndexConditions.

Create index conditions if possible and attach them to the table filter.

Parameters
session:SessionLocal

the session

filter:TableFilter

the table filter

Annotations
@Override
getAliasback to summary
public String getAlias(SessionLocal session, int columnIndex)

Overrides org.h2.expression.Expression.getAlias.

Doc from org.h2.expression.Expression.getAlias.

Get the alias name of a column or SQL expression if it is not an aliased expression.

Parameters
session:SessionLocal

the session

columnIndex:int

0-based column index

Returns:String

the alias name

Annotations
@Override
getColumnback to summary
public Column getColumn()
getColumnExceptionback to summary
public DbException getColumnException(int code)

Get exception to throw, with column and table info added

Parameters
code:int

SQL error code

Returns:DbException

DbException

getColumnNameback to summary
public String getColumnName(SessionLocal session, int columnIndex)

Overrides org.h2.expression.Expression.getColumnName.

Doc from org.h2.expression.Expression.getColumnName.

Get the column name or alias name of this expression.

Parameters
session:SessionLocal

the session

columnIndex:int

0-based column index

Returns:String

the column name

Annotations
@Override
getColumnNameForViewback to summary
public String getColumnNameForView(SessionLocal session, int columnIndex)

Overrides org.h2.expression.Expression.getColumnNameForView.

Doc from org.h2.expression.Expression.getColumnNameForView.

Get the column name of this expression for a view.

Parameters
session:SessionLocal

the session

columnIndex:int

0-based column index

Returns:String

the column name for a view

Annotations
@Override
getCostback to summary
public int getCost()

Implements abstract org.h2.expression.Expression.getCost.

Doc from org.h2.expression.Expression.getCost.

Estimate the cost to process the expression. Used when optimizing the query, to calculate the query plan with the lowest estimated cost.

Returns:int

the estimated cost

Annotations
@Override
getNotIfPossibleback to summary
public Expression getNotIfPossible(SessionLocal session)

Overrides org.h2.expression.Expression.getNotIfPossible.

Doc from org.h2.expression.Expression.getNotIfPossible.

If it is possible, return the negated expression. This is used to optimize NOT expressions: NOT ID>10 can be converted to ID<=10. Returns null if negating is not possible.

Parameters
session:SessionLocal

the session

Returns:Expression

the negated expression, or null

Annotations
@Override
getNullableback to summary
public int getNullable()

Overrides org.h2.expression.Expression.getNullable.

Doc from org.h2.expression.Expression.getNullable.

Check whether this expression is a column and can store NULL.

Returns:int

whether NULL is allowed

Annotations
@Override
getOriginalColumnNameback to summary
public String getOriginalColumnName()
getOriginalTableAliasNameback to summary
public String getOriginalTableAliasName()
getSchemaNameback to summary
public String getSchemaName()

Overrides org.h2.expression.Expression.getSchemaName.

Doc from org.h2.expression.Expression.getSchemaName.

Get the schema name, or null

Returns:String

the schema name

Annotations
@Override
getTableFilterback to summary
public TableFilter getTableFilter()
getTableNameback to summary
public String getTableName()

Overrides org.h2.expression.Expression.getTableName.

Doc from org.h2.expression.Expression.getTableName.

Get the table name, or null

Returns:String

the table name

Annotations
@Override
getTypeback to summary
public TypeInfo getType()

Implements abstract org.h2.expression.Expression.getType.

Implements org.h2.value.Typed.getType.

Doc from org.h2.expression.Expression.getType.

Returns the data type. The data type may be unknown before the optimization phase.

Returns:TypeInfo

the data type

Annotations
@Override
getUnenclosedSQLback to summary
public StringBuilder getUnenclosedSQL(StringBuilder builder, int sqlFlags)

Implements abstract org.h2.expression.Expression.getUnenclosedSQL.

Doc from org.h2.expression.Expression.getUnenclosedSQL.

Get the SQL statement of this expression. This may not always be the original SQL statement, especially after optimization. Enclosing '(' and ')' are never appended.

Parameters
builder:StringBuilder

string builder

sqlFlags:int

formatting flags

Returns:StringBuilder

the specified string builder

Annotations
@Override
getValueback to summary
public Value getValue(SessionLocal session)

Implements abstract org.h2.expression.Expression.getValue.

Doc from org.h2.expression.Expression.getValue.

Return the resulting value for the current row.

Parameters
session:SessionLocal

the session

Returns:Value

the result

Annotations
@Override
isEverythingback to summary
public boolean isEverything(ExpressionVisitor visitor)

Implements abstract org.h2.expression.Expression.isEverything.

Doc from org.h2.expression.Expression.isEverything.

Check if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.

Parameters
visitor:ExpressionVisitor

the visitor

Returns:boolean

if the criteria can be fulfilled

Annotations
@Override
isIdentityback to summary
public boolean isIdentity()

Overrides org.h2.expression.Expression.isIdentity.

Doc from org.h2.expression.Expression.isIdentity.

Check if this is an identity column.

Returns:boolean

true if it is an identity column

Annotations
@Override
mapColumnback to summary
private void mapColumn(ColumnResolver resolver, Column col, int level)
mapColumnsback to summary
public void mapColumns(ColumnResolver resolver, int level, int state)

Implements abstract org.h2.expression.Expression.mapColumns.

Doc from org.h2.expression.Expression.mapColumns.

Map the columns of the resolver to expression columns.

Parameters
resolver:ColumnResolver

the column resolver

level:int

the subquery nesting level

state:int

current state for nesting checks, initial value is MAP_INITIAL

Annotations
@Override
optimizeback to summary
public Expression optimize(SessionLocal session)

Implements abstract org.h2.expression.Expression.optimize.

Doc from org.h2.expression.Expression.optimize.

Try to optimize the expression.

Parameters
session:SessionLocal

the session

Returns:Expression

the optimized expression

Annotations
@Override
optimizeOtherback to summary
private Expression optimizeOther()
setEvaluatableback to summary
public void setEvaluatable(TableFilter tableFilter, boolean b)

Implements abstract org.h2.expression.Expression.setEvaluatable.

Doc from org.h2.expression.Expression.setEvaluatable.

Tell the expression columns whether the table filter can return values now. This is used when optimizing the query.

Parameters
tableFilter:TableFilter

the table filter

b:boolean

true if the table filter can return value

Annotations
@Override
updateAggregateback to summary
public void updateAggregate(SessionLocal session, int stage)

Implements abstract org.h2.expression.Expression.updateAggregate.

Doc from org.h2.expression.Expression.updateAggregate.

Update an aggregate value. This method is called at statement execution time. It is usually called once for each row, but if the expression is used multiple times (for example in the column list, and as part of the HAVING expression) it is called multiple times - the row counter needs to be used to make sure the internal state is only updated once.

Parameters
session:SessionLocal

the session

stage:int

select stage

Annotations
@Override