public boolean canCastFrom( SqlTypeName to, SqlTypeName from, boolean coerce) { assert (null != to); assert (null != from); Map<SqlTypeName, Set<SqlTypeName>> ruleset = coerce ? coerceRules : rules; if (to.equals(SqlTypeName.NULL)) { return false; } else if (from.equals(SqlTypeName.NULL)) { return true; } Set<SqlTypeName> rule = ruleset.get(to); if (null == rule) { // if you hit this assert, see the constructor of this class on how // to add new rule throw Util.newInternal( "No assign rules for " + to + " defined"); } return rule.contains(from); }
public boolean canCastFrom( SqlTypeName to, SqlTypeName from, boolean coerce) { assert to != null; assert from != null; Map<SqlTypeName, Set<SqlTypeName>> ruleset = coerce ? coerceRules : rules; if (to.equals(SqlTypeName.NULL)) { return false; } else if (from.equals(SqlTypeName.NULL)) { return true; } Set<SqlTypeName> rule = ruleset.get(to); if (null == rule) { // if you hit this assert, see the constructor of this class on how // to add new rule throw Util.newInternal( "No assign rules for " + to + " defined"); } return rule.contains(from); }
public RelDataType inferReturnType( SqlOperatorBinding opBinding) { // Here we know all the operands have the same type, // which has a size (precision), but not a scale. RelDataType ret = opBinding.getOperandType(0); SqlTypeName typeName = ret.getSqlTypeName(); assert typeName.allowsPrecNoScale() : "LiteralChain has impossible operand type " + typeName; int size = 0; for (RelDataType type : opBinding.collectOperandTypes()) { size += type.getPrecision(); assert (type.getSqlTypeName().equals(typeName)); } return opBinding.getTypeFactory().createSqlType(typeName, size); }
public RelDataType inferReturnType( SqlOperatorBinding opBinding) { // Here we know all the operands have the same type, // which has a size (precision), but not a scale. RelDataType ret = opBinding.getOperandType(0); SqlTypeName typeName = ret.getSqlTypeName(); assert typeName.allowsPrecNoScale() : "LiteralChain has impossible operand type " + typeName; int size = 0; for (RelDataType type : opBinding.collectOperandTypes()) { size += type.getPrecision(); assert type.getSqlTypeName().equals(typeName); } return opBinding.getTypeFactory().createSqlType(typeName, size); }