18 package com.mysql.clusterj.tie;
20 import com.mysql.ndbjtie.ndbapi.NdbErrorConst;
21 import com.mysql.ndbjtie.ndbapi.NdbOperation;
22 import com.mysql.ndbjtie.ndbapi.NdbScanFilter;
23 import com.mysql.ndbjtie.ndbapi.NdbScanOperation;
25 import com.mysql.clusterj.core.spi.QueryExecutionContext;
26 import com.mysql.clusterj.core.store.ResultData;
27 import com.mysql.clusterj.core.store.ScanFilter;
28 import com.mysql.clusterj.core.store.ScanOperation;
29 import com.mysql.clusterj.core.store.Table;
34 class ScanOperationImpl
extends OperationImpl implements ScanOperation {
39 ClusterTransactionImpl clusterTransaction) {
40 super(storeTable, operation, clusterTransaction);
41 this.ndbScanOperation = operation;
45 ndbScanOperation.close(
true,
true);
48 public void deleteCurrentTuple() {
49 int returnCode = ndbScanOperation.deleteCurrentTuple();
50 handleError(returnCode, ndbScanOperation);
53 public ScanFilter getScanFilter(QueryExecutionContext context) {
55 handleError(ndbScanFilter, ndbScanOperation);
56 ScanFilter scanFilter =
new ScanFilterImpl(ndbScanFilter);
57 context.addFilter(scanFilter);
61 public int nextResult(
boolean fetch) {
62 int result = ndbScanOperation.nextResult(fetch,
false);
63 clusterTransaction.handleError(result);
68 public ResultData resultData() {
69 ResultData result =
new ScanResultDataImpl(ndbScanOperation, storeColumns,
70 maximumColumnId, bufferSize,
offsets, lengths, maximumColumnLength, bufferManager);
71 clusterTransaction.executeNoCommit(
false,
true);
76 protected void handleError(
int returnCode,
NdbOperation ndbOperation) {
77 if (returnCode == 0) {
81 NdbErrorConst ndbError = ndbOperation.
getNdbError();
82 if (ndbError != null) {
84 Utility.throwError(returnCode, ndbError);
87 clusterTransaction.handleError(returnCode);