~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to client/drizzledump_data.cc

  • Committer: Monty Taylor
  • Date: 2010-10-21 23:10:12 UTC
  • mto: (1879.1.2 build)
  • mto: This revision was merged to the branch mainline in revision 1880.
  • Revision ID: mordred@inaugust.com-20101021231012-uhsebiqo23xi0ygy
Updated AUTHORS list with everyone from bzr logs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
166
166
  if (not obj.defaultValue.empty())
167
167
  {
168
168
    if (obj.defaultValue.compare("CURRENT_TIMESTAMP") != 0)
169
 
    {
170
 
      if (obj.defaultValue.compare(0, 2, "b'") == 0)
171
 
      {
172
 
        os << " DEFAULT " << obj.defaultValue;
173
 
      }
174
 
      else
175
 
      {
176
 
        os << " DEFAULT '" << obj.defaultValue << "'";
177
 
      }
178
 
    }
 
169
     os << " DEFAULT '" << obj.defaultValue << "'";
179
170
    else
180
 
    {
181
171
     os << " DEFAULT CURRENT_TIMESTAMP";
182
 
    }
183
172
  }
184
173
  else if ((obj.defaultIsNull))
185
174
  {
186
175
    os << " DEFAULT NULL";
187
176
  }
188
177
 
189
 
  if (not obj.comment.empty())
190
 
  {
191
 
    os << " COMMENT '" << DrizzleDumpData::escape(obj.comment.c_str(), obj.comment.length()) << "'";
192
 
  }
193
 
 
194
178
  return os;
195
179
}
196
180
 
335
319
      if (not row[i])
336
320
      {
337
321
        os << "NULL";
338
 
        if (i != obj.table->fields.size() - 1)
339
 
          os << ",";
340
 
        continue;
341
 
      }
342
 
 
343
 
      if ((obj.table->fields[i]->rangeCheck) and
344
 
        (obj.table->fields[i]->type.compare("BIGINT") == 0) and
345
 
        (boost::lexical_cast<uint64_t>(row[i]) > INT64_MAX))
346
 
      {
347
 
        std::cerr << "Error: Data for column " << obj.table->fields[i]->fieldName << " is greater than max BIGINT, cannot migrate automatically" << std::endl;
348
 
        if (not ignore_errors)
349
 
          maybe_exit(EX_DRIZZLEERR);
350
 
        else
351
 
          continue;
352
 
      }
353
 
 
 
322
      }
354
323
      /* time/date conversion for MySQL connections */
355
324
      else if (obj.table->fields[i]->convertDateTime)
356
325
      {
358
327
      }
359
328
      else
360
329
      {
361
 
        if ((obj.table->fields[i]->type.compare("INT") != 0) and
362
 
          (obj.table->fields[i]->type.compare("BIGINT") != 0))
 
330
        if (obj.table->fields[i]->type.compare("INT") != 0)
363
331
        {
364
332
          /* Hex blob processing or escape text */
365
333
          if (((obj.table->fields[i]->type.compare("BLOB") == 0) or
368
336
            os << obj.convertHex((unsigned char*)row[i], row_sizes[i]);
369
337
            byte_counter+= row_sizes[i];
370
338
          }
371
 
          else if ((obj.table->fields[i]->type.compare("ENUM") == 0) and
372
 
            (strcmp(row[i], "") == 0))
373
 
          {
374
 
            os << "NULL";
375
 
          }
376
 
          else if (obj.table->fields[i]->type.compare("BOOLEAN") == 0)
377
 
          {
378
 
            if (strncmp(row[i], "1", 1) == 0)
379
 
              os << "TRUE";
380
 
            else
381
 
              os << "FALSE";
382
 
          }
383
339
          else
384
340
            os << "'" << DrizzleDumpData::escape(row[i], row_sizes[i]) << "'";
385
341
          byte_counter+= 3;
391
347
        os << ",";
392
348
    }
393
349
    /* Break insert up if it is too long */
394
 
    if ((extended_insert and
395
 
      (byte_counter >= DRIZZLE_MAX_LINE_LENGTH)) or (not extended_insert))
 
350
    if (extended_insert and
 
351
      (byte_counter >= DRIZZLE_MAX_LINE_LENGTH))
396
352
    {
397
353
      os << ");" << std::endl;
398
354
      new_insert= true;
399
355
      byte_counter= 0;
400
356
    }
401
357
  }
402
 
  if (not new_insert)
403
 
    os << ");" << std::endl;
 
358
  os << ");" << std::endl;
404
359
 
405
360
  if (opt_autocommit)
406
361
    os << "COMMIT;" << std::endl;
418
373
  std::ostringstream output;
419
374
  if (from_size > 0)
420
375
    output << "0x";
421
 
  else
422
 
    output << "''";
423
 
 
424
376
  while (from_size > 0)
425
377
  {
426
378
    /* Would be nice if std::hex liked uint8_t, ah well */
520
472
  }
521
473
 
522
474
  os << std::endl;
523
 
  os << ") ENGINE='" << obj.engineName << "' ";
 
475
  os << ") ENGINE=" << obj.engineName << " ";
524
476
  if (obj.autoIncrement > 0)
525
477
  {
526
478
    os << "AUTO_INCREMENT=" << obj.autoIncrement << " ";
527
479
  }
528
480
 
529
 
  os << "COLLATE='" << obj.collate << "'";
 
481
  os << "COLLATE = " << obj.collate;
530
482
 
531
483
  if (not obj.comment.empty())
532
484
  {
533
 
    os << " COMMENT='" << obj.comment << "'";
 
485
    os << " COMMENT = '" << obj.comment << "'";
534
486
  }
535
487
 
536
488
  os << ";" << std::endl << std::endl;
565
517
  if (ret != DRIZZLE_RETURN_OK)
566
518
  {
567
519
    errorHandler(NULL, ret, "when trying to connect");
568
 
    throw std::exception();
 
520
    throw 1;
569
521
  }
570
522
 
571
 
  ServerDetect server_detect= ServerDetect(&connection);
572
 
 
573
 
  serverType= server_detect.getServerType();
574
 
  serverVersion= server_detect.getServerVersion();
 
523
  boost::match_flag_type flags = boost::match_default; 
 
524
 
 
525
  boost::regex mysql_regex("(5\\.[0-9]+\\.[0-9]+)");
 
526
  boost::regex drizzle_regex("(20[0-9]{2}\\.(0[1-9]|1[012])\\.[0-9]+)");
 
527
 
 
528
  std::string version(getServerVersion());
 
529
 
 
530
  if (regex_search(version, mysql_regex, flags))
 
531
    serverType= SERVER_MYSQL_FOUND;
 
532
  else if (regex_search(version, drizzle_regex, flags))
 
533
    serverType= SERVER_DRIZZLE_FOUND;
 
534
  else
 
535
    serverType= SERVER_UNKNOWN_FOUND;
575
536
}
576
537
 
577
538
drizzle_result_st* DrizzleDumpConnection::query(std::string &str_query)