⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testbitfield.cpp

📁 mysql-5.0.22.tar.gz源码包
💻 CPP
字号:
#include <ndb_global.h>#include <ndb_opts.h>#include <NDBT.hpp>#include <NdbApi.hpp>#include <HugoTransactions.hpp>static const char* _dbname = "TEST_DB";static int g_loops = 7;static void usage(){  ndb_std_print_version();}#if 0static my_boolget_one_option(int optid, const struct my_option *opt __attribute__((unused)),	       const char *argument){  return ndb_std_get_one_option(optid, opt, argument ? argument :				"d:t:O,/tmp/testBitfield.trace");}#endifstatic const NdbDictionary::Table* create_random_table(Ndb*);static int transactions(Ndb*, const NdbDictionary::Table* tab);static int unique_indexes(Ndb*, const NdbDictionary::Table* tab);static int ordered_indexes(Ndb*, const NdbDictionary::Table* tab);static int node_restart(Ndb*, const NdbDictionary::Table* tab);static int system_restart(Ndb*, const NdbDictionary::Table* tab);int main(int argc, char** argv){  NDB_INIT(argv[0]);  const char *load_default_groups[]= { "mysql_cluster",0 };  load_defaults("my",load_default_groups,&argc,&argv);  int ho_error;  argc--;  argv++;    Ndb_cluster_connection con(opt_connect_str);  if(con.connect(12, 5, 1))  {    return NDBT_ProgramExit(NDBT_FAILED);  }    Ndb* pNdb;  pNdb = new Ndb(&con, _dbname);    pNdb->init();  while (pNdb->waitUntilReady() != 0);  int res = NDBT_FAILED;  NdbDictionary::Dictionary * dict = pNdb->getDictionary();  const NdbDictionary::Table* pTab = 0;  for (int i = 0; i < (argc ? argc : g_loops) ; i++)  {    res = NDBT_FAILED;    if(argc == 0)    {      pTab = create_random_table(pNdb);    }    else    {      dict->dropTable(argv[i]);      NDBT_Tables::createTable(pNdb, argv[i]);      pTab = dict->getTable(argv[i]);    }        if (pTab == 0)    {      ndbout << "Failed to create table" << endl;      ndbout << dict->getNdbError() << endl;      break;    }        if(transactions(pNdb, pTab))      break;    if(unique_indexes(pNdb, pTab))      break;    if(ordered_indexes(pNdb, pTab))      break;        if(node_restart(pNdb, pTab))      break;        if(system_restart(pNdb, pTab))      break;    dict->dropTable(pTab->getName());    res = NDBT_OK;  }  if(res != NDBT_OK && pTab)  {    dict->dropTable(pTab->getName());  }    delete pNdb;  return NDBT_ProgramExit(res);}static const NdbDictionary::Table* create_random_table(Ndb* pNdb){  do {    NdbDictionary::Table tab;    Uint32 cols = 1 + (rand() % (NDB_MAX_ATTRIBUTES_IN_TABLE - 1));    Uint32 keys = NDB_MAX_NO_OF_ATTRIBUTES_IN_KEY;    Uint32 length = 4090;    Uint32 key_size = NDB_MAX_KEYSIZE_IN_WORDS;        BaseString name;     name.assfmt("TAB_%d", rand() & 65535);    tab.setName(name.c_str());    for(int i = 0; i<cols && length > 2; i++)    {      NdbDictionary::Column col;      name.assfmt("COL_%d", i);      col.setName(name.c_str());      if(i == 0 || i == 1)      {	col.setType(NdbDictionary::Column::Unsigned);	col.setLength(1); 	col.setNullable(false);	col.setPrimaryKey(i == 0);	tab.addColumn(col);	continue;      }            col.setType(NdbDictionary::Column::Bit);            Uint32 len = 1 + (rand() % (length - 1));      col.setLength(len); length -= len;      int nullable = (rand() >> 16) & 1;      col.setNullable(nullable); length -= nullable;      col.setPrimaryKey(false);      tab.addColumn(col);    }        pNdb->getDictionary()->dropTable(tab.getName());    if(pNdb->getDictionary()->createTable(tab) == 0)    {      ndbout << (NDBT_Table&)tab << endl;      return pNdb->getDictionary()->getTable(tab.getName());    }  } while(0);  return 0;}static inttransactions(Ndb* pNdb, const NdbDictionary::Table* tab){  int i = 0;  HugoTransactions trans(* tab);  i |= trans.loadTable(pNdb, 1000);  i |= trans.pkReadRecords(pNdb, 1000, 13);   i |= trans.scanReadRecords(pNdb, 1000, 25);  i |= trans.pkUpdateRecords(pNdb, 1000, 37);  i |= trans.scanUpdateRecords(pNdb, 1000, 25);  i |= trans.pkDelRecords(pNdb, 500, 23);  i |= trans.clearTable(pNdb);  return i;}static int unique_indexes(Ndb* pNdb, const NdbDictionary::Table* tab){  return 0;}static int ordered_indexes(Ndb* pNdb, const NdbDictionary::Table* tab){  return 0;}static int node_restart(Ndb* pNdb, const NdbDictionary::Table* tab){  return 0;}static int system_restart(Ndb* pNdb, const NdbDictionary::Table* tab){  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -