org.eigenbase.sql
Class SqlNumericLiteral
java.lang.Object
org.eigenbase.sql.SqlNode
org.eigenbase.sql.SqlLiteral
org.eigenbase.sql.SqlNumericLiteral
- All Implemented Interfaces:
- Cloneable
public class SqlNumericLiteral
- extends SqlLiteral
A numeric SQL literal.
- Since:
- Nov 18, 2004
- Version:
- $Id: //open/dev/farrago/src/org/eigenbase/sql/SqlNumericLiteral.java#16 $
- Author:
- jhyde
Methods inherited from class org.eigenbase.sql.SqlLiteral |
accept, bigDecimalValue, booleanValue, createApproxNumeric, createBinaryString, createBinaryString, createBoolean, createCharString, createCharString, createDate, createExactNumeric, createInterval, createNegative, createNull, createSample, createSymbol, createTime, createTimestamp, createUnknown, equals, equalsDeep, getKind, getMonotonicity, getStringValue, getTypeName, getValue, hashCode, intValue, longValue, sampleValue, stringValue, symbolValue, unescapeUnicode, validate, valueMatchesType |
prec
private Integer prec
scale
private Integer scale
isExact
private boolean isExact
SqlNumericLiteral
protected SqlNumericLiteral(BigDecimal value,
Integer prec,
Integer scale,
boolean isExact,
SqlParserPos pos)
getPrec
public Integer getPrec()
getScale
public Integer getScale()
isExact
public boolean isExact()
clone
public SqlNode clone(SqlParserPos pos)
- Description copied from class:
SqlNode
- Clones a SqlNode with a different position.
- Overrides:
clone
in class SqlLiteral
unparse
public void unparse(SqlWriter writer,
int leftPrec,
int rightPrec)
- Description copied from class:
SqlNode
- Writes a SQL representation of this node to a writer.
The leftPrec
and rightPrec
parameters give
us enough context to decide whether we need to enclose the expression in
parentheses. For example, we need parentheses around "2 + 3" if preceded
by "5 *". This is because the precedence of the "*" operator is greater
than the precedence of the "+" operator.
The algorithm handles left- and right-associative operators by giving
them slightly different left- and right-precedence.
If SqlWriter.isAlwaysUseParentheses()
is true, we use
parentheses even when they are not required by the precedence rules.
For the details of this algorithm, see SqlCall.unparse(org.eigenbase.sql.SqlWriter, int, int)
.
- Overrides:
unparse
in class SqlLiteral
- Parameters:
writer
- Target writerleftPrec
- The precedence of the SqlNode
immediately
preceding this node in a depth-first scan of the parse treerightPrec
- The precedence of the SqlNode
immediately
toValue
public String toValue()
- Description copied from class:
SqlLiteral
- For calc program builder - value may be different than
SqlLiteral.unparse(org.eigenbase.sql.SqlWriter, int, int)
Typical values:
- Hello, world!
- 12.34
- {null}
- 1969-04-29
- Overrides:
toValue
in class SqlLiteral
- Returns:
- string representation of the value
createSqlType
public RelDataType createSqlType(RelDataTypeFactory typeFactory)
- Overrides:
createSqlType
in class SqlLiteral
isInteger
public boolean isInteger()