19 #include <ndb_global.h>
23 #include <signaldata/ScanTab.hpp>
26 #include <NdbQueryOperationImpl.hpp>
36 NdbTransaction::receiveSCAN_TABREF(
const NdbApiSignal* aSignal){
39 if (checkState_TransId(&ref->transId1)) {
41 theScanningOp->execCLOSE_SCAN_REP();
42 theScanningOp->setErrorCode(ref->errorCode);
43 if(!ref->closeNeeded){
51 theScanningOp->m_conf_receivers_count++;
52 theScanningOp->m_conf_receivers[0] = theScanningOp->m_receivers[0];
53 theScanningOp->m_conf_receivers[0]->m_tcPtrI = ~0;
56 assert (m_scanningQuery);
58 if(!ref->closeNeeded){
64 #ifdef NDB_NO_DROPPED_SIGNAL
86 NdbTransaction::receiveSCAN_TABCONF(
const NdbApiSignal* aSignal,
87 const Uint32 * ops, Uint32 len)
91 if (checkState_TransId(&conf->transId1)) {
96 if (conf->requestInfo == ScanTabConf::EndOfData) {
98 theScanningOp->execCLOSE_SCAN_REP();
100 assert (m_scanningQuery);
107 Uint32 words_per_op = theScanningOp ? 3 : 4;
108 for(Uint32
i = 0;
i<len;
i += words_per_op)
110 Uint32 ptrI = * ops++;
111 Uint32 tcPtrI = * ops++;
114 if (words_per_op == 3)
116 Uint32 info = * ops++;
117 opCount = ScanTabConf::getRows(info);
118 totalLen = ScanTabConf::getLength(info);
126 void * tPtr = theNdb->int2void(ptrI);
129 if (tOp && tOp->checkMagicNumber())
132 if (tOp->getType()==NdbReceiver::NDB_QUERY_OPERATION)
135 assert (&queryOp->getQuery() == m_scanningQuery);
142 if (tcPtrI == RNIL && opCount == 0)
147 else if (tOp->execSCANOPCONF(tcPtrI, totalLen, opCount))
157 #ifdef NDB_NO_DROPPED_SIGNAL