public RelDataType createSqlIntervalType( SqlIntervalQualifier intervalQualifier) { RelDataType newType = new IntervalSqlType(typeSystem, intervalQualifier, false); return canonize(newType); }
/** * Constructs an IntervalSqlType. This should only be called from a factory * method. */ public IntervalSqlType(RelDataTypeSystem typeSystem, SqlIntervalQualifier intervalQualifier, boolean isNullable) { super(intervalQualifier.typeName(), isNullable, null); this.typeSystem = Objects.requireNonNull(typeSystem); this.intervalQualifier = Objects.requireNonNull(intervalQualifier); computeDigest(); }
@Override public RelDataType inferReturnType(SqlOperatorBinding opBinding) { final RelDataTypeFactory typeFactory = opBinding.getTypeFactory(); final RelDataType leftType = opBinding.getOperandType(0); final IntervalSqlType unitType = (IntervalSqlType) opBinding.getOperandType(1); final TimeUnit timeUnit = unitType.getIntervalQualifier().getStartUnit(); return SqlTimestampAddFunction.deduceType(typeFactory, timeUnit, unitType, leftType); }
@Override public RelDataType inferReturnType(SqlOperatorBinding opBinding) { final RelDataTypeFactory typeFactory = opBinding.getTypeFactory(); final RelDataType leftType = opBinding.getOperandType(0); final IntervalSqlType unitType = (IntervalSqlType) opBinding.getOperandType(1); switch (unitType.getIntervalQualifier().getStartUnit()) { case HOUR: case MINUTE: case SECOND: case MILLISECOND: case MICROSECOND: return typeFactory.createTypeWithNullability( typeFactory.createSqlType(SqlTypeName.TIMESTAMP), leftType.isNullable() || unitType.isNullable()); default: return leftType; } } };
@Override public RelDataType inferReturnType(SqlOperatorBinding opBinding) { final RelDataTypeFactory typeFactory = opBinding.getTypeFactory(); final RelDataType leftType = opBinding.getOperandType(0); final IntervalSqlType unitType = (IntervalSqlType) opBinding.getOperandType(1); final TimeUnit timeUnit = unitType.getIntervalQualifier().getStartUnit(); return SqlTimestampAddFunction.deduceType(typeFactory, timeUnit, unitType, leftType); }
IntervalSqlType intervalType = (IntervalSqlType) (isInterval(fromType) ? fromType : toType); if (!intervalType.getIntervalQualifier().isSingleDatetimeField()) {
public RelDataType createSqlIntervalType( SqlIntervalQualifier intervalQualifier) { RelDataType newType = new IntervalSqlType(typeSystem, intervalQualifier, false); return canonize(newType); }
/** * Constructs an IntervalSqlType. This should only be called from a factory * method. */ public IntervalSqlType(RelDataTypeSystem typeSystem, SqlIntervalQualifier intervalQualifier, boolean isNullable) { super(intervalQualifier.typeName(), isNullable, null); this.typeSystem = Objects.requireNonNull(typeSystem); this.intervalQualifier = Objects.requireNonNull(intervalQualifier); computeDigest(); }
IntervalSqlType intervalType = (IntervalSqlType) (isInterval(fromType) ? fromType : toType); if (!intervalType.getIntervalQualifier().isSingleDatetimeField()) {
private RelDataType copyIntervalType(RelDataType type, boolean nullable) { return new IntervalSqlType(typeSystem, type.getIntervalQualifier(), nullable); }
IntervalSqlType intervalType = (IntervalSqlType) (isInterval(fromType) ? fromType : toType); if (!intervalType.getIntervalQualifier().isSingleDatetimeField()) {
private RelDataType copyIntervalType(RelDataType type, boolean nullable) { return new IntervalSqlType(typeSystem, type.getIntervalQualifier(), nullable); }