summaryrefslogtreecommitdiff
path: root/storage/ndb/src/common/debugger/signaldata/ScanTab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/src/common/debugger/signaldata/ScanTab.cpp')
-rw-r--r--storage/ndb/src/common/debugger/signaldata/ScanTab.cpp156
1 files changed, 156 insertions, 0 deletions
diff --git a/storage/ndb/src/common/debugger/signaldata/ScanTab.cpp b/storage/ndb/src/common/debugger/signaldata/ScanTab.cpp
new file mode 100644
index 00000000000..e9c5ba6cc52
--- /dev/null
+++ b/storage/ndb/src/common/debugger/signaldata/ScanTab.cpp
@@ -0,0 +1,156 @@
+/* Copyright (C) 2003 MySQL AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+
+
+#include <BlockNumbers.h>
+#include <signaldata/ScanTab.hpp>
+#include <signaldata/ScanFrag.hpp>
+
+bool
+printSCANTABREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
+
+ const ScanTabReq * const sig = (ScanTabReq *) theData;
+
+ const UintR requestInfo = sig->requestInfo;
+
+ fprintf(output, " apiConnectPtr: H\'%.8x",
+ sig->apiConnectPtr);
+ fprintf(output, " requestInfo: H\'%.8x:\n", requestInfo);
+ fprintf(output, " Parallellism: %u, Batch: %u LockMode: %u Keyinfo: %u Holdlock: %u RangeScan: %u Descending: %u ReadCommitted: %u\n DistributionKeyFlag: %u",
+ sig->getParallelism(requestInfo),
+ sig->getScanBatch(requestInfo),
+ sig->getLockMode(requestInfo),
+ sig->getKeyinfoFlag(requestInfo),
+ sig->getHoldLockFlag(requestInfo),
+ sig->getRangeScanFlag(requestInfo),
+ sig->getDescendingFlag(requestInfo),
+ sig->getReadCommittedFlag(requestInfo),
+ sig->getDistributionKeyFlag(requestInfo));
+
+ if(sig->getDistributionKeyFlag(requestInfo))
+ fprintf(output, " DKey: %x", sig->distributionKey);
+
+ Uint32 keyLen = (sig->attrLenKeyLen >> 16);
+ Uint32 attrLen = (sig->attrLenKeyLen & 0xFFFF);
+ fprintf(output, " attrLen: %d, keyLen: %d tableId: %d, tableSchemaVer: %d\n",
+ attrLen, keyLen, sig->tableId, sig->tableSchemaVersion);
+
+ fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x) storedProcId: H\'%.8x\n",
+ sig->transId1, sig->transId2, sig->storedProcId);
+ fprintf(output, " batch_byte_size: %d, first_batch_size: %d\n",
+ sig->batch_byte_size, sig->first_batch_size);
+ return false;
+}
+
+bool
+printSCANTABCONF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
+
+ const ScanTabConf * const sig = (ScanTabConf *) theData;
+
+ const UintR requestInfo = sig->requestInfo;
+
+ fprintf(output, " apiConnectPtr: H\'%.8x\n",
+ sig->apiConnectPtr);
+ fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x)\n",
+ sig->transId1, sig->transId2);
+
+ fprintf(output, " requestInfo: Eod: %d OpCount: %d\n",
+ (requestInfo & ScanTabConf::EndOfData == ScanTabConf::EndOfData),
+ (requestInfo & (~ScanTabConf::EndOfData)));
+ size_t op_count= requestInfo & (~ScanTabConf::EndOfData);
+ if(op_count){
+ fprintf(output, " Operation(s) [api tc rows len]:\n");
+ ScanTabConf::OpData * op = (ScanTabConf::OpData*)
+ (theData + ScanTabConf::SignalLength);
+ for(size_t i = 0; i<op_count; i++){
+ if(op->info != ScanTabConf::EndOfData)
+ fprintf(output, " [0x%x 0x%x %d %d]",
+ op->apiPtrI, op->tcPtrI,
+ ScanTabConf::getRows(op->info),
+ ScanTabConf::getLength(op->info));
+ else
+ fprintf(output, " [0x%x 0x%x eod]",
+ op->apiPtrI, op->tcPtrI);
+
+ op++;
+ }
+ fprintf(output, "\n");
+ }
+ return false;
+}
+
+bool
+printSCANTABREF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
+
+ const ScanTabRef * const sig = (ScanTabRef *) theData;
+
+ fprintf(output, " apiConnectPtr: H\'%.8x\n",
+ sig->apiConnectPtr);
+
+ fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x)\n",
+ sig->transId1, sig->transId2);
+
+ fprintf(output, " Errorcode: %u\n", sig->errorCode);
+
+ fprintf(output, " closeNeeded: %u\n", sig->closeNeeded);
+ return false;
+}
+
+
+bool
+printSCANFRAGNEXTREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
+ const ScanFragNextReq * const sig = (ScanFragNextReq *) theData;
+
+ fprintf(output, " senderData: H\'%.8x\n",
+ sig->senderData);
+
+ fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x)\n",
+ sig->transId1, sig->transId2);
+
+ fprintf(output, " Close scan: %u\n", sig->closeFlag);
+
+ return false;
+}
+
+bool
+printSCANNEXTREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
+
+ if(receiverBlockNo == DBTC){
+ const ScanNextReq * const sig = (ScanNextReq *) theData;
+
+ fprintf(output, " apiConnectPtr: H\'%.8x\n",
+ sig->apiConnectPtr);
+
+ fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x) ",
+ sig->transId1, sig->transId2);
+
+ fprintf(output, " Stop this scan: %u\n", sig->stopScan);
+
+ const Uint32 * ops = theData + ScanNextReq::SignalLength;
+ if(len > ScanNextReq::SignalLength){
+ fprintf(output, " tcFragPtr(s): ");
+ for(size_t i = ScanNextReq::SignalLength; i<len; i++)
+ fprintf(output, " 0x%x", * ops++);
+ fprintf(output, "\n");
+ }
+ }
+ if (receiverBlockNo == DBLQH){
+ return printSCANFRAGNEXTREQ(output, theData, len, receiverBlockNo);
+ }
+ return false;
+}
+