Package org.h2.mode
Class ModeFunction
- java.lang.Object
-
- org.h2.expression.Expression
-
- org.h2.expression.OperationN
-
- org.h2.expression.function.FunctionN
-
- org.h2.mode.ModeFunction
-
- All Implemented Interfaces:
ExpressionWithVariableParameters
,NamedExpression
,HasSQL
,Typed
- Direct Known Subclasses:
FunctionsDB2Derby
,FunctionsLegacy
,FunctionsMSSQLServer
,FunctionsMySQL
,FunctionsOracle
,FunctionsPostgreSQL
public abstract class ModeFunction extends FunctionN
Base class for mode-specific functions.
-
-
Field Summary
Fields Modifier and Type Field Description protected FunctionInfo
info
The information about this function.protected static int
VAR_ARGS
Constant for variable number of arguments.-
Fields inherited from class org.h2.expression.OperationN
args, argsCount, type
-
Fields inherited from class org.h2.expression.Expression
AUTO_PARENTHESES, MAP_IN_AGGREGATE, MAP_IN_WINDOW, MAP_INITIAL, WITH_PARENTHESES, WITHOUT_PARENTHESES
-
Fields inherited from interface org.h2.util.HasSQL
ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS
-
-
Constructor Summary
Constructors Constructor Description ModeFunction(FunctionInfo info)
Creates a new instance of function.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
checkParameterCount(int len)
Check if the parameter count is correct.void
doneWithParameters()
This method must be called after all the parameters have been set.(package private) Value[]
getArgumentsValues(SessionLocal session, Expression[] args)
Gets values of arguments and checks them for NULL values if function returns NULL on NULL argument.private static ModeFunction
getCompatibilityModeFunction(java.lang.String name, Mode.ModeEnum modeEnum)
static ModeFunction
getFunction(Database database, java.lang.String name)
Get an instance of the given function for this database.java.lang.String
getName()
Get the name.(package private) static Value
getNullOrValue(SessionLocal session, Expression[] args, Value[] values, int i)
Get value transformed by expression, or null if i is out of range or the input value is null.boolean
isEverything(ExpressionVisitor visitor)
Check if this expression and all sub-expressions can fulfill a criteria.(package private) boolean
optimizeArguments(SessionLocal session)
Optimizes arguments.-
Methods inherited from class org.h2.expression.function.FunctionN
getUnenclosedSQL, getValue, getValue
-
Methods inherited from class org.h2.expression.OperationN
addParameter, getCost, getSubexpression, getSubexpressionCount, getType, mapColumns, optimizeArguments, setEvaluatable, updateAggregate
-
Methods inherited from class org.h2.expression.Expression
addFilterConditions, createIndexConditions, getAlias, getBooleanValue, getColumnName, getColumnNameForView, getEnclosedSQL, getNonAliasExpression, getNotIfPossible, getNullable, getSchemaName, getSQL, getSQL, getSQL, getSQL, getTableAlias, getTableName, getWhenSQL, getWhenValue, isConstant, isIdentity, isNullConstant, isValueSet, isWhenConditionOperand, needParentheses, optimize, optimizeCondition, toString, writeExpressions, writeExpressions
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.h2.util.HasSQL
getTraceSQL
-
-
-
-
Field Detail
-
VAR_ARGS
protected static final int VAR_ARGS
Constant for variable number of arguments.- See Also:
- Constant Field Values
-
info
protected final FunctionInfo info
The information about this function.
-
-
Constructor Detail
-
ModeFunction
ModeFunction(FunctionInfo info)
Creates a new instance of function.- Parameters:
info
- function information
-
-
Method Detail
-
getFunction
public static ModeFunction getFunction(Database database, java.lang.String name)
Get an instance of the given function for this database. If no function with this name is found, null is returned.- Parameters:
database
- the databasename
- the upper case function name- Returns:
- the function object or null
-
getCompatibilityModeFunction
private static ModeFunction getCompatibilityModeFunction(java.lang.String name, Mode.ModeEnum modeEnum)
-
getNullOrValue
static Value getNullOrValue(SessionLocal session, Expression[] args, Value[] values, int i)
Get value transformed by expression, or null if i is out of range or the input value is null.- Parameters:
session
- database sessionargs
- expressionsvalues
- array of input valuesi
- index of value of transform- Returns:
- value or null
-
getArgumentsValues
final Value[] getArgumentsValues(SessionLocal session, Expression[] args)
Gets values of arguments and checks them for NULL values if function returns NULL on NULL argument.- Parameters:
session
- the sessionargs
- the arguments- Returns:
- the values, or
null
if function should return NULL due to NULL argument
-
checkParameterCount
void checkParameterCount(int len)
Check if the parameter count is correct.- Parameters:
len
- the number of parameters set- Throws:
DbException
- if the parameter count is incorrect
-
doneWithParameters
public void doneWithParameters()
Description copied from interface:ExpressionWithVariableParameters
This method must be called after all the parameters have been set. It checks if the parameter count is correct when required by the implementation.- Specified by:
doneWithParameters
in interfaceExpressionWithVariableParameters
- Overrides:
doneWithParameters
in classOperationN
-
optimizeArguments
final boolean optimizeArguments(SessionLocal session)
Optimizes arguments.- Parameters:
session
- the session- Returns:
- whether all arguments are constants and function is deterministic
-
getName
public java.lang.String getName()
Description copied from interface:NamedExpression
Get the name.- Returns:
- the name in uppercase
-
isEverything
public boolean isEverything(ExpressionVisitor visitor)
Description copied from class:Expression
Check if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.- Overrides:
isEverything
in classOperationN
- Parameters:
visitor
- the visitor- Returns:
- if the criteria can be fulfilled
-
-