public class SqlJdbcFunctionCall extends SqlFunction
SqlJdbcFunctionCall
is a node of a parse tree which represents
a JDBC function call. A JDBC call is of the form {fn NAME(arg0, arg1,
...)}
.
See Sun's documentation for writers of JDBC drivers.*
Function Name | Function Returns |
---|---|
NUMERIC FUNCTIONS |
|
ABS(number) | Absolute value of number |
ACOS(float) | Arccosine, in radians, of float |
ASIN(float) | Arcsine, in radians, of float |
ATAN(float) | Arctangent, in radians, of float |
ATAN2(float1, float2) | Arctangent, in radians, of float2 / float1 |
CEILING(number) | Smallest integer >= number |
COS(float) | Cosine of float radians |
COT(float) | Cotangent of float radians |
DEGREES(number) | Degrees in number radians |
EXP(float) | Exponential function of float |
FLOOR(number) | Largest integer <= number |
LOG(float) | Base e logarithm of float |
LOG10(float) | Base 10 logarithm of float |
MOD(integer1, integer2) | Rh3ainder for integer1 / integer2 |
PI() | The constant pi |
POWER(number, power) | number raised to (integer) power |
RADIANS(number) | Radians in number degrees |
RAND(integer) | Random floating point for seed integer |
ROUND(number, places) | number rounded to places places |
SIGN(number) | -1 to indicate number is < 0; 0 to indicate number is = 0; 1 to indicate number is > 0 |
SIN(float) | Sine of float radians |
SQRT(float) | Square root of float |
TAN(float) | Tangent of float radians |
TRUNCATE(number, places) | number truncated to places places |
STRING FUNCTIONS |
|
ASCII(string) | Integer representing the ASCII code value of the leftmost character in string |
CHAR(code) | Character with ASCII code value code, where code is between 0 and 255 |
CONCAT(string1, string2) | Character string formed by appending string2 to string1; if a string is null, the result is DBMS-dependent |
DIFFERENCE(string1, string2) | Integer indicating the difference between the values returned by the function SOUNDEX for string1 and string2 |
INSERT(string1, start, length, string2) | A character string formed by deleting length characters from string1 beginning at start, and inserting string2 into string1 at start |
LCASE(string) | Converts all uppercase characters in string to lowercase |
LEFT(string, count) | The count leftmost characters from string |
LENGTH(string) | Number of characters in string, excluding trailing blanks |
LOCATE(string1, string2[, start]) | Position in string2 of the first occurrence of string1, searching from the beginning of string2; if start is specified, the search begins from position start. 0 is returned if string2 does not contain string1. Position 1 is the first character in string2. |
LTRIM(string) | Characters of string with leading blank spaces rh3oved |
REPEAT(string, count) | A character string formed by repeating string count times |
REPLACE(string1, string2, string3) | Replaces all occurrences of string2 in string1 with string3 |
RIGHT(string, count) | The count rightmost characters in string |
RTRIM(string) | The characters of string with no trailing blanks |
REVERSE(string) | The string with the order of the characters reversed |
SOUNDEX(string) | A character string, which is data source-dependent, representing the sound of the words in string; this could be a four-digit SOUNDEX code, a phonetic representation of each word, etc. |
SPACE(count) | A character string consisting of count spaces |
SUBSTRING(string, start, length) | A character string formed by extracting length characters from string beginning at start |
UCASE(string) | Converts all lowercase characters in string to uppercase |
TIME and DATE FUNCTIONS |
|
CURDATE() | The current date as a date value |
CURTIME() | The current local time as a time value |
DAYNAME(date) | A character string representing the day component of date; the name for the day is specific to the data source |
DAYOFMONTH(date) | An integer from 1 to 31 representing the day of the month in date |
DAYOFWEEK(date) | An integer from 1 to 7 representing the day of the week in date; 1 represents Sunday |
DAYOFYEAR(date) | An integer from 1 to 366 representing the day of the year in date |
HOUR(time) | An integer from 0 to 23 representing the hour component of time |
MINUTE(time) | An integer from 0 to 59 representing the minute component of time |
MONTH(date) | An integer from 1 to 12 representing the month component of date |
MONTHNAME(date) | A character string representing the month component of date; the name for the month is specific to the data source |
NOW() | A timestamp value representing the current date and time |
QUARTER(date) | An integer from 1 to 4 representing the quarter in date; 1 represents January 1 through March 31 |
SECOND(time) | An integer from 0 to 59 representing the second component of time |
TIMESTAMPADD(interval,count, timestamp) | A timestamp calculated by adding count number of interval(s) to timestamp; interval may be one of the following: SQL_TSI_FRAC_SECOND, SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, or SQL_TSI_YEAR |
TIMESTAMPDIFF(interval,timestamp1, timestamp2) | An integer representing the number of interval(s) by which timestamp2 is greater than timestamp1; interval may be one of the following: SQL_TSI_FRAC_SECOND, SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, or SQL_TSI_YEAR |
WEEK(date) | An integer from 1 to 53 representing the week of the year in date |
YEAR(date) | An integer representing the year component of date |
SYSTEM FUNCTIONS |
|
DATABASE() | Name of the database |
IFNULL(expression, value) | value if expression is null; expression if expression is not null |
USER() | User name in the DBMS |
CONVERSION FUNCTIONS |
|
CONVERT(value, SQLtype) | value converted to SQLtype where SQLtype may be one of the following SQL types: BIGINT, BINARY, BIT, CHAR, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, LONGVARBINARY, LONGVARCHAR, REAL, SMALLINT, TIME, TIMESTAMP, TINYINT, VARBINARY, or VARCHAR |
Modifier and Type | Class and Description |
---|---|
private static class |
SqlJdbcFunctionCall.JdbcToInternalLookupTable
Lookup table between JDBC functions and internal representation
|
private static interface |
SqlJdbcFunctionCall.MakeCall
Converts a call to a JDBC function to a call to a regular function.
|
private static class |
SqlJdbcFunctionCall.PermutingMakeCall
Implementation of
SqlJdbcFunctionCall.MakeCall that can re-order or ignore operands. |
static class |
SqlJdbcFunctionCall.SimpleMakeCall
Converter that calls a built-in function with the same arguments.
|
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
jdbcName |
private SqlCall |
lookupCall |
private SqlJdbcFunctionCall.MakeCall |
lookupMakeCallObj |
private static java.lang.String |
NUMERIC_FUNCTIONS
List of all numeric function names defined by JDBC.
|
private static java.lang.String |
STRING_FUNCTIONS
List of all string function names defined by JDBC.
|
private static java.lang.String |
SYSTEM_FUNCTIONS
List of all system function names defined by JDBC.
|
private SqlNode[] |
thisOperands |
private static java.lang.String |
TIME_DATE_FUNCTIONS
List of all time/date function names defined by JDBC.
|
kind, MDX_PRECEDENCE, NL
Constructor and Description |
---|
SqlJdbcFunctionCall(java.lang.String name) |
Modifier and Type | Method and Description |
---|---|
private static java.lang.String |
constructFuncList(java.lang.String... functionNames) |
SqlCall |
createCall(SqlLiteral functionQualifier,
SqlParserPos pos,
SqlNode... operands)
Creates a call to this operand with an array of operands.
|
RelDataType |
deriveType(SqlValidator validator,
SqlValidatorScope scope,
SqlCall call)
Derives the type of a call to this operator.
|
java.lang.String |
getAllowedSignatures(java.lang.String name)
Returns a string describing the expected operand types of a call, e.g.
|
SqlCall |
getLookupCall() |
static java.lang.String |
getNumericFunctions() |
static java.lang.String |
getStringFunctions() |
static java.lang.String |
getSystemFunctions() |
static java.lang.String |
getTimeDateFunctions() |
RelDataType |
inferReturnType(SqlOperatorBinding opBinding)
Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.
|
SqlNode |
rewriteCall(SqlValidator validator,
SqlCall call)
Rewrites a call to this operator.
|
void |
unparse(SqlWriter writer,
SqlCall call,
int leftPrec,
int rightPrec)
Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.
|
getFunctionType, getNameAsId, getParamNames, getParamTypes, getSqlIdentifier, getSyntax, isQuantifierAllowed, validateCall, validateQuantifier
acceptCall, acceptCall, adjustType, allowsFraming, argumentMustBeScalar, checkOperandCount, checkOperandTypes, constructArgNameList, constructArgTypeList, constructOperandList, createCall, createCall, createCall, equals, getAllowedSignatures, getKind, getLeftPrec, getMonotonicity, getMonotonicity, getName, getOperandCountRange, getOperandTypeChecker, getOperandTypeInference, getReturnTypeInference, getRightPrec, getSignatureTemplate, hashCode, inferReturnType, isAggregator, isDeterministic, isDynamicFunction, isGroup, isGroupAuxiliary, isName, leftPrec, needsSpace, preValidateCall, requiresDecimalExpansion, requiresOrder, requiresOver, rightPrec, toString, unparseListClause, unparseListClause, validateOperands, validRexOperands
private static final java.lang.String NUMERIC_FUNCTIONS
private static final java.lang.String STRING_FUNCTIONS
private static final java.lang.String TIME_DATE_FUNCTIONS
private static final java.lang.String SYSTEM_FUNCTIONS
private final java.lang.String jdbcName
private final SqlJdbcFunctionCall.MakeCall lookupMakeCallObj
private SqlCall lookupCall
private SqlNode[] thisOperands
private static java.lang.String constructFuncList(java.lang.String... functionNames)
public SqlCall createCall(SqlLiteral functionQualifier, SqlParserPos pos, SqlNode... operands)
SqlOperator
The position of the resulting call is the union of the
pos
and the positions of all of the operands.
createCall
in class SqlOperator
functionQualifier
- function qualifier (e.g. "DISTINCT"), may bepos
- parser position of the identifier of the calloperands
- array of operandspublic SqlNode rewriteCall(SqlValidator validator, SqlCall call)
SqlOperator
rewriteCall
in class SqlOperator
validator
- Validatorcall
- Call to be rewrittenpublic SqlCall getLookupCall()
public java.lang.String getAllowedSignatures(java.lang.String name)
SqlOperator
getAllowedSignatures
in class SqlOperator
public RelDataType deriveType(SqlValidator validator, SqlValidatorScope scope, SqlCall call)
SqlOperator
This method is an intrinsic part of the validation process so, unlike
SqlOperator.inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)
, specific operators would not typically override
this method.
deriveType
in class SqlFunction
validator
- Validatorscope
- Scope of validationcall
- Call to this operatorpublic RelDataType inferReturnType(SqlOperatorBinding opBinding)
SqlOperator
SqlReturnTypeInference
to the constructor.inferReturnType
in class SqlOperator
opBinding
- description of invocation (not necessarily a
SqlCall
)public void unparse(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec)
SqlOperator
The default implementation of this method delegates to
SqlSyntax.unparse(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlOperator, org.apache.calcite.sql.SqlCall, int, int)
.
unparse
in class SqlFunction
public static java.lang.String getNumericFunctions()
DatabaseMetaData.getNumericFunctions()
public static java.lang.String getStringFunctions()
DatabaseMetaData.getStringFunctions()
public static java.lang.String getTimeDateFunctions()
DatabaseMetaData.getTimeDateFunctions()
public static java.lang.String getSystemFunctions()
DatabaseMetaData.getSystemFunctions()
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.