use of org.hsqldb_voltpatches.lib.ReaderInputStream in project voltdb by VoltDB.
the class SessionData method allocateLobForResult.
/**
* allocate storage for a new LOB
*/
public void allocateLobForResult(ResultLob result, InputStream inputStream) {
long resultLobId = result.getLobID();
CountdownInputStream countStream;
switch(result.getSubType()) {
case ResultLob.LobResultTypes.REQUEST_CREATE_BYTES:
{
long blobId;
long blobLength = result.getBlockLength();
if (inputStream == null) {
blobId = resultLobId;
inputStream = result.getInputStream();
} else {
BlobData blob = session.createBlob(blobLength);
blobId = blob.getId();
resultLobs.put(resultLobId, blobId);
}
countStream = new CountdownInputStream(inputStream);
countStream.setCount(blobLength);
database.lobManager.setBytesForNewBlob(blobId, countStream, result.getBlockLength());
break;
}
case ResultLob.LobResultTypes.REQUEST_CREATE_CHARS:
{
long clobId;
long clobLength = result.getBlockLength();
if (inputStream == null) {
clobId = resultLobId;
if (result.getReader() != null) {
inputStream = new ReaderInputStream(result.getReader());
} else {
inputStream = result.getInputStream();
}
} else {
ClobData clob = session.createClob(clobLength);
clobId = clob.getId();
resultLobs.put(resultLobId, clobId);
}
countStream = new CountdownInputStream(inputStream);
countStream.setCount(clobLength * 2);
database.lobManager.setCharsForNewClob(clobId, countStream, result.getBlockLength());
break;
}
}
}
Aggregations