/** * Get or create a java object value for the given byte array. * Do not clone the data. * * @param javaObject the object * @param b the byte array * @return the value */ public static ValueJavaObject getNoCopy(Object javaObject, byte[] b) { if (b != null && b.length == 0) { return EMPTY; } ValueJavaObject obj; if (SysProperties.SERIALIZE_JAVA_OBJECT) { if (b == null) { b = Utils.serialize(javaObject); } obj = new ValueJavaObject(b); } else { obj = new NotSerialized(javaObject, b); } if (b == null || b.length > SysProperties.OBJECT_CACHE_MAX_PER_ELEMENT_SIZE) { return obj; } return (ValueJavaObject) Value.cache(obj); }
@Override public void set(PreparedStatement prep, int parameterIndex) throws SQLException { Object obj = Utils.deserialize(getBytesNoCopy()); prep.setObject(parameterIndex, obj, Types.JAVA_OBJECT); }
@Override public int getMemory() { if (value == null) { return DataType.getDataType(getType()).memory; } int mem = super.getMemory(); if (javaObject != null) { mem *= 2; } return mem; }
} else { return ValueJavaObject.getNoCopy(null, b);
return ValueBytes.getNoCopy(readBytes()); case Value.JAVA_OBJECT: return ValueJavaObject.getNoCopy(null, readBytes()); case Value.UUID: return ValueUuid.get(readLong(), readLong());