~drizzle-trunk/drizzle/jenkins-Drizzle-Builder-193

« back to all changes in this revision

Viewing changes to client/drizzledump.cc

  • Committer: Continuous Integration
  • Date: 2013-02-21 22:41:42 UTC
  • mfrom: (2617.2.1 drizzle-dump)
  • Revision ID: ci@drizzle.org-20130221224142-6corjpn3j5m4s39a
Merge lp:~prachee/drizzle/drizzle-dump Build: jenkins-Drizzle-Builder-163

Show diffs side-by-side

added added

removed removed

Lines of Context:
93
93
FILE *md_result_file= 0;
94
94
FILE *stderror_file= 0;
95
95
std::vector<DrizzleDumpDatabase*> database_store;
96
 
DrizzleDumpConnection* db_connection;
97
96
DrizzleDumpConnection* destination_connection;
98
97
 
99
98
enum destinations {
125
124
 
126
125
void maybe_exit(int error);
127
126
static void die(int error, const char* reason, ...);
128
 
static void write_header(char *db_name);
129
 
static int dump_selected_tables(const string &db, const vector<string> &table_names);
130
 
static int dump_databases(const vector<string> &db_names);
131
 
static int dump_all_databases(void);
 
127
static void write_header(DrizzleDumpConnection* db_connection,char *db_name);
 
128
static int dump_selected_tables(DrizzleDumpConnection* db_connection,const string &db, const vector<string> &table_names);
 
129
static int dump_databases(DrizzleDumpConnection* db_connection,const vector<string> &db_names);
 
130
static int dump_all_databases(DrizzleDumpConnection* db_connection);
132
131
int get_server_type();
133
132
void dump_all_tables(void);
134
133
void generate_dump(void);
234
233
    die(EX_EOF, _("Got errno %d on write"), errno);
235
234
}
236
235
 
237
 
static void write_header(char *db_name)
 
236
static void write_header(DrizzleDumpConnection* db_connection,char *db_name)
238
237
{
239
238
  if ((not opt_compact) and (opt_comments))
240
239
  {
337
336
    first_error= error;
338
337
  if (ignore_errors)
339
338
    return;
340
 
  delete db_connection;
341
339
  delete destination_connection;
342
340
  free_resources();
343
341
  exit(error);
344
342
}
345
343
 
346
 
static int dump_all_databases()
 
344
static int dump_all_databases(DrizzleDumpConnection* db_connection)
347
345
{
348
346
  drizzle_row_t row;
349
347
  drizzle_result_st *tableres;
378
376
/* dump_all_databases */
379
377
 
380
378
 
381
 
static int dump_databases(const vector<string> &db_names)
 
379
static int dump_databases(DrizzleDumpConnection* db_connection,const vector<string> &db_names)
382
380
{
383
381
  int result=0;
384
382
  string temp;
396
394
  return(result);
397
395
} /* dump_databases */
398
396
 
399
 
static int dump_selected_tables(const string &db, const vector<string> &table_names)
 
397
static int dump_selected_tables(DrizzleDumpConnection* db_connection,const string &db, const vector<string> &table_names)
400
398
{
401
399
  DrizzleDumpDatabase *database;
402
400
 
417
415
  return 0;
418
416
} /* dump_selected_tables */
419
417
 
420
 
static int do_flush_tables_read_lock()
 
418
static int do_flush_tables_read_lock(DrizzleDumpConnection* db_connection)
421
419
{
422
420
  /*
423
421
    We do first a FLUSH TABLES. If a long update is running, the FLUSH TABLES
434
432
  return 0;
435
433
}
436
434
 
437
 
static int start_transaction()
 
435
static int start_transaction(DrizzleDumpConnection* db_connection)
438
436
{
439
437
  db_connection->queryNoResult("SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ");
440
438
  db_connection->queryNoResult("START TRANSACTION WITH CONSISTENT SNAPSHOT");
460
458
try
461
459
{
462
460
  int exit_code;
463
 
 
 
461
  DrizzleDumpConnection* db_connection=NULL;
464
462
#if defined(ENABLE_NLS)
465
463
# if defined(HAVE_LOCALE_H)
466
464
  setlocale(LC_ALL, "");
770
768
  if (path.empty() && vm.count("database-used"))
771
769
  {
772
770
    string database_used= *vm["database-used"].as< vector<string> >().begin();
773
 
    write_header((char *)database_used.c_str());
 
771
    write_header(db_connection,(char *)database_used.c_str());
774
772
  }
775
773
 
776
 
  if ((opt_lock_all_tables) && do_flush_tables_read_lock())
 
774
  if ((opt_lock_all_tables) && do_flush_tables_read_lock(db_connection))
777
775
    goto err;
778
 
  if (opt_single_transaction && start_transaction())
 
776
  if (opt_single_transaction && start_transaction(db_connection))
779
777
    goto err;
780
778
  if (opt_lock_all_tables)
781
779
    db_connection->queryNoResult("FLUSH LOGS");
782
780
 
783
781
  if (opt_alldbs)
784
782
  {
785
 
    dump_all_databases();
 
783
    dump_all_databases(db_connection);
786
784
    dump_all_tables();
787
785
  }
788
786
  if (vm.count("database-used") && vm.count("Table-used") && not opt_databases)
789
787
  {
790
788
    string database_used= *vm["database-used"].as< vector<string> >().begin();
791
789
    /* Only one database and selected table(s) */
792
 
    dump_selected_tables(database_used, vm["Table-used"].as< vector<string> >());
 
790
    dump_selected_tables(db_connection,database_used, vm["Table-used"].as< vector<string> >());
793
791
  }
794
792
 
795
793
  if (vm.count("Table-used") && opt_databases)
804
802
      database_used.insert(database_used.end(), *it);
805
803
    }
806
804
 
807
 
    dump_databases(database_used);
 
805
    dump_databases(db_connection,database_used);
808
806
    dump_all_tables();
809
807
  }
810
808
 
811
809
  if (vm.count("database-used") && not vm.count("Table-used"))
812
810
  {
813
 
    dump_databases(vm["database-used"].as< vector<string> >());
 
811
    dump_databases(db_connection,vm["database-used"].as< vector<string> >());
814
812
    dump_all_tables();
815
813
  }
816
814