22 #define DRIZZLE_MAX_LINE_LENGTH 1024*1024L-1025
23 #include "client_priv.h"
24 #include "server_detect.h"
41 std::string constraintName;
48 std::string parentColumns;
49 std::string childColumns;
50 std::string childTable;
51 std::string matchOption;
52 std::string deleteRule;
53 std::string updateRule;
62 std::string indexName;
79 typedef std::pair<std::string,uint32_t> columnData;
80 std::vector<columnData> columns;
81 friend std::ostream& operator<<(std::ostream &os,
const DrizzleDumpIndex &obj);
92 isAutoIncrement(
false),
94 convertDateTime(
false),
101 std::stringstream errmsg;
103 friend std::ostream& operator<<(std::ostream &os,
const DrizzleDumpField &obj);
104 std::string fieldName;
110 bool isAutoIncrement;
112 bool convertDateTime;
114 std::string defaultValue;
115 std::string collation;
119 std::string enumValues;
122 uint32_t decimalPrecision;
123 uint32_t decimalScale;
125 virtual void setType(
const char*,
const char*) { }
142 std::stringstream errmsg;
144 virtual bool populateFields() {
return false; }
145 virtual bool populateIndexes() {
return false; }
146 virtual bool populateFkeys() {
return false; }
148 std::vector<DrizzleDumpField*> fields;
149 std::vector<DrizzleDumpIndex*> indexes;
150 std::vector<DrizzleDumpForeignKey*> fkeys;
152 friend std::ostream& operator<<(std::ostream &os,
const DrizzleDumpTable &obj);
153 std::string tableName;
154 std::string displayName;
155 std::string engineName;
161 uint64_t autoIncrement;
170 databaseName(database)
176 std::stringstream errmsg;
180 virtual bool populateTables(
void) {
return false; }
181 virtual bool populateTables(
const std::vector<std::string> &table_names) {
return table_names.empty(); }
182 virtual void setCollate(
const char*) { }
183 void cleanTableName(std::string &tableName);
184 bool ignoreTable(std::string tableName);
185 std::vector<DrizzleDumpTable*> tables;
187 const std::string databaseName;
195 std::stringstream errmsg;
197 drizzle_result_st *result;
205 friend std::ostream& operator<<(std::ostream &os,
const DrizzleDumpData &obj);
207 virtual std::string checkDateTime(
const char*, uint32_t)
const {
return std::string(
""); }
208 std::string convertHex(
const unsigned char* from,
size_t from_size)
const;
209 static std::string escape(
const char* from,
size_t from_size);
216 drizzle_con_st *connection;
217 std::string hostName;
218 bool drizzleProtocol;
219 ServerDetect::server_type serverType;
220 std::string serverVersion;
225 std::string &username,
226 std::string &password,
227 bool drizzle_protocol);
231 void errorHandler(drizzle_result_st *res, drizzle_return_t ret,
const char *when);
232 drizzle_result_st* query(std::string &str_query);
233 bool queryNoResult(std::string &str_query);
235 drizzle_result_st* query(
const char* ch_query)
237 std::string str_query(ch_query);
238 return query(str_query);
241 bool queryNoResult(
const char* ch_query)
243 std::string str_query(ch_query);
244 return queryNoResult(str_query);
247 void freeResult(drizzle_result_st* result);
248 bool setDB(std::string databaseName);
249 bool usingDrizzleProtocol(
void)
const {
return drizzleProtocol; }
250 bool getServerType(
void)
const {
return serverType; }
251 std::string getServerVersion(
void)
const {
return serverVersion; }
261 ptr.resize(buffSize);
262 setp(&ptr[0], &ptr.back());
269 void writeString(std::string &str)
271 if (not connection->queryNoResult(str))
273 throw std::exception();
283 std::vector<char> ptr;
289 size_t len = size_t(pptr() - pbase());
291 ptr.resize(buffSize*resize);
292 setp(&ptr[0], &ptr.back());
303 size_t len = size_t(pptr() - pbase());
304 std::string temp(pbase(), len);
307 temp.erase(std::remove(temp.begin(), temp.end(),
'\n'), temp.end());
309 if (temp.compare(0, 2,
"--") == 0)
312 setp(pbase(), epptr());
314 if (temp.find(
";") != std::string::npos)
317 setp(pbase(), epptr());