@Override
public void setObject(OptimizedElementArray row, int columnPosition, Object o)
throws SQLException {
if (o == null) {
final int index = columnPosition - 1;
freeBlob(row, index);
row.setNull(index);
} else if (o instanceof byte[]) {
setBytes(row, columnPosition, (byte[])o);
} else if (o instanceof Blob) {
Blob blob = (Blob)o;
long blobLen = blob.length();
if (blobLen > Integer.MAX_VALUE) {
throw ThriftExceptionUtil.newSQLException(
SQLState.BLOB_LENGTH_TOO_LONG, null, blobLen);
}
setBytes(row, columnPosition, blob.getBytes(1, (int)blobLen));
} else if (o instanceof String) {
setString(row, columnPosition, (String)o);
} else {
throw newTypeSetConversionException(
o.getClass().getName(), "Blob", columnPosition);
}
}
};