~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to client/drizzledump_data.cc

  • Committer: pcrews
  • Date: 2011-05-24 17:36:24 UTC
  • mfrom: (1099.4.232 drizzle)
  • Revision ID: pcrews@lucid32-20110524173624-mwr1bvq6fa1r01ao
Updated translations + 2011.05.18 tarball tag

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
#include "drizzledump_data.h"
21
21
#include "client_priv.h"
 
22
#include <drizzled/definitions.h>
22
23
#include <drizzled/gettext.h>
23
24
#include <string>
24
25
#include <iostream>
25
26
#include <boost/regex.hpp>
26
27
#include <boost/unordered_set.hpp>
 
28
#include <boost/lexical_cast.hpp>
27
29
 
28
30
#define EX_DRIZZLEERR 2
29
31
 
56
58
 
57
59
extern int opt_destination;
58
60
 
59
 
/* returns true on keep, false on ignore */
 
61
// returns true on keep, false on ignore Olaf: sounds backwards/wrong, shouldn't it be the other way around?
60
62
bool DrizzleDumpDatabase::ignoreTable(std::string tableName)
61
63
{
62
 
  std::string dbTable(databaseName);
63
 
  dbTable.append(".");
64
 
  dbTable.append(tableName);
65
 
 
66
 
  boost::unordered_set<std::string>::iterator iter= ignore_table.find(dbTable);
67
 
  return (iter == ignore_table.end());
 
64
  return ignore_table.find(databaseName + "." + tableName) == ignore_table.end();
68
65
}
69
66
 
70
67
void DrizzleDumpDatabase::cleanTableName(std::string &tableName)
112
109
 
113
110
  os << "(";
114
111
  
115
 
  std::vector<std::string>::iterator i;
116
 
  std::vector<std::string> fields = obj.columns;
 
112
  std::vector<DrizzleDumpIndex::columnData>::iterator i;
 
113
  std::vector<DrizzleDumpIndex::columnData> fields = obj.columns;
117
114
  for (i= fields.begin(); i != fields.end(); ++i)
118
115
  {
119
116
    if (i != fields.begin())
120
117
      os << ",";
121
 
    std::string field= *i;
122
 
    os << "`" << field << "`";
123
 
    if (obj.length > 0)
124
 
      os << "(" << obj.length << ")";
 
118
    os << "`" << (*i).first << "`";
 
119
    if ((*i).second > 0)
 
120
      os << "(" << (*i).second << ")";
125
121
  }
126
122
 
127
123
  os << ")";
290
286
  if (opt_autocommit)
291
287
    os << "START TRANSACTION;" << std::endl;
292
288
 
293
 
  std::streampos out_position= os.tellp();
294
 
 
295
289
  while((row= drizzle_row_next(obj.result)))
296
290
  {
297
291
    rownr++;
373
367
          {
374
368
            os << "NULL";
375
369
          }
 
370
          else if (obj.table->fields[i]->type.compare("BOOLEAN") == 0)
 
371
          {
 
372
            if (strncmp(row[i], "1", 1) == 0)
 
373
              os << "TRUE";
 
374
            else
 
375
              os << "FALSE";
 
376
          }
376
377
          else
377
378
            os << "'" << DrizzleDumpData::escape(row[i], row_sizes[i]) << "'";
378
379
          byte_counter+= 3;
526
527
    os << " COMMENT='" << obj.comment << "'";
527
528
  }
528
529
 
 
530
  if (not obj.replicate)
 
531
  {
 
532
    os << " REPLICATE=FALSE";
 
533
  }
 
534
 
529
535
  os << ";" << std::endl << std::endl;
530
536
 
531
537
  return os;
561
567
    throw std::exception();
562
568
  }
563
569
 
564
 
  boost::match_flag_type flags = boost::match_default; 
565
 
 
566
 
  boost::regex mysql_regex("(5\\.[0-9]+\\.[0-9]+)");
567
 
  boost::regex drizzle_regex("(20[0-9]{2}\\.(0[1-9]|1[012])\\.[0-9]+)");
568
 
 
569
 
  std::string version(getServerVersion());
570
 
 
571
 
  if (regex_search(version, mysql_regex, flags))
572
 
    serverType= SERVER_MYSQL_FOUND;
573
 
  else if (regex_search(version, drizzle_regex, flags))
574
 
    serverType= SERVER_DRIZZLE_FOUND;
575
 
  else
576
 
    serverType= SERVER_UNKNOWN_FOUND;
 
570
  ServerDetect server_detect= ServerDetect(&connection);
 
571
 
 
572
  serverType= server_detect.getServerType();
 
573
  serverVersion= server_detect.getServerVersion();
577
574
}
578
575
 
579
576
drizzle_result_st* DrizzleDumpConnection::query(std::string &str_query)