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

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 VerifyNdbApi_hpp
  14. #define VerifyNdbApi_hpp
  15. class CVerifyNdbSchemaOp : public NdbSchemaOp
  16. {
  17. public:
  18.   int createTable(const char* aTableName)
  19.   {
  20.     int i = NdbSchemaOp::createTable(aTableName);
  21.     VerifyInt(i, "createTable");
  22.     return i;
  23.   };
  24.   int createAttribute(const char* aAttrName, KeyType aTupleyKey)
  25.   {
  26.     int i = NdbSchemaOp::createAttribute(aAttrName, aTupleyKey);
  27.     VerifyInt(i, "createAttribute");
  28.     return i;
  29.   };
  30. private:
  31.   void VerifyInt(const int i, const char* szMethod)
  32.   {
  33.     if(i)
  34.     {
  35.       VerifyIntError(i, szMethod);
  36.     }
  37.   }
  38.   void VerifyIntError(const int i, const char* szMethod);
  39. };
  40. class CVerifyNdbSchemaCon : public NdbSchemaCon
  41. {
  42. public:
  43.   CVerifyNdbSchemaOp* getNdbSchemaOp()
  44.   {
  45.     NdbSchemaOp* p = NdbSchemaCon::getNdbSchemaOp();
  46.     VerifyPtr(p, "getNdbSchemaOp");
  47.     return (CVerifyNdbSchemaOp*)p;
  48.   };
  49.   int execute()
  50.   {
  51.     int i = NdbSchemaCon::execute();
  52.     VerifyInt(i, "execute");
  53.     return i;
  54.   };
  55. private:
  56.   void VerifyInt(const int i, const char* szMethod)
  57.   {
  58.     if(i)
  59.     {
  60.       VerifyIntError(i, szMethod);
  61.     }
  62.   }
  63.   void VerifyPtr(void* p, const char* szMethod)
  64.   {
  65.     if(!p)
  66.     {
  67.       VerifyPtrError(p, szMethod);
  68.     }
  69.   }
  70.   void VerifyIntError(const int i, const char* szMethod);
  71.   void VerifyPtrError(void* p, const char* szMethod);
  72. };
  73. class CVerifyNdbRecAttr : public NdbRecAttr
  74. {
  75. public:
  76.   Uint32 u_32_value()
  77.   {
  78.     Uint32 n = NdbRecAttr::u_32_value();
  79.     VerifyValue("u_32_value");
  80.     return n;
  81.   };
  82. private:
  83.   void VerifyValue(const char* szMethod)
  84.   {
  85.     int iNull = NdbRecAttr::isNULL();
  86.     if(iNull)
  87.     {
  88.       VerifyValueError(iNull, szMethod);
  89.     }
  90.   };
  91.   void VerifyValueError(const int iNull, const char* szMethod);
  92. };
  93. class CVerifyNdbOperation : public NdbOperation
  94. {
  95. public:
  96.   int insertTuple()
  97.   {
  98.     int i = NdbOperation::insertTuple();
  99.     VerifyInt(i, "insertTuple");
  100.     return i;
  101.   };
  102.   int updateTuple()
  103.   {
  104.     int i = NdbOperation::updateTuple();
  105.     VerifyInt(i, "updateTuple");
  106.     return i;
  107.   };
  108.   int interpretedUpdateTuple()
  109.   {
  110.     int i = NdbOperation::interpretedUpdateTuple();
  111.     VerifyInt(i, "interpretedUpdateTuple");
  112.     return i;
  113.   }
  114.   int readTuple()
  115.   {
  116.     int i = NdbOperation::readTuple();
  117.     VerifyInt(i, "readTuple");
  118.     return i;
  119.   }
  120.   int readTupleExclusive()
  121.   {
  122.     int i = NdbOperation::readTupleExclusive();
  123.     VerifyInt(i, "readTupleExclusive");
  124.     return i;
  125.   }
  126.   int deleteTuple()
  127.   {
  128.     int i = NdbOperation::deleteTuple();
  129.     VerifyInt(i, "deleteTuple");
  130.     return i;
  131.   }
  132.   int equal(const char* anAttrName, Uint32 aValue)
  133.   {
  134.     int i = NdbOperation::equal(anAttrName, aValue);
  135.     VerifyInt(i, "equal");
  136.     return i;
  137.   }
  138.   int setValue(const char* anAttrName, Uint32 aValue)
  139.   {
  140.     int i = NdbOperation::setValue(anAttrName, aValue);
  141.     VerifyInt(i, "setValue");
  142.     return i;
  143.   }
  144.   int incValue(const char* anAttrName, Uint32 aValue)
  145.   {
  146.     int i = NdbOperation::incValue(anAttrName, aValue);
  147.     VerifyInt(i, "incValue");
  148.     return i;
  149.   }
  150.   CVerifyNdbRecAttr* getValue(const char* anAttrName)
  151.   {
  152.     NdbRecAttr* p = NdbOperation::getValue(anAttrName);
  153.     VerifyPtr(p, "getValue");
  154.     return (CVerifyNdbRecAttr*)p;
  155.   }
  156. private:
  157.   void VerifyInt(const int i, const char* szMethod)
  158.   {
  159.     if(i)
  160.     {
  161.       VerifyIntError(i, szMethod);
  162.     }
  163.   }
  164.   void VerifyPtr(void* p, const char* szMethod)
  165.   {
  166.     if(!p)
  167.     {
  168.       VerifyPtrError(p, szMethod);
  169.     }
  170.   }
  171.   void VerifyIntError(const int i, const char* szMethod);
  172.   void VerifyPtrError(void* p, const char* szMethod);
  173. };
  174. class CVerifyNdbIndexOperation : public NdbIndexOperation
  175. {
  176. public:
  177.   int insertTuple()
  178.   {
  179.     int i = NdbIndexOperation::insertTuple();
  180.     VerifyInt(i, "insertTuple");
  181.     return i;
  182.   };
  183.   int updateTuple()
  184.   {
  185.     int i = NdbIndexOperation::updateTuple();
  186.     VerifyInt(i, "updateTuple");
  187.     return i;
  188.   };
  189.   int interpretedUpdateTuple()
  190.   {
  191.     int i = NdbIndexOperation::interpretedUpdateTuple();
  192.     VerifyInt(i, "interpretedUpdateTuple");
  193.     return i;
  194.   }
  195.   int readTuple()
  196.   {
  197.     int i = NdbIndexOperation::readTuple();
  198.     VerifyInt(i, "readTuple");
  199.     return i;
  200.   }
  201.   int readTupleExclusive()
  202.   {
  203.     int i = NdbIndexOperation::readTupleExclusive();
  204.     VerifyInt(i, "readTupleExclusive");
  205.     return i;
  206.   }
  207.   int deleteTuple()
  208.   {
  209.     int i = NdbIndexOperation::deleteTuple();
  210.     VerifyInt(i, "deleteTuple");
  211.     return i;
  212.   }
  213.   int equal(const char* anAttrName, Uint32 aValue)
  214.   {
  215.     int i = NdbIndexOperation::equal(anAttrName, aValue);
  216.     VerifyInt(i, "equal");
  217.     return i;
  218.   }
  219.   int setValue(const char* anAttrName, Uint32 aValue)
  220.   {
  221.     int i = NdbIndexOperation::setValue(anAttrName, aValue);
  222.     VerifyInt(i, "setValue");
  223.     return i;
  224.   }
  225.   int incValue(const char* anAttrName, Uint32 aValue)
  226.   {
  227.     int i = NdbIndexOperation::incValue(anAttrName, aValue);
  228.     VerifyInt(i, "incValue");
  229.     return i;
  230.   }
  231.   CVerifyNdbRecAttr* getValue(const char* anAttrName)
  232.   {
  233.     NdbRecAttr* p = NdbIndexOperation::getValue(anAttrName);
  234.     VerifyPtr(p, "getValue");
  235.     return (CVerifyNdbRecAttr*)p;
  236.   }
  237. private:
  238.   void VerifyInt(const int i, const char* szMethod)
  239.   {
  240.     if(i)
  241.     {
  242.       VerifyIntError(i, szMethod);
  243.     }
  244.   }
  245.   void VerifyPtr(void* p, const char* szMethod)
  246.   {
  247.     if(!p)
  248.     {
  249.       VerifyPtrError(p, szMethod);
  250.     }
  251.   }
  252.   void VerifyIntError(const int i, const char* szMethod);
  253.   void VerifyPtrError(void* p, const char* szMethod);
  254. };
  255. class CVerifyNdbConnection : public NdbConnection
  256. {
  257. public:
  258.   CVerifyNdbOperation* getNdbOperation(const char* aTableName)
  259.   {
  260.     NdbOperation* p = NdbConnection::getNdbOperation(aTableName);
  261.     VerifyPtr(p, "getNdbOperation");
  262.     return (CVerifyNdbOperation*)p;
  263.   }
  264.   CVerifyNdbIndexOperation* getNdbIndexOperation(const char* anIndexName, const char* aTableName)
  265.   {
  266.     NdbIndexOperation* p = NdbConnection::getNdbIndexOperation(anIndexName, aTableName);
  267.     VerifyPtr(p, "getNdbIndexOperation");
  268.     return (CVerifyNdbIndexOperation*)p;
  269.   }
  270.   int execute(ExecType aTypeOfExec)
  271.   {
  272.     int i = NdbConnection::execute(aTypeOfExec);
  273.     VerifyInt(i, "execute");
  274.     return i;
  275.   }
  276.   int execute_ok(ExecType aTypeOfExec)
  277.   {
  278.     int iExec = NdbConnection::execute(aTypeOfExec);
  279.     NdbError err = NdbConnection::getNdbError();
  280.     int iCode = err.code;
  281.     if(iExec 
  282.        && ((aTypeOfExec==NoCommit && iCode!=0) 
  283.         || (aTypeOfExec==Commit && iCode!=626 && iCode!=630)))
  284.     {
  285.       VerifyInt(iExec, "execute");
  286.     }
  287.     return iExec;
  288.   }
  289. private:
  290.   void VerifyInt(const int i, const char* szMethod)
  291.   {
  292.     if(i)
  293.     {
  294.       VerifyIntError(i, szMethod);
  295.     }
  296.   }
  297.   void VerifyPtr(void* p, const char* szMethod)
  298.   {
  299.     if(!p)
  300.     {
  301.       VerifyPtrError(p, szMethod);
  302.     }
  303.   }
  304.   void VerifyIntError(const int i, const char* szMethod);
  305.   void VerifyPtrError(void* p, const char* szMethod);
  306. };
  307. //class CVerifyTable : public NdbDictionary::Table
  308. //{
  309. //public:
  310. //};
  311. class CVerifyNdbDictionary : public NdbDictionary
  312. {
  313. public:
  314. class CVerifyTable : public Table
  315. {
  316. public:
  317. private:
  318. };
  319. class CVerifyIndex : public Index
  320. {
  321. public:
  322. private:
  323. };
  324. class CVerifyColumn : public Column
  325. {
  326. public:
  327. private:
  328. };
  329.     int createTable(const CVerifyTable &);
  330.     int createIndex(const CVerifyIndex &);
  331. private:
  332. };
  333. class CVerifyNdb : public Ndb
  334. {
  335. public:
  336.   CVerifyNdb(const char* aDataBase)
  337.   : Ndb(aDataBase)
  338.   {
  339.     VerifyVoid("Ndb");
  340.   };
  341.   CVerifyNdbSchemaCon* startSchemaTransaction()
  342.   {
  343.     NdbSchemaCon* p = Ndb::startSchemaTransaction();
  344.     VerifyPtr(p, "startSchemaTransaction");
  345.     return (CVerifyNdbSchemaCon*)p;
  346.   };
  347.   void closeSchemaTransaction(CVerifyNdbSchemaCon* aSchemaCon)
  348.   {
  349.     Ndb::closeSchemaTransaction(aSchemaCon);
  350.     VerifyVoid("closeSchemaTransaction");
  351.   };
  352.   CVerifyNdbConnection* startTransaction()
  353.   {
  354.     NdbConnection* p = Ndb::startTransaction();
  355.     VerifyPtr(p, "startTransaction");
  356.     return (CVerifyNdbConnection*)p;
  357.   };
  358.   void closeTransaction(CVerifyNdbConnection* aConnection)
  359.   {
  360.     Ndb::closeTransaction(aConnection);
  361.     VerifyVoid("closeTransaction");
  362.   };
  363. private:
  364.   void VerifyPtr(void* p, const char* szMethod)
  365.   {
  366.     if(!p)
  367.     {
  368.       VerifyPtrError(p, szMethod);
  369.     }
  370.   }
  371.   void VerifyVoid(const char* szMethod)
  372.   {
  373.     NdbError err = Ndb::getNdbError();
  374.     int iCode = err.code;
  375.     if(iCode)
  376.     {
  377.       VerifyVoidError(iCode, szMethod);
  378.     }
  379.   }
  380.   void VerifyPtrError(void* p, const char* szMethod);
  381.   void VerifyVoidError(const int iCode, const char* szMethod);
  382. };
  383. #endif // VerifyNdbApi_hpp