1
/* Copyright (C) 2003 MySQL AB
3
This program is free software; you can redistribute it and/or modify
4
it under the terms of the GNU General Public License as published by
5
the Free Software Foundation; version 2 of the License.
7
This program is distributed in the hope that it will be useful,
8
but WITHOUT ANY WARRANTY; without even the implied warranty of
9
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
GNU General Public License for more details.
12
You should have received a copy of the GNU General Public License
13
along with this program; if not, write to the Free Software
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
18
#include <BlockNumbers.h>
19
#include <signaldata/ScanTab.hpp>
20
#include <signaldata/ScanFrag.hpp>
23
printSCANTABREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
25
const ScanTabReq * const sig = (ScanTabReq *) theData;
27
const UintR requestInfo = sig->requestInfo;
29
fprintf(output, " apiConnectPtr: H\'%.8x",
31
fprintf(output, " requestInfo: H\'%.8x:\n", requestInfo);
32
fprintf(output, " Parallellism: %u Batch: %u LockMode: %u Keyinfo: %u Holdlock: %u RangeScan: %u Descending: %u TupScan: %u\n ReadCommitted: %u DistributionKeyFlag: %u NoDisk: %u",
33
sig->getParallelism(requestInfo),
34
sig->getScanBatch(requestInfo),
35
sig->getLockMode(requestInfo),
36
sig->getKeyinfoFlag(requestInfo),
37
sig->getHoldLockFlag(requestInfo),
38
sig->getRangeScanFlag(requestInfo),
39
sig->getDescendingFlag(requestInfo),
40
sig->getTupScanFlag(requestInfo),
41
sig->getReadCommittedFlag(requestInfo),
42
sig->getDistributionKeyFlag(requestInfo),
43
sig->getNoDiskFlag(requestInfo));
45
if(sig->getDistributionKeyFlag(requestInfo))
46
fprintf(output, " DKey: %x", sig->distributionKey);
48
Uint32 keyLen = (sig->attrLenKeyLen >> 16);
49
Uint32 attrLen = (sig->attrLenKeyLen & 0xFFFF);
50
fprintf(output, " attrLen: %d, keyLen: %d tableId: %d, tableSchemaVer: %d\n",
51
attrLen, keyLen, sig->tableId, sig->tableSchemaVersion);
53
fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x) storedProcId: H\'%.8x\n",
54
sig->transId1, sig->transId2, sig->storedProcId);
55
fprintf(output, " batch_byte_size: %d, first_batch_size: %d\n",
56
sig->batch_byte_size, sig->first_batch_size);
61
printSCANTABCONF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
63
const ScanTabConf * const sig = (ScanTabConf *) theData;
65
const UintR requestInfo = sig->requestInfo;
67
fprintf(output, " apiConnectPtr: H\'%.8x\n",
69
fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x)\n",
70
sig->transId1, sig->transId2);
72
fprintf(output, " requestInfo: Eod: %d OpCount: %d\n",
73
(requestInfo & ScanTabConf::EndOfData) == ScanTabConf::EndOfData,
74
(requestInfo & (~ScanTabConf::EndOfData)));
75
size_t op_count= requestInfo & (~ScanTabConf::EndOfData);
77
fprintf(output, " Operation(s) [api tc rows len]:\n");
78
ScanTabConf::OpData * op = (ScanTabConf::OpData*)
79
(theData + ScanTabConf::SignalLength);
80
for(size_t i = 0; i<op_count; i++){
81
if(op->info != ScanTabConf::EndOfData)
82
fprintf(output, " [0x%x 0x%x %d %d]",
83
op->apiPtrI, op->tcPtrI,
84
ScanTabConf::getRows(op->info),
85
ScanTabConf::getLength(op->info));
87
fprintf(output, " [0x%x 0x%x eod]",
88
op->apiPtrI, op->tcPtrI);
92
fprintf(output, "\n");
98
printSCANTABREF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
100
const ScanTabRef * const sig = (ScanTabRef *) theData;
102
fprintf(output, " apiConnectPtr: H\'%.8x\n",
105
fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x)\n",
106
sig->transId1, sig->transId2);
108
fprintf(output, " Errorcode: %u\n", sig->errorCode);
110
fprintf(output, " closeNeeded: %u\n", sig->closeNeeded);
116
printSCANFRAGNEXTREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
117
const ScanFragNextReq * const sig = (ScanFragNextReq *) theData;
119
fprintf(output, " senderData: H\'%.8x\n",
122
fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x)\n",
123
sig->transId1, sig->transId2);
125
fprintf(output, " Close scan: %u\n", sig->closeFlag);
131
printSCANNEXTREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
133
if(receiverBlockNo == DBTC){
134
const ScanNextReq * const sig = (ScanNextReq *) theData;
136
fprintf(output, " apiConnectPtr: H\'%.8x\n",
139
fprintf(output, " transId(1, 2): (H\'%.8x, H\'%.8x) ",
140
sig->transId1, sig->transId2);
142
fprintf(output, " Stop this scan: %u\n", sig->stopScan);
144
const Uint32 * ops = theData + ScanNextReq::SignalLength;
145
if(len > ScanNextReq::SignalLength){
146
fprintf(output, " tcFragPtr(s): ");
147
for(size_t i = ScanNextReq::SignalLength; i<len; i++)
148
fprintf(output, " 0x%x", * ops++);
149
fprintf(output, "\n");
152
if (receiverBlockNo == DBLQH){
153
return printSCANFRAGNEXTREQ(output, theData, len, receiverBlockNo);