/*
* Copyright 2004-2019 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.expression.function;
This class contains information about a built-in function.
/**
* This class contains information about a built-in function.
*/
public final class FunctionInfo {
The name of the function.
/**
* The name of the function.
*/
public final String name;
The function type.
/**
* The function type.
*/
public final int type;
The number of parameters.
/**
* The number of parameters.
*/
final int parameterCount;
The data type of the return value.
/**
* The data type of the return value.
*/
public final int returnDataType;
If the result of the function is NULL if any of the parameters is NULL.
/**
* If the result of the function is NULL if any of the parameters is NULL.
*/
final boolean nullIfParameterIsNull;
If this function always returns the same value for the same parameters.
/**
* If this function always returns the same value for the same parameters.
*/
public final boolean deterministic;
Should the return value ResultSet be buffered in a local temporary file?
/**
* Should the return value ResultSet be buffered in a local temporary file?
*/
final boolean bufferResultSetToLocalTemp;
Should the no-arg function require parentheses.
/**
* Should the no-arg function require parentheses.
*/
final boolean requireParentheses;
Creates new instance of built-in function information.
Params: - name –
the name of the function
- type –
the function type
- parameterCount –
the number of parameters
- returnDataType –
the data type of the return value
- nullIfParameterIsNull –
if the result of the function is NULL if any of the parameters
is NULL
- deterministic –
if this function always returns the same value for the same
parameters
- bufferResultSetToLocalTemp –
should the return value ResultSet be buffered in a local
temporary file?
- requireParentheses –
should the no-arg function require parentheses
/**
* Creates new instance of built-in function information.
*
* @param name
* the name of the function
* @param type
* the function type
* @param parameterCount
* the number of parameters
* @param returnDataType
* the data type of the return value
* @param nullIfParameterIsNull
* if the result of the function is NULL if any of the parameters
* is NULL
* @param deterministic
* if this function always returns the same value for the same
* parameters
* @param bufferResultSetToLocalTemp
* should the return value ResultSet be buffered in a local
* temporary file?
* @param requireParentheses
* should the no-arg function require parentheses
*/
public FunctionInfo(String name, int type, int parameterCount, int returnDataType, boolean nullIfParameterIsNull,
boolean deterministic, boolean bufferResultSetToLocalTemp, boolean requireParentheses) {
this.name = name;
this.type = type;
this.parameterCount = parameterCount;
this.returnDataType = returnDataType;
this.nullIfParameterIsNull = nullIfParameterIsNull;
this.deterministic = deterministic;
this.bufferResultSetToLocalTemp = bufferResultSetToLocalTemp;
this.requireParentheses = requireParentheses;
}
Creates a copy of built-in function information with a different name. A
copy will require parentheses.
Params: - source –
the source information
- name –
the new name
/**
* Creates a copy of built-in function information with a different name. A
* copy will require parentheses.
*
* @param source
* the source information
* @param name
* the new name
*/
public FunctionInfo(FunctionInfo source, String name) {
this.name = name;
type = source.type;
returnDataType = source.returnDataType;
parameterCount = source.parameterCount;
nullIfParameterIsNull = source.nullIfParameterIsNull;
deterministic = source.deterministic;
bufferResultSetToLocalTemp = source.bufferResultSetToLocalTemp;
requireParentheses = true;
}
}