~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to client/drizzledump_data.h

  • Committer: Andrew Hutchings
  • Date: 2010-09-22 19:58:16 UTC
  • mto: (1792.1.1 build)
  • mto: This revision was merged to the branch mainline in revision 1793.
  • Revision ID: andrew@linuxjedi.co.uk-20100922195816-uc3aud8va2sxponn
Put drizzle and mysql processes in seperate classes/files

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
 
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
3
 *
 
4
 *  Copyright (C) 2010 Andrew Hutchings
 
5
 *
 
6
 *  This program is free software; you can redistribute it and/or modify
 
7
 *  it under the terms of the GNU General Public License as published by
 
8
 *  the Free Software Foundation; version 2 of the License.
 
9
 *
 
10
 *  This program is distributed in the hope that it will be useful,
 
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with this program; if not, write to the Free Software
 
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
18
 */
 
19
 
 
20
#ifndef CLIENT_DRIZZLEDUMP_DATA_H
 
21
#define CLIENT_DRIZZLEDUMP_DATA_H
 
22
 
 
23
#define DRIZZLE_MAX_LINE_LENGTH 1024*1024L-1025
 
24
#include "client_priv.h"
 
25
#include <string>
 
26
#include <iostream>
 
27
#include <iomanip>
 
28
#include <vector>
 
29
#include <sstream>
 
30
 
 
31
class DrizzleDumpDatabase;
 
32
class DrizzleDumpData;
 
33
 
 
34
class DrizzleDumpIndex
 
35
{
 
36
  public:
 
37
    std::string indexName;
 
38
 
 
39
    DrizzleDumpIndex(std::string &index) :
 
40
      indexName(index)
 
41
    { }
 
42
 
 
43
    virtual ~DrizzleDumpIndex() { }
 
44
 
 
45
    bool isPrimary;
 
46
    bool isUnique;
 
47
    bool isHash;
 
48
 
 
49
    std::vector<std::string> columns;
 
50
    friend std::ostream& operator <<(std::ostream &os, const DrizzleDumpIndex &obj);
 
51
};
 
52
 
 
53
class DrizzleDumpField
 
54
{
 
55
  public:
 
56
    DrizzleDumpField(std::string &field) :
 
57
      fieldName(field)
 
58
    { }
 
59
 
 
60
    virtual ~DrizzleDumpField() { }
 
61
 
 
62
    std::stringstream errmsg;
 
63
 
 
64
    friend std::ostream& operator <<(std::ostream &os, const DrizzleDumpField &obj);
 
65
    std::string fieldName;
 
66
 
 
67
    std::string type;
 
68
    uint32_t length;
 
69
    bool isNull;
 
70
    bool isUnsigned;
 
71
    bool isAutoIncrement;
 
72
    bool defaultIsNull;
 
73
    bool convertDateTime;
 
74
    std::string defaultValue;
 
75
    std::string collation;
 
76
 
 
77
    /* For enum type */
 
78
    std::string enumValues;
 
79
 
 
80
    /* For decimal/double */
 
81
    uint32_t decimalPrecision;
 
82
    uint32_t decimalScale;
 
83
 
 
84
    virtual void setType(const char*, const char*) { }
 
85
 
 
86
};
 
87
 
 
88
class DrizzleDumpTable
 
89
{
 
90
  public:
 
91
    DrizzleDumpTable(std::string &table) :
 
92
      tableName(table)
 
93
    { }
 
94
 
 
95
    virtual ~DrizzleDumpTable() { }
 
96
 
 
97
    std::stringstream errmsg;
 
98
 
 
99
    virtual bool populateFields() { return false; }
 
100
    virtual bool populateIndexes() { return false; }
 
101
    virtual DrizzleDumpData* getData() { return NULL; }
 
102
    std::vector<DrizzleDumpField*> fields;
 
103
    std::vector<DrizzleDumpIndex*> indexes;
 
104
 
 
105
    friend std::ostream& operator <<(std::ostream &os, const DrizzleDumpTable &obj);
 
106
    std::string tableName;
 
107
    std::string engineName;
 
108
    std::string collate;
 
109
 
 
110
    // Currently MySQL only, hard to do in Drizzle
 
111
    uint64_t autoIncrement;
 
112
    DrizzleDumpDatabase* database;
 
113
};
 
114
 
 
115
class DrizzleDumpDatabase
 
116
{
 
117
  public:
 
118
    DrizzleDumpDatabase(const std::string &database) :
 
119
      databaseName(database)
 
120
    { }
 
121
 
 
122
    virtual ~DrizzleDumpDatabase() { }
 
123
 
 
124
    std::stringstream errmsg;
 
125
 
 
126
    friend std::ostream& operator <<(std::ostream &os, const DrizzleDumpDatabase &obj);
 
127
 
 
128
    virtual bool populateTables() { return false; }
 
129
    virtual void setCollate(const char*) { }
 
130
    std::vector<DrizzleDumpTable*> tables;
 
131
 
 
132
    const std::string databaseName;
 
133
    std::string collate;
 
134
};
 
135
 
 
136
class DrizzleDumpData
 
137
{
 
138
  public:
 
139
    std::stringstream errmsg;
 
140
    DrizzleDumpTable *table;
 
141
    drizzle_result_st *result;
 
142
    DrizzleDumpData(DrizzleDumpTable *dataTable) :
 
143
      table(dataTable)
 
144
    { }
 
145
 
 
146
    virtual ~DrizzleDumpData() { }
 
147
    friend std::ostream& operator <<(std::ostream &os, const DrizzleDumpData &obj);
 
148
 
 
149
    virtual std::ostream& checkDateTime(std::ostream &os, const char*, uint32_t) const { return os; }
 
150
    std::string convertHex(const char* from, size_t from_size) const;
 
151
    std::string escape(const char* from, size_t from_size) const;
 
152
};
 
153
 
 
154
#endif /* CLIENT_DRIZZLEDUMP_DATA_H */