public void validateWindow( SqlNode windowOrId, SqlValidatorScope scope, SqlCall call) { // Enable nested aggregates with window aggregates (OVER operator) inWindow = true; final SqlWindow targetWindow; switch (windowOrId.getKind()) { case IDENTIFIER: // Just verify the window exists in this query. It will validate // when the definition is processed targetWindow = getWindowByName((SqlIdentifier) windowOrId, scope); break; case WINDOW: targetWindow = (SqlWindow) windowOrId; break; default: throw Util.unexpected(windowOrId.getKind()); } assert targetWindow.getWindowCall() == null; targetWindow.setWindowCall(call); targetWindow.validate(this, scope); targetWindow.setWindowCall(null); call.validate(this, scope); validateAggregateParams(call, null, scope); // Disable nested aggregates post validation inWindow = false; }
throw Util.unexpected(conditionType); throw Util.unexpected(joinType);
throw Util.unexpected(node.getKind());
throw Util.unexpected(kind); throw Util.unexpected(kind);
aggCallMapping, inputExprs); default: throw Util.unexpected(kind);
/** * Returns a numeric literal's value as a {@link BigDecimal}. */ public BigDecimal bigDecimalValue() { switch (typeName) { case DECIMAL: case DOUBLE: return (BigDecimal) value; default: throw Util.unexpected(typeName); } }
/** * Returns a numeric literal's value as a {@link BigDecimal}. */ public BigDecimal bigDecimalValue() { switch (typeName) { case DECIMAL: case DOUBLE: return (BigDecimal) value; default: throw Util.unexpected(typeName); } }
private static JoinRelType convertJoinType(JoinType joinType) { switch (joinType) { case COMMA: case INNER: case CROSS: return JoinRelType.INNER; case FULL: return JoinRelType.FULL; case LEFT: return JoinRelType.LEFT; case RIGHT: return JoinRelType.RIGHT; default: throw Util.unexpected(joinType); } }
private static JoinRelType convertJoinType(JoinType joinType) { switch (joinType) { case COMMA: case INNER: case CROSS: return JoinRelType.INNER; case FULL: return JoinRelType.FULL; case LEFT: return JoinRelType.LEFT; case RIGHT: return JoinRelType.RIGHT; default: throw Util.unexpected(joinType); } }
private static JoinRelType convertJoinType(JoinType joinType) { switch (joinType) { case COMMA: case INNER: case CROSS: return JoinRelType.INNER; case FULL: return JoinRelType.FULL; case LEFT: return JoinRelType.LEFT; case RIGHT: return JoinRelType.RIGHT; default: throw Util.unexpected(joinType); } }
private static JoinRelType convertJoinType(JoinType joinType) { switch (joinType) { case COMMA: case INNER: case CROSS: return JoinRelType.INNER; case FULL: return JoinRelType.FULL; case LEFT: return JoinRelType.LEFT; case RIGHT: return JoinRelType.RIGHT; default: throw Util.unexpected(joinType); } }
private SqlTypeName toVar(RelDataType type) { final SqlTypeName sqlTypeName = type.getSqlTypeName(); switch (sqlTypeName) { case CHAR: return SqlTypeName.VARCHAR; case BINARY: return SqlTypeName.VARBINARY; case ANY: return SqlTypeName.ANY; default: throw Util.unexpected(sqlTypeName); } } };
private SqlTypeName toVar(RelDataType type) { final SqlTypeName sqlTypeName = type.getSqlTypeName(); switch (sqlTypeName) { case CHAR: return SqlTypeName.VARCHAR; case BINARY: return SqlTypeName.VARBINARY; case ANY: return SqlTypeName.ANY; default: throw Util.unexpected(sqlTypeName); } } };
public boolean matches(RelOptRuleCall call) { LogicalJoin join = call.rel(0); switch (join.getJoinType()) { case INNER: case LEFT: return true; case FULL: case RIGHT: return false; default: throw Util.unexpected(join.getJoinType()); } }
public boolean matches(RelOptRuleCall call) { LogicalJoin join = call.rel(0); switch (join.getJoinType()) { case INNER: case LEFT: return true; case FULL: case RIGHT: return false; default: throw Util.unexpected(join.getJoinType()); } }
/** * Returns the maximum value of an integral type, as a long value */ public static long maxValue(RelDataType type) { assert SqlTypeUtil.isIntType(type); switch (type.getSqlTypeName()) { case TINYINT: return Byte.MAX_VALUE; case SMALLINT: return Short.MAX_VALUE; case INTEGER: return Integer.MAX_VALUE; case BIGINT: return Long.MAX_VALUE; default: throw Util.unexpected(type.getSqlTypeName()); } }
private SqlTreeNode convertSetOp(SqlCall call) { final SqlTreeNode left = convertQueryRecursive(call.operand(0)); final SqlTreeNode right = convertQueryRecursive(call.operand(1)); switch (call.getKind()) { case UNION: return SqlTreeNodes.union(call.getParserPosition(), ImmutableList.of(left, right)); case INTERSECT: throw Util.unexpected(call.getKind()); case EXCEPT: throw Util.unexpected(call.getKind()); default: throw Util.unexpected(call.getKind()); } }
private Calendar timestampValue(RexLiteral timeLiteral) { switch (timeLiteral.getTypeName()) { case TIMESTAMP_WITH_LOCAL_TIME_ZONE: final TimeZone tz = TimeZone.getTimeZone(this.timeZone); return Util.calendar( SqlFunctions.timestampWithLocalTimeZoneToTimestamp( timeLiteral.getValueAs(Long.class), tz)); case TIMESTAMP: return Util.calendar(timeLiteral.getValueAs(Long.class)); case DATE: // Cast date to timestamp with local time zone final DateString d = timeLiteral.getValueAs(DateString.class); return Util.calendar(d.getMillisSinceEpoch()); default: throw Util.unexpected(timeLiteral.getTypeName()); } }
private Calendar timestampValue(RexLiteral timeLiteral) { switch (timeLiteral.getTypeName()) { case TIMESTAMP_WITH_LOCAL_TIME_ZONE: final TimeZone tz = TimeZone.getTimeZone(this.timeZone); return Util.calendar( SqlFunctions.timestampWithLocalTimeZoneToTimestamp( timeLiteral.getValueAs(Long.class), tz)); case TIMESTAMP: return Util.calendar(timeLiteral.getValueAs(Long.class)); case DATE: // Cast date to timestamp with local time zone final DateString d = timeLiteral.getValueAs(DateString.class); return Util.calendar(d.getMillisSinceEpoch()); default: throw Util.unexpected(timeLiteral.getTypeName()); } }
private Range<Calendar> ceilRange(TimeUnitRange timeUnit, SqlKind comparison, Calendar c) { final Calendar ceil = ceil(c, timeUnit); boolean boundary = ceil.equals(c); switch (comparison) { case EQUALS: return Range.openClosed(boundary ? decrement(ceil, timeUnit) : ceil, ceil); case LESS_THAN: return Range.atMost(decrement(ceil, timeUnit)); case LESS_THAN_OR_EQUAL: return boundary ? Range.atMost(ceil) : Range.atMost(decrement(ceil, timeUnit)); case GREATER_THAN: return boundary ? Range.greaterThan(ceil) : Range.greaterThan(decrement(ceil, timeUnit)); case GREATER_THAN_OR_EQUAL: return Range.greaterThan(decrement(ceil, timeUnit)); default: throw Util.unexpected(comparison); } }