case Value.BYTES: case Value.JAVA_OBJECT: if (shortVal.getType() == Value.NULL || v2.getType() == Value.NULL) return true; if (c == 0 && shortVal.getType() != Value.NULL && v2.getType() != Value.NULL) return false; l1 = shortVal.getBytes().length; l2 = v2.getBytes().length; l1 = shortVal.getString().length(); l2 = v2.getString().length();
@Override public Object getObject() { int len = values.length; Object[] list = (Object[]) Array.newInstance(componentType, len); for (int i = 0; i < len; i++) { final Value value = values[i]; if (!SysProperties.OLD_RESULT_SET_GET_OBJECT) { final int type = value.getType(); if (type == Value.BYTE || type == Value.SHORT) { list[i] = value.getInt(); continue; } } list[i] = value.getObject(); } return list; }
if (val.getType() == Value.NULL) { PageUtils.putByte(pageAddr, off, (byte)Value.NULL); return 1; if (val.getType() != type) throw new UnsupportedOperationException("value type doesn't match"); PageUtils.putByte(pageAddr, off, (byte)val.getType()); PageUtils.putByte(pageAddr, off + 1, (byte)(val.getBoolean() ? 1 : 0)); return size + 1; PageUtils.putByte(pageAddr, off, (byte)val.getType()); PageUtils.putByte(pageAddr, off + 1, val.getByte()); return size + 1; PageUtils.putByte(pageAddr, off, (byte)val.getType()); PageUtils.putShort(pageAddr, off + 1, val.getShort()); return size + 1; PageUtils.putByte(pageAddr, off, (byte)val.getType()); PageUtils.putInt(pageAddr, off + 1, val.getInt()); return size + 1; PageUtils.putByte(pageAddr, off, (byte)val.getType()); PageUtils.putLong(pageAddr, off + 1, val.getLong()); return size + 1; PageUtils.putByte(pageAddr, off, (byte)val.getType()); PageUtils.putInt(pageAddr, off + 1, Float.floatToIntBits(val.getFloat()));
return type.cast(value.getBigDecimal()); } else if (type == BigInteger.class) { return type.cast(value.getBigDecimal().toBigInteger()); } else if (type == String.class) { return type.cast(value.getString()); } else if (type == Boolean.class) { return type.cast(value.getBoolean()); } else if (type == Byte.class) { return type.cast(value.getByte()); } else if (type == Short.class) { return type.cast(value.getShort()); } else if (type == Integer.class) { return type.cast(value.getInt()); } else if (type == Long.class) { return type.cast(value.getLong()); } else if (type == Float.class) { return type.cast(value.getFloat()); } else if (type == Double.class) { return type.cast(value.getDouble()); } else if (type == Date.class) { return type.cast(value.getDate()); } else if (type == Time.class) { return type.cast(value.getTime()); } else if (type == Timestamp.class) { return type.cast(value.getTimestamp()); } else if (type == java.util.Date.class) { return type.cast(new java.util.Date(value.getTimestamp().getTime())); } else if (type == Calendar.class) { Calendar calendar = DateTimeUtils.createGregorianCalendar();
case ATAN2: result = ValueDouble.get( Math.atan2(v0.getDouble(), v1.getDouble())); break; case BITAND: result = ValueLong.get(v0.getLong() & v1.getLong()); break; case BITGET: result = ValueBoolean.get((v0.getLong() & (1L << v1.getInt())) != 0); 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());
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 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() && v.getBoolean()); v = v.convertTo(Value.BOOLEAN); if (value == null) { value = v; } else { value = ValueBoolean.get(value.getBoolean() || v.getBoolean()); value = v.convertTo(dataType);
protected String getFileName() { if (fileNameExpr != null && fileName == null) { fileName = fileNameExpr.optimize(session).getValue(session).getString(); if (fileName == null || fileName.trim().length() == 0) { fileName = "script.sql"; } fileName = SysProperties.getScriptDirectory() + fileName; } return fileName; }
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(); } }
/** * Compare two values with the current comparison mode. The values may be of * different type. * * @param a the first value * @param b the second value * @return 0 if both values are equal, -1 if the first value is smaller, and * 1 otherwise */ public int compareTypeSafe(Value a, Value b) { if (a == b) { return 0; } int dataType = Value.getHigherOrder(a.getType(), b.getType()); a = a.convertTo(dataType); b = b.convertTo(dataType); return a.compareTypeSafe(b, compareMode); }
@Override protected int compareSecure(final Value v, final CompareMode mode) { return Integer.compare(getInt(), v.getInt()); }
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 public void setValue(int i, Value v) { if (i == -1) { this.key = v.getLong(); } else { data[i] = v; } }