TcIndx.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include <signaldata/TcIndx.hpp>
  14. #include <signaldata/TcKeyReq.hpp>
  15. #include <BlockNumbers.h>
  16. bool
  17. printTCINDXREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
  18.   
  19.   const TcIndxReq * const sig = (TcIndxReq *) theData;
  20.   
  21.   UintR requestInfo = sig->requestInfo;
  22.   UintR scanInfo    = sig->scanInfo;
  23.   fprintf(output, " apiConnectPtr: H'%.8x, senderData: H'%.8xn", 
  24.   sig->apiConnectPtr, sig->senderData);
  25.  
  26.   fprintf(output, " Operation: %s, Flags: ", 
  27.   sig->getOperationType(requestInfo) == ZREAD    ? "Read" :
  28.   sig->getOperationType(requestInfo) == ZREAD_EX ? "Read-Ex" :
  29.   sig->getOperationType(requestInfo) == ZUPDATE  ? "Update" :
  30.   sig->getOperationType(requestInfo) == ZINSERT  ? "Insert" :
  31.   sig->getOperationType(requestInfo) == ZDELETE  ? "Delete" :
  32.   sig->getOperationType(requestInfo) == ZWRITE   ? "Write" :
  33.   "Unknown");
  34.   {
  35.     if(sig->getDirtyFlag(requestInfo)){
  36.       fprintf(output, "Dirty ");
  37.     }    
  38.     if(sig->getStartFlag(requestInfo)){
  39.       fprintf(output, "Start ");
  40.     }    
  41.     if (TcKeyReq::getExecuteFlag(sig->requestInfo)) {
  42.       fprintf(output, "Execute ");
  43.     }
  44.     if(sig->getCommitFlag(requestInfo)){
  45.       fprintf(output, "Commit, Type = ");
  46.       UintR TcommitType = sig->getCommitType(requestInfo);
  47.       if (TcommitType == TcIndxReq::CommitIfFailFree) {
  48. fprintf(output, "FailFree ");
  49.       } else if (TcommitType == TcIndxReq::TryCommit) {
  50.         fprintf(output, "TryCommit ");
  51.       } else if (TcommitType == TcIndxReq::CommitAsMuchAsPossible) {
  52. fprintf(output, "Always ");
  53.       }//if
  54.     }    
  55.     if(sig->getSimpleFlag(requestInfo)){
  56.       fprintf(output, "Simple ");
  57.     }   
  58.     if(sig->getInterpretedFlag(requestInfo)){
  59.       fprintf(output, "Interpreted ");
  60.     }
  61.     if(sig->getDistributionGroupFlag(requestInfo)){
  62.       fprintf(output, "DGroup = %d ", sig->distrGroupHashValue);
  63.     }
  64.     if(sig->getDistributionKeyFlag(sig->requestInfo)){
  65.       fprintf(output, "DKey = %d ", sig->distributionKeySize);
  66.     }
  67.     fprintf(output, "n");
  68.   }
  69.   
  70.   const int indexLen     = sig->getIndexLength(requestInfo);
  71.   const int attrInThis = sig->getAIInTcIndxReq(requestInfo);
  72.   fprintf(output, 
  73.   " indexLen: %d, attrLen: %d, AI in this: %d, indexId: %d, "
  74.   "indexSchemaVer: %d, API Ver: %dn",
  75.   indexLen, sig->attrLen, attrInThis, 
  76.   sig->indexId, sig->indexSchemaVersion, sig->getAPIVersion(scanInfo));
  77.     
  78.   fprintf(output, " transId(1, 2): (H'%.8x, H'%.8x)n -- Variable Data --n", 
  79.   sig->transId1, sig->transId2);
  80.   
  81.   Uint32 restLen = (len - 8);
  82.   const Uint32 * rest = &sig->scanInfo;
  83.   while(restLen >= 7){
  84.     fprintf(output, 
  85.     " H'%.8x H'%.8x H'%.8x H'%.8x H'%.8x H'%.8x H'%.8xn",
  86.     rest[0], rest[1], rest[2], rest[3], 
  87.     rest[4], rest[5], rest[6]);
  88.     restLen -= 7;
  89.     rest += 7;
  90.   }
  91.   if(restLen > 0){
  92.     for(Uint32 i = 0; i<restLen; i++)
  93.       fprintf(output, " H'%.8x", rest[i]);
  94.     fprintf(output, "n");
  95.   }
  96.   
  97.   return true;
  98. }
  99. bool
  100. printTCINDXCONF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
  101.   
  102.   if (receiverBlockNo == API_PACKED) {
  103.     fprintf(output, "Signal data: ");
  104.     Uint32 i = 0;
  105.     while (i < len)
  106.       fprintf(output, "H'%.8x ", theData[i++]);
  107.     fprintf(output,"n");
  108.   }
  109.   else {
  110.     const TcIndxConf * const sig = (TcIndxConf *) theData;
  111.     
  112.     fprintf(output, "Signal data: ");
  113.     Uint32 i = 0;
  114.     Uint32 confInfo = sig->confInfo;
  115.     Uint32 noOfOp = TcIndxConf::getNoOfOperations(confInfo);
  116.     while (i < len)
  117.       fprintf(output, "H'%.8x ", theData[i++]);
  118.     fprintf(output,"n");
  119.     fprintf(output, "apiConnectPtr: H'%.8x, gci: %u, transId:(H'%.8x, H'%.8x)n",
  120.     sig->apiConnectPtr, sig->gci, sig->transId1, sig->transId2);
  121.     
  122.     fprintf(output, "noOfOperations: %u, commitFlag: %s, markerFlag: %sn", 
  123.     noOfOp,
  124.     (TcIndxConf::getCommitFlag(confInfo) == 0)?"false":"true",
  125.     (TcIndxConf::getMarkerFlag(confInfo) == 0)?"false":"true");
  126.     fprintf(output, "Operations:n");
  127.     for(i = 0; i < noOfOp; i++) {
  128.       fprintf(output,
  129.       "apiOperationPtr: H'%.8x, attrInfoLen: %un",
  130.       sig->operations[i].apiOperationPtr,
  131.       sig->operations[i].attrInfoLen);
  132.     }
  133.   }
  134.   return true;
  135. }
  136. bool
  137. printTCINDXREF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
  138.   
  139. //  const TcIndxRef * const sig = (TcIndxRef *) theData;
  140.   
  141.   fprintf(output, "Signal data: ");
  142.   Uint32 i = 0;
  143.   while (i < len)
  144.     fprintf(output, "H'%.8x ", theData[i++]);
  145.   fprintf(output,"n");
  146.   
  147.   return true;
  148. }