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

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. #ifndef DBA_INTERNAL_HPP
  14. #define DBA_INTERNAL_HPP
  15. #include <ndb_global.h>
  16. extern "C" {
  17. #include "dba.h"
  18. }
  19. #include <NdbApi.hpp>
  20. #include <NdbMutex.h>
  21. #include <NdbOut.hpp>
  22. #ifndef INT_MAX
  23. #define INT_MAX          2147483647
  24. #endif
  25. #ifdef DEBUG
  26. #define DBA_DEBUG(x) ndbout << x << endl
  27. #else
  28. #define DBA_DEBUG(x)
  29. #endif
  30. extern Ndb      * DBA__TheNdb;
  31. extern NdbMutex * DBA__TheNewtonMutex;
  32. extern unsigned DBA__SentTransactions;
  33. extern unsigned DBA__RecvTransactions;
  34. /**
  35.  * Configuration
  36.  */
  37. extern int DBA__NBP_Intervall;          // Param 0
  38. extern int DBA__BulkReadCount;          // Param 1
  39. extern int DBA__StartTransactionTimout; // Param 2
  40. extern int DBA__NBP_Force;              // Param 3
  41. /**
  42.  * Error handling
  43.  */
  44. void DBA__SetLatestError(DBA_Error_t, DBA_ErrorCode_t, const char *, ...);
  45. /**
  46.  * Magic string
  47.  *
  48.  * Used to make sure that user passes correct pointers
  49.  */
  50. const int DBA__MagicLength = 4;
  51. const char DBA__TheMagic[DBA__MagicLength] = { 'K', 'E', 'S', 'O' };
  52. struct DBA_Binding {
  53.   char magic[DBA__MagicLength];
  54.   int  checkSum;
  55.   
  56.   char * tableName;
  57.   int structSz;
  58.   
  59.   int noOfKeys;
  60.   int *keyIds;
  61.   int *keyOffsets;
  62.   
  63.   int noOfColumns;
  64.   int *columnIds;
  65.   int *columnOffsets;
  66.   int noOfSubBindings;
  67.   struct DBA_Binding **subBindings;
  68.   int * subBindingOffsets;
  69.   
  70.   int data[1];
  71. };
  72. struct DBA__DataTypesMapping {
  73.   DBA_DataTypes_t newtonType;
  74.   NdbDictionary::Column::Type ndbType;
  75. };
  76. const DBA__DataTypesMapping DBA__DataTypesMappings[] = {
  77.   { DBA_CHAR, NdbDictionary::Column::Char },
  78.   { DBA_INT,  NdbDictionary::Column::Int }
  79. };
  80. const int DBA__NoOfMappings = sizeof(DBA__DataTypesMappings)/
  81.                               sizeof(DBA__DataTypesMapping);
  82. /**
  83.  * Validate magic string and checksum of a binding
  84.  */
  85. bool DBA__ValidBinding(const DBA_Binding_t * bindings);
  86. bool DBA__ValidBindings(const DBA_Binding_t * const * pBindings, int n);
  87. /**
  88.  * Recursive equalGetValue (used for read)
  89.  *           equalSetValue (used for write)
  90.  *           equal         (used for delete)
  91.  */
  92. bool DBA__EqualGetValue(NdbOperation *, const DBA_Binding_t *, void *);
  93. bool DBA__EqualSetValue(NdbOperation *, const DBA_Binding_t *, const void *);
  94. bool DBA__Equal        (NdbOperation *, const DBA_Binding_t *, const void *);
  95. inline void require(bool test){
  96.   if(!test)
  97.     abort();
  98. }
  99. #endif