~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to client/drizzledump_data.cc

  • Committer: Andrew Hutchings
  • Date: 2010-09-23 20:32:31 UTC
  • mto: (1792.1.1 build)
  • mto: This revision was merged to the branch mainline in revision 1793.
  • Revision ID: andrew@linuxjedi.co.uk-20100923203231-9bpfjwm0fih91ize
Fix various bugs

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
extern bool extended_insert;
32
32
extern bool opt_replace_into;
33
33
extern bool opt_drop; 
 
34
extern bool  verbose;
 
35
extern bool opt_databases; 
 
36
extern bool opt_alldbs; 
34
37
extern uint32_t show_progress_size;
35
38
 
 
39
enum destinations {
 
40
  DESTINATION_DB,
 
41
  DESTINATION_FILES,
 
42
  DESTINATION_STDOUT
 
43
};
 
44
 
 
45
extern int opt_destination;
 
46
 
36
47
std::ostream& operator <<(std::ostream &os, const DrizzleDumpIndex &obj)
37
48
{
38
49
  if (obj.isPrimary)
115
126
 
116
127
std::ostream& operator <<(std::ostream &os, const DrizzleDumpDatabase &obj)
117
128
{
118
 
  os << "--" << std::endl
119
 
     << "-- Current Database: `" << obj.databaseName << "`" << std::endl
120
 
     << "--" << std::endl << std::endl;
121
 
 
122
 
  /* Love that this variable is the opposite of its name */
123
 
  if (not opt_create_db)
 
129
  if ((opt_destination == DESTINATION_DB) or opt_databases or opt_alldbs)
124
130
  {
125
 
    os << "CREATE DATABASE IF NOT EXISTS `" << obj.databaseName
126
 
      << "` COLLATE = " << obj.collate << ";" << std::endl << std::endl;
 
131
    os << "--" << std::endl
 
132
       << "-- Current Database: `" << obj.databaseName << "`" << std::endl
 
133
       << "--" << std::endl << std::endl;
 
134
 
 
135
    /* Love that this variable is the opposite of its name */
 
136
    if (not opt_create_db)
 
137
    {
 
138
      os << "CREATE DATABASE IF NOT EXISTS `" << obj.databaseName << "`";
 
139
      if (not obj.collate.empty())
 
140
       os << " COLLATE = " << obj.collate;
 
141
 
 
142
      os << ";" << std::endl << std::endl;
 
143
    }
 
144
 
 
145
    os << "USE `" << obj.databaseName << "`;" << std::endl << std::endl;
127
146
  }
128
147
 
129
 
  os << "USE `" << obj.databaseName << "`;" << std::endl << std::endl;
130
 
 
131
148
  std::vector<DrizzleDumpTable*>::iterator i;
132
149
  std::vector<DrizzleDumpTable*> output_tables = obj.tables;
133
150
  for (i= output_tables.begin(); i != output_tables.end(); ++i)
156
173
 
157
174
  drizzle_row_t row;
158
175
 
 
176
  if (verbose)
 
177
    std::cerr << _("-- Retrieving data for ") << obj.table->tableName << "..." << std::endl;
 
178
 
159
179
  if (drizzle_result_row_count(obj.result) < 1)
160
180
  {
161
181
    os << "--" << std::endl
348
368
    host= "localhost";
349
369
 
350
370
  std::string protocol= (drizzle_protocol) ? "Drizzle" : "MySQL";
351
 
 
352
 
  std::cerr << _("-- Connecting to ") << host  << _(" using protocol ")
353
 
    << protocol << "..." << std::endl;
 
371
  if (verbose)
 
372
  {
 
373
    std::cerr << _("-- Connecting to ") << host  << _(" using protocol ")
 
374
      << protocol << "..." << std::endl;
 
375
  }
354
376
  drizzle_create(&drizzle);
355
377
  drizzle_con_create(&drizzle, &connection);
356
378
  drizzle_con_set_tcp(&connection, (char *)host.c_str(), port);
390
412
    if (ret == DRIZZLE_RETURN_ERROR_CODE)
391
413
    {
392
414
      std::cerr << _("Error executing query: ") <<
393
 
        drizzle_result_error(result);
 
415
        drizzle_result_error(result) << std::endl;
394
416
      drizzle_result_free(result);
395
417
    }
396
418
    else
397
419
    {
398
420
      std::cerr << _("Error executing query: ") <<
399
 
        drizzle_con_error(&connection);
 
421
        drizzle_con_error(&connection) << std::endl;
400
422
    }
401
423
    return NULL;
402
424
  }
404
426
  if (drizzle_result_buffer(result) != DRIZZLE_RETURN_OK)
405
427
  {
406
428
    std::cerr << _("Could not buffer result: ") <<
407
 
        drizzle_con_error(&connection);
 
429
        drizzle_con_error(&connection) << std::endl;
408
430
    return NULL;
409
431
  }
410
432
  return result;
427
449
    if (ret == DRIZZLE_RETURN_ERROR_CODE)
428
450
    {
429
451
      std::cerr << _("Error executing query: ") <<
430
 
        drizzle_result_error(&result);
 
452
        drizzle_result_error(&result) << std::endl;
431
453
      drizzle_result_free(&result);
432
454
    }
433
455
    else
434
456
    {
435
457
      std::cerr << _("Error executing query: ") <<
436
 
        drizzle_con_error(&connection);
 
458
        drizzle_con_error(&connection) << std::endl;
437
459
    }
438
460
    return false;
439
461
  }
449
471
  if (drizzle_select_db(&connection, &result, databaseName.c_str(), &ret) == 
450
472
    NULL || ret != DRIZZLE_RETURN_OK)
451
473
  {
452
 
    std::cerr << _("Could not set db '") << databaseName << "'";
 
474
    std::cerr << _("Could not set db '") << databaseName << "'" << std::endl;
453
475
    return false;
454
476
  }
455
477
  drizzle_result_free(&result);
475
497
 
476
498
DrizzleDumpConnection::~DrizzleDumpConnection()
477
499
{
478
 
  std::cerr << _("-- Disconnecting from ") << hostName << "..." << std::endl;
 
500
  if (verbose)
 
501
    std::cerr << _("-- Disconnecting from ") << hostName << "..." << std::endl;
479
502
  drizzle_con_free(&connection);
480
503
  drizzle_free(&drizzle);
481
504
}