public class SqlIntervalQualifier extends SqlNode
INTERVAL qualifier is defined as follows:
<interval qualifier> ::=
<start field> TO <end field>
| <single datetime field>
<start field> ::=
<non-second primary datetime field>
[ <left paren> <interval leading field precision>
<right paren> ]
<end field> ::=
<non-second primary datetime field>
| SECOND [ <left paren>
<interval fractional seconds precision> <right paren> ]
<single datetime field> ::=
<non-second primary datetime field>
[ <left paren> <interval leading field precision>
<right paren> ]
| SECOND [ <left paren>
<interval leading field precision>
[ <comma> <interval fractional seconds precision> ]
<right paren> ]
<primary datetime field> ::=
<non-second primary datetime field>
| SECOND
<non-second primary datetime field> ::= YEAR | MONTH | DAY | HOUR
| MINUTE
<interval fractional seconds precision> ::=
<unsigned integer>
<interval leading field precision> ::= <unsigned integer>
Examples include:
INTERVAL '1:23:45.678' HOUR TO SECONDINTERVAL '1 2:3:4' DAY TO SECONDINTERVAL '1 2:3:4' DAY(4) TO SECOND(4)| Modifier and Type | Field and Description |
|---|---|
TimeUnitRange |
timeUnitRange |
EMPTY_ARRAY, pos| Constructor and Description |
|---|
SqlIntervalQualifier(TimeUnit startUnit,
int startPrecision,
TimeUnit endUnit,
int fractionalSecondPrecision,
SqlParserPos pos) |
SqlIntervalQualifier(TimeUnit startUnit,
TimeUnit endUnit,
SqlParserPos pos) |
| Modifier and Type | Method and Description |
|---|---|
<R> R |
accept(SqlVisitor<R> visitor)
Accepts a generic visitor.
|
SqlNode |
clone(SqlParserPos pos)
Clones a SqlNode with a different position.
|
static int |
combineFractionalSecondPrecisionPreservingDefault(RelDataTypeSystem typeSystem,
SqlIntervalQualifier qual1,
SqlIntervalQualifier qual2) |
static int |
combineStartPrecisionPreservingDefault(RelDataTypeSystem typeSystem,
SqlIntervalQualifier qual1,
SqlIntervalQualifier qual2) |
boolean |
equalsDeep(SqlNode node,
boolean fail)
Returns whether this node is structurally equivalent to another node.
|
int[] |
evaluateIntervalLiteral(String value,
SqlParserPos pos,
RelDataTypeSystem typeSystem)
Validates an INTERVAL literal according to the rules specified by the
interval qualifier.
|
TimeUnit |
getEndUnit() |
int |
getFractionalSecondPrecision(RelDataTypeSystem typeSystem) |
int |
getFractionalSecondPrecisionPreservingDefault() |
int |
getStartPrecision(RelDataTypeSystem typeSystem) |
int |
getStartPrecisionPreservingDefault() |
TimeUnit |
getStartUnit() |
boolean |
isSingleDatetimeField()
Does this interval have a single datetime field
Return true not of form unit TO unit.
|
boolean |
isYearMonth() |
SqlTypeName |
typeName() |
void |
unparse(RelDataTypeSystem typeSystem,
SqlWriter writer) |
void |
unparse(SqlWriter writer,
int leftPrec,
int rightPrec)
Writes a SQL representation of this node to a writer.
|
void |
validate(SqlValidator validator,
SqlValidatorScope scope)
Validates this node.
|
clone, cloneArray, equalDeep, equalDeep, findValidOptions, getKind, getMonotonicity, getParserPosition, isA, toSqlString, toSqlString, toString, validateExprpublic final TimeUnitRange timeUnitRange
public SqlIntervalQualifier(TimeUnit startUnit, int startPrecision, TimeUnit endUnit, int fractionalSecondPrecision, SqlParserPos pos)
public SqlIntervalQualifier(TimeUnit startUnit, TimeUnit endUnit, SqlParserPos pos)
public SqlTypeName typeName()
public void validate(SqlValidator validator, SqlValidatorScope scope)
SqlNodeThe typical implementation of this method will make a callback to the
validator appropriate to the node type and context. The validator has
methods such as SqlValidator.validateLiteral(org.apache.calcite.sql.SqlLiteral) for these purposes.
public <R> R accept(SqlVisitor<R> visitor)
SqlNodeImplementations of this method in subtypes simply call the appropriate
visit method on the
visitor object.
The type parameter R must be consistent with the type
parameter of the visitor.
public boolean equalsDeep(SqlNode node, boolean fail)
SqlNodeequalsDeep in class SqlNodepublic int getStartPrecision(RelDataTypeSystem typeSystem)
public int getStartPrecisionPreservingDefault()
public static int combineStartPrecisionPreservingDefault(RelDataTypeSystem typeSystem, SqlIntervalQualifier qual1, SqlIntervalQualifier qual2)
public int getFractionalSecondPrecision(RelDataTypeSystem typeSystem)
public int getFractionalSecondPrecisionPreservingDefault()
public static int combineFractionalSecondPrecisionPreservingDefault(RelDataTypeSystem typeSystem, SqlIntervalQualifier qual1, SqlIntervalQualifier qual2)
public TimeUnit getStartUnit()
public TimeUnit getEndUnit()
public SqlNode clone(SqlParserPos pos)
SqlNodepublic void unparse(SqlWriter writer, int leftPrec, int rightPrec)
SqlNodeThe 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.apache.calcite.sql.SqlWriter, int, int).
public void unparse(RelDataTypeSystem typeSystem, SqlWriter writer)
public boolean isSingleDatetimeField()
public final boolean isYearMonth()
public int[] evaluateIntervalLiteral(String value, SqlParserPos pos, RelDataTypeSystem typeSystem)
CalciteContextException - if the interval value is illegalCopyright © 2012–2015 The Apache Software Foundation. All rights reserved.