protected List<Value> enumRange(Value firstV, Value lastV) { if (isNull(firstV) || isNull(lastV)) { return null; } if (firstV.getType() != lastV.getType()) { return null; } int type = firstV.getType(); switch (type) { case Value.BYTE: case Value.INT: case Value.LONG: case Value.SHORT: if (lastV.subtract(firstV).getLong() > 200) { return null; } List<Value> enumValues = New.arrayList(10); Value enumValue = firstV; CompareMode compareMode = CompareMode.getInstance(null, 0); while (enumValue.compareTo(lastV, compareMode) <= 0) { enumValues.add(enumValue); Value increase = ValueLong.get(1).convertTo(enumValue.getType()); enumValue = enumValue.add(increase); } return enumValues; default: return null; } }
public Reader getReader() { return new StringReader(getString()); }
public Boolean getBoolean() { return convertTo(Value.BOOLEAN).getBoolean(); }
if (getType() == targetType) { return this; switch (getType()) { case BYTE: case SHORT: case DOUBLE: case FLOAT: return ValueBoolean.get(getSignum() != 0); case TIME: case DATE: case UUID: throw DbException.get( ErrorCode.DATA_CONVERSION_ERROR_1, getString()); switch (getType()) { case BOOLEAN: return ValueByte.get(getBoolean().booleanValue() ? (byte) 1 : (byte) 0); case SHORT: return ValueByte.get(convertToByte(getShort())); case INT: return ValueByte.get(convertToByte(getInt())); case LONG: return ValueByte.get(convertToByte(getLong())); case DECIMAL: return ValueByte.get(convertToByte(convertToLong(getBigDecimal()))); case DOUBLE:
switch (info.type) { case ABS: result = v0.getSignum() > 0 ? v0 : v0.negate(); break; case ACOS: result = ValueDouble.get(Math.acos(v0.getDouble())); break; case ASIN: result = ValueDouble.get(Math.asin(v0.getDouble())); break; case ATAN: result = ValueDouble.get(Math.atan(v0.getDouble())); break; case CEILING: result = ValueDouble.get(Math.ceil(v0.getDouble())); break; case COS: result = ValueDouble.get(Math.cos(v0.getDouble())); break; case COSH: result = ValueDouble.get(Math.cosh(v0.getDouble())); break; case COT: { double d = Math.tan(v0.getDouble()); if (d == 0.0) { throw DbException.get(ErrorCode.DIVISION_BY_ZERO_1, getSQL()); result = ValueDouble.get(Math.toDegrees(v0.getDouble())); break;
case ATAN2: result = ValueDouble.get( Math.atan2(v0.getDouble(), v1.getDouble())); break; case BITAND: result = ValueLong.get(v0.getLong() & v1.getLong()); break; case BITOR: result = ValueLong.get(v0.getLong() | v1.getLong()); break; case BITXOR: result = ValueLong.get(v0.getLong() ^ v1.getLong()); break; case MOD: { long x = v1.getLong(); if (x == 0) { throw DbException.get(ErrorCode.DIVISION_BY_ZERO_1, getSQL()); result = ValueLong.get(v0.getLong() % x); break; v0.getDouble(), v1.getDouble())); break; case ROUND: { double f = v1 == null ? 1. : Math.pow(10., v1.getDouble()); result = ValueDouble.get(Math.round(v0.getDouble() * f) / f); break; if (v0.getType() == Value.TIMESTAMP) {
private byte[] toBytes(Value value) { byte[] bytes; switch (value.getType()) { case Value.DECIMAL: case Value.DOUBLE: long valueLong = value.getLong(); bytes = ValueLong.get(valueLong).getBytes(); break; case Value.TIME: case Value.TIMESTAMP: ValueTimestamp v = (ValueTimestamp) value.convertTo(Value.TIMESTAMP); long toLong = v.getTimestamp().getTime(); bytes = ValueLong.get(toLong).getBytes(); case Value.STRING_FIXED: case Value.STRING_IGNORECASE: String string = value.getString(); bytes = string.getBytes(); default: bytes = value.getBytes();
Parameter p; if (indexed && currentTokenType == VALUE && currentValue.getType() == Value.INT) { if (indexedParameterList == null) { if (parameters == null) { int index = currentValue.getInt() - 1; if (index < 0 || index >= Constants.MAX_PARAMETER_INDEX) { throw DbException.getInvalidValueException( r = new SequenceValue(sequence); } else if (currentTokenType == VALUE && currentValue.getType() == Value.STRING) { if (equalsToken("DATE", name) || equalsToken("D", name)) { String date = currentValue.getString(); read(); r = ValueExpression.get(ValueDate.parse(date)); } else if (equalsToken("TIME", name) || equalsToken("T", name)) { String time = currentValue.getString(); read(); r = ValueExpression.get(ValueTime.parse(time)); } else if (equalsToken("TIMESTAMP", name) || equalsToken("TS", name)) { String timestamp = currentValue.getString(); read(); r = ValueExpression
if (beginValue.getType() != endValue.getType()) { throw new RuleEvaluateException("Type is not consistent"); int type = beginValue.getType(); switch (type) { case Value.BYTE: case Value.INT: case Value.LONG: vBegin = beginValue.getLong(); vEnd = endValue.getLong(); break; case Value.FLOAT: case Value.DECIMAL: case Value.DOUBLE: double aDouble = beginValue.getDouble(); double bDouble = endValue.getDouble(); vBegin = Math.round(aDouble); vEnd = Math.round(bDouble); case Value.TIME: case Value.TIMESTAMP: vBegin = beginValue.getLong(); vEnd = endValue.getLong(); break; case Value.STRING: case Value.STRING_FIXED: case Value.STRING_IGNORECASE: String str1 = beginValue.getString();
case Aggregate.SUM: if (value == null) { value = v.convertTo(dataType); } else { v = v.convertTo(value.getType()); value = value.add(v); value = v.convertTo(DataType.getAddProofType(dataType)); } else { v = v.convertTo(value.getType()); value = value.add(v); double x = v.getDouble(); if (count == 1) { mean = x; v = v.convertTo(Value.BOOLEAN); if (value == null) { value = v; } else { value = ValueBoolean.get(value.getBoolean().booleanValue() && v.getBoolean().booleanValue()); v = v.convertTo(Value.BOOLEAN); if (value == null) { value = v; } else { value = ValueBoolean.get(value.getBoolean().booleanValue() || v.getBoolean().booleanValue());
private int getIntValue() { expression = expression.optimize(session); return expression.getValue(session).getInt(); }
private static long length(Value v) { switch (v.getType()) { case Value.BLOB: case Value.CLOB: case Value.BYTES: case Value.JAVA_OBJECT: return v.getPrecision(); default: return v.getString().length(); } }
@Override public void setValue(int i, Value v) { if (i == -1) { this.key = v.getLong(); } else { data[i] = v; } }
private static Value divide(Value a, long by) { if (by == 0) { return ValueNull.INSTANCE; } int type = Value.getHigherOrder(a.getType(), Value.LONG); Value b = ValueLong.get(by).convertTo(type); a = a.convertTo(type).divide(b); return a; }
@Override protected int compareSecure(Value v, CompareMode mode) { if (type == Value.CLOB) { return Integer.signum(getString().compareTo(v.getString())); } byte[] v2 = v.getBytesNoCopy(); return Utils.compareNotNullSigned(getBytes(), v2); }
/** * Convert an object to the default Java object for the given SQL type. For * example, LOB objects are converted to java.sql.Clob / java.sql.Blob. * * @param v the value * @return the object */ Object convertToDefaultObject(Value v) { Object o; switch (v.getType()) { case Value.CLOB: { int id = getNextId(TraceObject.CLOB); o = new JdbcClob(this, v, id); break; } case Value.BLOB: { int id = getNextId(TraceObject.BLOB); o = new JdbcBlob(this, v, id); break; } case Value.JAVA_OBJECT: if (SysProperties.serializeJavaObject) { o = JdbcUtils.deserialize(v.getBytesNoCopy()); break; } default: o = v.getObject(); } return o; }
@Override protected int compareSecure(Value v, CompareMode mode) { Object o1 = getObject(); Object o2 = v.getObject(); boolean o1Comparable = o1 instanceof Comparable; boolean o2Comparable = o2 instanceof Comparable; if (o1Comparable && o2Comparable && Utils.haveCommonComparableSuperclass(o1.getClass(), o2.getClass())) { @SuppressWarnings("unchecked") Comparable<Object> c1 = (Comparable<Object>) o1; return c1.compareTo(o2); } // group by types if (o1.getClass() != o2.getClass()) { if (o1Comparable != o2Comparable) { return o1Comparable ? -1 : 1; } return o1.getClass().getName().compareTo(o2.getClass().getName()); } // compare hash codes int h1 = hashCode(); int h2 = v.hashCode(); if (h1 == h2) { if (o1.equals(o2)) { return 0; } return Utils.compareNotNullSigned(getBytesNoCopy(), v.getBytesNoCopy()); } return h1 > h2 ? 1 : -1; }