use of org.hsqldb_voltpatches.result.Result in project voltdb by VoltDB.
the class LobManager method divideBlockAddresses.
void divideBlockAddresses(Session session, long lobID, int offset) {
ResultMetaData meta = divideLobPart.getParametersMetaData();
Object[] params = new Object[meta.getColumnCount()];
params[0] = Long.valueOf(lobID);
params[1] = Integer.valueOf(offset);
Result result = session.executeCompiledStatement(divideLobPart, params);
}
use of org.hsqldb_voltpatches.result.Result in project voltdb by VoltDB.
the class LobManager method createDuplicateLob.
public Result createDuplicateLob(Session session, long lobID) {
Object[] data = getLobHeader(session, lobID);
if (data == null) {
Result.newErrorResult(Error.error(ErrorCode.X_0F502));
}
long newLobID = getNewLobID(session);
Object[] params = new Object[data.length];
params[0] = Long.valueOf(newLobID);
params[1] = data[1];
params[2] = data[2];
params[3] = data[3];
Result result = session.executeCompiledStatement(createLob, params);
if (result.isError()) {
return result;
}
long length = ((Long) data[1]).longValue();
long byteLength = length;
int lobType = ((Integer) data[1]).intValue();
if (lobType == Types.SQL_CLOB) {
byteLength *= 2;
}
int newBlockCount = (int) byteLength / lobBlockSize;
if (byteLength % lobBlockSize != 0) {
newBlockCount++;
}
createBlockAddresses(session, newLobID, 0, newBlockCount);
// copy the contents
int[][] sourceBlocks = getBlockAddresses(session, lobID, 0, Integer.MAX_VALUE);
int[][] targetBlocks = getBlockAddresses(session, newLobID, 0, Integer.MAX_VALUE);
try {
copyBlockSet(sourceBlocks, targetBlocks);
} catch (HsqlException e) {
return Result.newErrorResult(e);
}
return ResultLob.newLobSetResponse(newLobID, length);
}
use of org.hsqldb_voltpatches.result.Result in project voltdb by VoltDB.
the class LobManager method truncate.
public Result truncate(Session session, long lobID, long offset) {
Object[] data = getLobHeader(session, lobID);
if (data == null) {
return Result.newErrorResult(Error.error(ErrorCode.X_0F502));
}
/** @todo 1.9.0 - double offset for clob */
long length = ((Long) data[1]).longValue();
int blockOffset = (int) (offset / lobBlockSize);
int blockLimit = (int) ((offset + length) / lobBlockSize);
int byteLimitOffset = (int) ((offset + length) % lobBlockSize);
if (byteLimitOffset != 0) {
blockLimit++;
}
ResultMetaData meta = deleteLobPart.getParametersMetaData();
Object[] params = new Object[meta.getColumnCount()];
params[0] = Long.valueOf(lobID);
params[1] = Integer.valueOf(blockOffset);
params[2] = Integer.valueOf(blockLimit);
params[3] = Long.valueOf(session.getTransactionTimestamp());
Result result = session.executeCompiledStatement(deleteLobPart, params);
setLength(session, lobID, offset);
return ResultLob.newLobTruncateResponse(lobID);
}
use of org.hsqldb_voltpatches.result.Result in project voltdb by VoltDB.
the class LobManager method deleteBlockAddresses.
void deleteBlockAddresses(Session session, long lobID, int offset, int count) {
ResultMetaData meta = deleteLobPart.getParametersMetaData();
Object[] params = new Object[meta.getColumnCount()];
params[0] = Long.valueOf(lobID);
params[1] = Integer.valueOf(offset);
params[2] = Integer.valueOf(count);
Result result = session.executeCompiledStatement(deleteLobPart, params);
}
use of org.hsqldb_voltpatches.result.Result in project voltdb by VoltDB.
the class Constraint method prepareCheckConstraint.
void prepareCheckConstraint(Session session, Table table, boolean checkValues) {
// to ensure no subselects etc. are in condition
check.checkValidCheckConstraint();
if (table == null) {
check.resolveTypes(session, null);
} else {
QuerySpecification s = Expression.getCheckSelect(session, table, check);
Result r = s.getResult(session, 1);
if (r.getNavigator().getSize() != 0) {
String[] info = new String[] { table.getName().name, "" };
throw Error.error(ErrorCode.X_23504, ErrorCode.CONSTRAINT, info);
}
rangeVariable = s.rangeVariables[0];
// removes reference to the Index object in range variable
rangeVariable.setForCheckConstraint();
}
if (check.getType() == OpTypes.NOT && check.getLeftNode().getType() == OpTypes.IS_NULL && check.getLeftNode().getLeftNode().getType() == OpTypes.COLUMN) {
notNullColumnIndex = check.getLeftNode().getLeftNode().getColumnIndex();
isNotNull = true;
}
}
Aggregations