drop_index.cpp
上传用户: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. #include <ndb_global.h>
  14. #include <ndb_opts.h>
  15. #include <NdbOut.hpp>
  16. #include <NdbApi.hpp>
  17. #include <NDBT.hpp>
  18. NDB_STD_OPTS_VARS;
  19. static const char* _dbname = "TEST_DB";
  20. static struct my_option my_long_options[] =
  21. {
  22.   NDB_STD_OPTS("ndb_desc"),
  23.   { "database", 'd', "Name of database table is in",
  24.     (gptr*) &_dbname, (gptr*) &_dbname, 0,
  25.     GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
  26.   { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
  27. };
  28. static void usage()
  29. {
  30.   char desc[] = 
  31.     "[<table> <index>]+n"
  32.     "This program will drop index(es) in Ndbn";
  33.   ndb_std_print_version();
  34.   my_print_help(my_long_options);
  35.   my_print_variables(my_long_options);
  36. }
  37. static my_bool
  38. get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
  39.        char *argument)
  40. {
  41.   return ndb_std_get_one_option(optid, opt, argument ? argument :
  42. "d:t:O,/tmp/ndb_drop_index.trace");
  43. }
  44. int main(int argc, char** argv){
  45.   NDB_INIT(argv[0]);
  46.   const char *load_default_groups[]= { "mysql_cluster",0 };
  47.   load_defaults("my",load_default_groups,&argc,&argv);
  48.   int ho_error;
  49.   if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
  50.     return NDBT_ProgramExit(NDBT_WRONGARGS);
  51.   if (argc < 1) {
  52.     usage();
  53.     return NDBT_ProgramExit(NDBT_WRONGARGS);
  54.   }
  55.   
  56.   Ndb::setConnectString(opt_connect_str);
  57.   // Connect to Ndb
  58.   Ndb MyNdb(_dbname);
  59.   if(MyNdb.init() != 0){
  60.     ERR(MyNdb.getNdbError());
  61.     return NDBT_ProgramExit(NDBT_FAILED);
  62.   }
  63.   
  64.   while(MyNdb.waitUntilReady() != 0)
  65.     ndbout << "Waiting for ndb to become ready..." << endl;
  66.   
  67.   int res = 0;
  68.   for(int i = 0; i+1<argc; i += 2){
  69.     ndbout << "Dropping index " << argv[i] << "/" << argv[i+1] << "...";
  70.     int tmp;
  71.     if((tmp = MyNdb.getDictionary()->dropIndex(argv[i+1], argv[i])) != 0){
  72.       ndbout << endl << MyNdb.getDictionary()->getNdbError() << endl;
  73.       res = tmp;
  74.     } else {
  75.       ndbout << "OK" << endl;
  76.     }
  77.   }
  78.   
  79.   if(res != 0){
  80.     return NDBT_ProgramExit(NDBT_FAILED);
  81.   }
  82.   
  83.   return NDBT_ProgramExit(NDBT_OK);
  84. }