transactd 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/common/tdclc_32_3_2.dll +0 -0
- data/bin/common/{tdclc_64_3_1.dll → tdclc_64_3_2.dll} +0 -0
- data/build/swig/ruby/ruby.swg +3 -0
- data/build/swig/ruby/tdclrb_wrap.cpp +2413 -126
- data/build/swig/tdcl.i +120 -9
- data/build/tdclc/tdclc.cbproj +4 -1
- data/build/tdclc/tdclc.rc +4 -4
- data/build/tdclcpp/tdclcpp.rc +4 -4
- data/build/tdclcpp/tdclcpp_bc.cbproj +8 -1
- data/build/tdclrb/tdclrb.rc +4 -4
- data/source/bzs/db/engine/mysql/database.cpp +138 -130
- data/source/bzs/db/engine/mysql/database.h +43 -48
- data/source/bzs/db/engine/mysql/dbManager.cpp +81 -96
- data/source/bzs/db/engine/mysql/dbManager.h +13 -22
- data/source/bzs/db/engine/mysql/mysqlInternal.h +157 -291
- data/source/bzs/db/engine/mysql/mysqlProtocol.cpp +425 -0
- data/source/bzs/db/engine/mysql/mysqlProtocol.h +72 -0
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +8 -6
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +7 -3
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +1 -0
- data/source/bzs/db/protocol/tdap/client/client.h +22 -8
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +225 -21
- data/source/bzs/db/protocol/tdap/client/connMgr.h +42 -16
- data/source/bzs/db/protocol/tdap/client/database.cpp +58 -15
- data/source/bzs/db/protocol/tdap/client/database.h +3 -3
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +93 -85
- data/source/bzs/db/protocol/tdap/client/dbDef.h +1 -2
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +9 -5
- data/source/bzs/db/protocol/tdap/client/filter.h +2 -2
- data/source/bzs/db/protocol/tdap/client/groupComp.h +2 -2
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +1 -1
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +71 -12
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +7 -1
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +35 -2
- data/source/bzs/db/protocol/tdap/client/nsTable.h +1 -0
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +5 -1
- data/source/bzs/db/protocol/tdap/client/recordset.h +15 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +21 -16
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +32 -11
- data/source/bzs/db/protocol/tdap/client/serializer.h +4 -1
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +3 -2
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +3 -0
- data/source/bzs/db/protocol/tdap/client/table.cpp +18 -14
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +8 -3
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +1 -0
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +83 -43
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +3 -1
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +7 -7
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +247 -137
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +9 -9
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +1 -4
- data/source/bzs/db/protocol/tdap/tdapSchema.h +3 -7
- data/source/bzs/db/protocol/tdap/tdapcapi.h +23 -3
- data/source/bzs/db/protocol/tdap/uri.h +40 -0
- data/source/bzs/db/transactd/appModule.cpp +14 -5
- data/source/bzs/db/transactd/appModule.h +10 -1
- data/source/bzs/db/transactd/connManager.cpp +93 -48
- data/source/bzs/db/transactd/connManager.h +10 -7
- data/source/bzs/db/transactd/connectionRecord.h +114 -19
- data/source/bzs/env/tstring.h +2 -0
- data/source/bzs/example/changeSchema.cpp +1 -1
- data/source/bzs/example/changeSchema_c.cpp +1 -1
- data/source/bzs/example/insertRecords.cpp +2 -1
- data/source/bzs/example/insertRecords_c.cpp +2 -1
- data/source/bzs/example/queryData.cpp +5 -2
- data/source/bzs/netsvc/server/IAppModule.h +6 -0
- data/source/bzs/test/tdclatl/test_v3.js +75 -0
- data/source/bzs/test/tdclphp/transactd_v3_Test.php +104 -7
- data/source/bzs/test/tdclrb/transactd_v3_spec.rb +84 -0
- data/source/bzs/test/trdclengn/testField.h +66 -6
- data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +10 -1
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +85 -0
- data/source/bzs/test/trdclengn/testbase.h +1 -1
- data/source/global/tdclatl/BinlogPos.cpp +64 -0
- data/source/global/tdclatl/BinlogPos.h +84 -0
- data/source/global/tdclatl/ConnMgr.cpp +285 -0
- data/source/global/tdclatl/ConnMgr.h +83 -0
- data/source/global/tdclatl/ConnRecord.cpp +123 -0
- data/source/global/tdclatl/ConnRecord.h +69 -0
- data/source/global/tdclatl/ConnRecords.cpp +57 -0
- data/source/global/tdclatl/ConnRecords.h +55 -0
- data/source/global/tdclatl/Database.cpp +36 -0
- data/source/global/tdclatl/Database.h +4 -0
- data/source/global/tdclatl/Table.cpp +14 -1
- data/source/global/tdclatl/Table.h +1 -0
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/tdclatl.idl +148 -4
- metadata +14 -4
- data/bin/common/tdclc_32_3_1.dll +0 -0
@@ -18,10 +18,12 @@
|
|
18
18
|
================================================================= */
|
19
19
|
|
20
20
|
#include "dbManager.h"
|
21
|
+
#include "errorMessage.h"
|
21
22
|
#include <bzs/netsvc/server/IAppModule.h> //for result value macro.
|
22
23
|
#include <bzs/rtl/exception.h>
|
23
24
|
#include <time.h>
|
24
25
|
#include "mysqlThd.h"
|
26
|
+
#include <bzs/db/engine/mysql/mysqlProtocol.h>
|
25
27
|
|
26
28
|
namespace bzs
|
27
29
|
{
|
@@ -34,6 +36,7 @@ namespace mysql
|
|
34
36
|
|
35
37
|
#define STATUS_ALREADY_INSNAPSHOT 204
|
36
38
|
#define STATUS_ALREADY_INTRANSACTION 205
|
39
|
+
#define STATUS_ALREADY_INEXCLUSIVE 206
|
37
40
|
|
38
41
|
class smartDbsReopen
|
39
42
|
{
|
@@ -49,15 +52,21 @@ public:
|
|
49
52
|
if (m_dbs[i] && m_dbs[i]->thd() == m_thd)
|
50
53
|
{
|
51
54
|
if (m_dbs[i]->inSnapshot())
|
52
|
-
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_ALREADY_INSNAPSHOT, "
|
55
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_ALREADY_INSNAPSHOT, "Already in snapshot.");
|
53
56
|
else if (m_dbs[i]->inTransaction())
|
54
|
-
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_ALREADY_INTRANSACTION, "
|
57
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_ALREADY_INTRANSACTION, "Already in transaction.");
|
58
|
+
else if(m_dbs[i]->usingExclusveMode())
|
59
|
+
{
|
60
|
+
int code = STATUS_ALREADY_INEXCLUSIVE;
|
61
|
+
std::string s = "Already in exclusive mode when DDL command execute.";
|
62
|
+
printWarningMessage(&code, &s);
|
63
|
+
}
|
55
64
|
m_dbs[i]->use();
|
56
65
|
m_dbs[i]->unUseTables(false);
|
57
66
|
m_dbs[i]->closeForReopen();
|
58
67
|
}
|
59
68
|
}
|
60
|
-
attachThd(m_thd);
|
69
|
+
//attachThd(m_thd);
|
61
70
|
}
|
62
71
|
|
63
72
|
~smartDbsReopen()
|
@@ -80,12 +89,27 @@ public:
|
|
80
89
|
std::string smartDbsReopen::removeName = "";
|
81
90
|
|
82
91
|
|
83
|
-
dbManager::dbManager() : m_autoHandle(0),
|
92
|
+
dbManager::dbManager(netsvc::server::IAppModule* mod) : m_autoHandle(0), m_thd(NULL),
|
93
|
+
m_mod(mod), m_authChecked(false)
|
84
94
|
{
|
85
95
|
}
|
86
96
|
|
87
97
|
dbManager::~dbManager()
|
88
98
|
{
|
99
|
+
if (m_thd)
|
100
|
+
deleteThdForThread(m_thd);
|
101
|
+
}
|
102
|
+
|
103
|
+
THD* dbManager::getThd()
|
104
|
+
{
|
105
|
+
if (!m_thd)
|
106
|
+
{
|
107
|
+
m_thd = createThdForThread();
|
108
|
+
|
109
|
+
}
|
110
|
+
else
|
111
|
+
attachThd(m_thd);
|
112
|
+
return m_thd;
|
89
113
|
}
|
90
114
|
|
91
115
|
bool dbManager::isShutDown() const
|
@@ -146,11 +170,6 @@ database* dbManager::useDataBase(int id) const
|
|
146
170
|
database* dbManager::createDatabase(const char* dbname, short cid) const
|
147
171
|
{
|
148
172
|
database* db = new database(dbname, cid);
|
149
|
-
if (m_authChecked)
|
150
|
-
{
|
151
|
-
if (m_host != "")
|
152
|
-
db->setGrant(m_host.c_str(), m_user.c_str());
|
153
|
-
}
|
154
173
|
return db;
|
155
174
|
}
|
156
175
|
|
@@ -225,91 +244,77 @@ int dbManager::addHandle(int dbid, int tableid, int assignid)
|
|
225
244
|
return assignid;
|
226
245
|
}
|
227
246
|
|
228
|
-
int dbManager::ddl_execSql(
|
247
|
+
int dbManager::ddl_execSql(database* db, const std::string& sql_stmt)
|
229
248
|
{
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
249
|
+
THD* thd = getThd();
|
250
|
+
int result = 0;
|
251
|
+
if (db)
|
252
|
+
{
|
253
|
+
copyGrant(thd, db->thd(), db->name().c_str());
|
254
|
+
setDbName(thd, db->name().c_str());
|
255
|
+
}
|
256
|
+
else
|
257
|
+
{
|
258
|
+
if (m_mod->isSkipGrants())
|
259
|
+
cp_security_ctx(thd)->skip_grants();
|
260
|
+
else
|
261
|
+
setGrant(thd, m_mod->host(), m_mod->user(), "");
|
262
|
+
setDbName(thd, "");
|
263
|
+
}
|
264
|
+
result = errorCode(execSql(thd, sql_stmt.c_str()));
|
265
|
+
if (thd->mdl_context.has_locks())
|
266
|
+
close_thread_tables(thd);
|
267
|
+
thd->mdl_context.release_transactional_locks();
|
268
|
+
if (db)
|
269
|
+
db->use();
|
237
270
|
return result;
|
238
271
|
}
|
239
272
|
|
240
|
-
int dbManager::ddl_createDataBase(THD* thd
|
273
|
+
int dbManager::ddl_createDataBase(/*THD* thd,*/ const std::string& dbname)
|
241
274
|
{
|
242
275
|
std::string cmd = "create database `" + dbname + "`";
|
243
|
-
return ddl_execSql(
|
276
|
+
return ddl_execSql(NULL, cmd);
|
244
277
|
}
|
245
278
|
|
246
|
-
int dbManager::ddl_dropDataBase(THD* thd
|
279
|
+
int dbManager::ddl_dropDataBase(/*THD* thd,*/ const std::string& dbname,
|
247
280
|
const std::string& dbSqlname, short cid)
|
248
281
|
{
|
249
282
|
std::string cmd = "drop database `" + dbSqlname + "`";
|
250
|
-
|
251
|
-
int ret = ddl_execSql(thd, cmd);
|
252
|
-
smartDbsReopen::removeName = "";
|
253
|
-
boost::mutex::scoped_lock lck(m_mutex);
|
254
|
-
if (ret == 0)
|
255
|
-
{
|
256
|
-
int index = -1;
|
257
|
-
for (int i = (int)m_dbs.size() - 1; i >= 0; i--)
|
258
|
-
{
|
259
|
-
if (m_dbs[i] != NULL && (m_dbs[i]->clientID() == cid))
|
260
|
-
{
|
261
|
-
index = i;
|
262
|
-
break;
|
263
|
-
}
|
264
|
-
}
|
265
|
-
if (index != -1)
|
266
|
-
{
|
267
|
-
m_dbs[index].reset();
|
268
|
-
for (int i = (int)m_handles.size() - 1; i >= 0; i--)
|
269
|
-
if (m_handles[i].db == index)
|
270
|
-
m_handles.erase(m_handles.begin() + i);
|
271
|
-
}
|
272
|
-
}
|
283
|
+
int ret = ddl_execSql(NULL, cmd);
|
273
284
|
return ret;
|
274
285
|
}
|
275
286
|
|
276
|
-
int dbManager::
|
287
|
+
int dbManager::ddl_createTable(database* db, const char* cmd)
|
277
288
|
{
|
278
|
-
|
279
|
-
return ddl_execSql(
|
280
|
-
}
|
281
|
-
|
282
|
-
int dbManager::closeCacheTable(database* db, const std::string& tbname)
|
283
|
-
{
|
284
|
-
if (database::tableRef.count(db->name(), tbname))
|
285
|
-
return DBM_ERROR_TABLE_USED;
|
286
|
-
|
287
|
-
TABLE_LIST tables;
|
288
|
-
tables.init_one_table(db->name().c_str(), db->name().size(), tbname.c_str(),
|
289
|
-
tbname.size(), tbname.c_str(), TL_READ);
|
290
|
-
if (close_cached_tables(db->thd(), &tables, true, 50000000L))
|
291
|
-
return HA_ERR_LOCK_WAIT_TIMEOUT;
|
292
|
-
return 0;
|
289
|
+
smartDbsReopen reopen(db->thd(), m_dbs);
|
290
|
+
return ddl_execSql(db, cmd);
|
293
291
|
}
|
294
292
|
|
295
293
|
int dbManager::ddl_dropTable(database* db, const std::string& tbname,
|
296
294
|
const std::string& dbSqlname,
|
297
295
|
const std::string& tbSqlname)
|
298
296
|
{
|
299
|
-
db->
|
300
|
-
int ret = closeCacheTable(db, tbname);
|
301
|
-
if (ret)
|
302
|
-
return ret;
|
303
|
-
db->thd()->variables.lock_wait_timeout = 0;
|
297
|
+
smartDbsReopen reopen(db->thd(), m_dbs);
|
304
298
|
std::string cmd = "drop table `" + dbSqlname + "`.`" + tbSqlname + "`";
|
305
|
-
return ddl_execSql(db
|
299
|
+
return ddl_execSql(db, cmd);
|
306
300
|
}
|
307
301
|
|
308
302
|
int dbManager::ddl_addIndex(database* db, const std::string& tbname,
|
309
303
|
const std::string& cmd)
|
310
304
|
{
|
311
305
|
std::string c = "ALTER TABLE `" + db->name() + "`." + cmd;
|
312
|
-
|
306
|
+
smartDbsReopen reopen(db->thd(), m_dbs);
|
307
|
+
return ddl_execSql(db, c);
|
308
|
+
}
|
309
|
+
|
310
|
+
/** Key name of multi byte charctord is not supported. Use only ascii.
|
311
|
+
*/
|
312
|
+
int dbManager::ddl_dropIndex(database* db, const std::string& tbname, const char* keyname)
|
313
|
+
{
|
314
|
+
std::string s = "drop index `" + std::string(keyname) + "` on `" + db->name() +
|
315
|
+
"`.`" + tbname + "`";
|
316
|
+
smartDbsReopen reopen(db->thd(), m_dbs);
|
317
|
+
return ddl_execSql(db, s.c_str());
|
313
318
|
}
|
314
319
|
|
315
320
|
int dbManager::ddl_renameTable(database* db, const std::string& oldName,
|
@@ -317,14 +322,10 @@ int dbManager::ddl_renameTable(database* db, const std::string& oldName,
|
|
317
322
|
const std::string& oldSqlName,
|
318
323
|
const std::string& newSqlName)
|
319
324
|
{
|
320
|
-
db->closeTable(oldName.c_str(), true);
|
321
|
-
int ret = closeCacheTable(db, oldName);
|
322
|
-
if (ret)
|
323
|
-
return ret;
|
324
|
-
|
325
325
|
std::string cmd = "rename table `" + dbSqlName + "`.`" + oldSqlName +
|
326
326
|
"` to `" + dbSqlName + "`.`" + newSqlName + "`";
|
327
|
-
|
327
|
+
smartDbsReopen reopen(db->thd(), m_dbs);
|
328
|
+
return ddl_execSql(db, cmd);
|
328
329
|
}
|
329
330
|
|
330
331
|
int dbManager::ddl_replaceTable(database* db, const std::string& name1,
|
@@ -333,8 +334,6 @@ int dbManager::ddl_replaceTable(database* db, const std::string& name1,
|
|
333
334
|
const std::string& nameSql1,
|
334
335
|
const std::string& nameSql2)
|
335
336
|
{ // rename name1 to name2.
|
336
|
-
db->closeTable(name1.c_str(), true);
|
337
|
-
db->closeTable(name2.c_str(), true);
|
338
337
|
char nameSql3[255];
|
339
338
|
|
340
339
|
time_t timer_ = time(NULL);
|
@@ -343,42 +342,28 @@ int dbManager::ddl_replaceTable(database* db, const std::string& name1,
|
|
343
342
|
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min,
|
344
343
|
t->tm_sec);
|
345
344
|
|
346
|
-
int ret = closeCacheTable(db, name2);
|
347
|
-
if (ret)
|
348
|
-
return ret;
|
349
345
|
|
350
346
|
std::string cmd = "rename table `" + dbSqlName + "`.`" + nameSql2 +
|
351
347
|
"` to `" + dbSqlName + "`.`" + nameSql3 + "`,`" +
|
352
348
|
dbSqlName + "`.`" + nameSql1 + "` to `" + dbSqlName +
|
353
349
|
"`.`" + nameSql2 + "`";
|
354
|
-
|
350
|
+
smartDbsReopen reopen(db->thd(), m_dbs);
|
351
|
+
int ret = ddl_execSql(db, cmd);
|
355
352
|
if (ret == 0)
|
356
353
|
{
|
357
354
|
std::string cmd = "drop table `" + dbSqlName + "`.`" + nameSql3 + "`";
|
358
|
-
return ddl_execSql(db
|
355
|
+
return ddl_execSql(db, cmd);
|
359
356
|
}
|
360
357
|
return ret;
|
361
358
|
}
|
362
359
|
|
363
|
-
std::string
|
364
|
-
|
365
|
-
const std::string& tableSqlName,
|
366
|
-
const char* comment)
|
360
|
+
int dbManager::ddl_tableComment(database* db, const std::string& tbname,
|
361
|
+
const char* comment)
|
367
362
|
{
|
368
|
-
std::string s = "alter table `" +
|
363
|
+
std::string s = "alter table `" + db->name() + "`.`" + tbname +
|
369
364
|
"` comment \"" + comment + "\"";
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
/** Key name of multi byte charctord is not supported. Use only ascii.
|
374
|
-
*/
|
375
|
-
std::string dbManager::makeSQLDropIndex(const std::string& dbSqlName,
|
376
|
-
const std::string& tbSqlName,
|
377
|
-
const char* name)
|
378
|
-
{
|
379
|
-
std::string s = "drop index `" + std::string(name) + "` on `" + dbSqlName +
|
380
|
-
"`.`" + tbSqlName + "`";
|
381
|
-
return s;
|
365
|
+
smartDbsReopen reopen(db->thd(), m_dbs);
|
366
|
+
return ddl_execSql(db, s.c_str());
|
382
367
|
}
|
383
368
|
|
384
369
|
void dbManager::clenupNoException()
|
@@ -21,7 +21,7 @@
|
|
21
21
|
#include <my_config.h>
|
22
22
|
#include <boost/thread/mutex.hpp>
|
23
23
|
#include <bzs/db/engine/mysql/database.h>
|
24
|
-
|
24
|
+
#include <bzs/netsvc/server/IAppModule.h>
|
25
25
|
/* dbManager original error code */
|
26
26
|
#define DBM_ERROR_TABLE_USED HA_ERR_LAST + 1
|
27
27
|
|
@@ -37,31 +37,27 @@ namespace mysql
|
|
37
37
|
struct handle
|
38
38
|
{
|
39
39
|
handle(int i, short d, short t) : id(i), db(d), tb(t), cid(0){};
|
40
|
-
|
41
40
|
int id;
|
42
41
|
short db;
|
43
42
|
short tb;
|
44
43
|
short cid;
|
45
44
|
};
|
46
45
|
|
47
|
-
|
48
46
|
class dbManager
|
49
47
|
{
|
50
48
|
// Lock for isSutdown(), called by another thread
|
51
49
|
mutable boost::mutex m_mutex;
|
52
|
-
|
53
50
|
int m_autoHandle;
|
51
|
+
THD* m_thd;
|
54
52
|
|
55
53
|
protected:
|
54
|
+
netsvc::server::IAppModule* m_mod;
|
56
55
|
mutable databases m_dbs;
|
57
|
-
|
58
56
|
mutable std::vector<handle> m_handles;
|
59
|
-
|
60
57
|
table* m_tb;
|
61
|
-
std::string m_user;
|
62
|
-
std::string m_host;
|
63
58
|
bool m_authChecked;
|
64
59
|
|
60
|
+
THD* getThd();
|
65
61
|
database* createDatabase(const char* dbname, short cid) const;
|
66
62
|
void releaseDatabase(short cid);
|
67
63
|
handle* getHandle(int handle) const;
|
@@ -72,17 +68,18 @@ protected:
|
|
72
68
|
void checkNewHandle(int newHandle) const;
|
73
69
|
int addHandle(int dbid, int tableid, int assignid = -1);
|
74
70
|
database* useDataBase(int id) const;
|
75
|
-
int
|
76
|
-
int
|
77
|
-
int
|
78
|
-
int ddl_dropDataBase(THD* thd, const std::string& dbname,
|
71
|
+
int ddl_execSql(database* db, const std::string& sql_stmt);
|
72
|
+
int ddl_createDataBase(const std::string& dbname);
|
73
|
+
int ddl_dropDataBase(const std::string& dbname,
|
79
74
|
const std::string& dbSqlname, short cid);
|
80
|
-
int ddl_useDataBase(THD* thd, const std::string& dbSqlname);
|
81
75
|
int ddl_dropTable(database* db, const std::string& tbname,
|
82
76
|
const std::string& sqldbname,
|
83
77
|
const std::string& sqltbname);
|
78
|
+
int ddl_createTable(database* db, const char* cmd);
|
84
79
|
int ddl_addIndex(database* db, const std::string& tbname,
|
85
80
|
const std::string& cmd);
|
81
|
+
int ddl_dropIndex(database* db, const std::string& tbname,
|
82
|
+
const char* keyname);
|
86
83
|
int ddl_renameTable(database* db, const std::string& oldName,
|
87
84
|
const std::string& dbSqlName,
|
88
85
|
const std::string& oldSqlName,
|
@@ -91,22 +88,16 @@ protected:
|
|
91
88
|
const std::string& name2, const std::string& dbSqlName,
|
92
89
|
const std::string& nameSql1,
|
93
90
|
const std::string& nameSql2);
|
94
|
-
|
95
|
-
|
96
|
-
const char* comment);
|
97
|
-
std::string makeSQLDropIndex(const std::string& dbSqlName,
|
98
|
-
const std::string& tbSqlName,
|
99
|
-
const char* name);
|
91
|
+
int ddl_tableComment(database* db, const std::string& tbname,
|
92
|
+
const char* comment);
|
100
93
|
void clenupNoException();
|
101
94
|
virtual int errorCode(int ha_error) = 0;
|
102
95
|
|
103
96
|
public:
|
104
|
-
dbManager();
|
97
|
+
dbManager(netsvc::server::IAppModule* mod);
|
105
98
|
virtual ~dbManager();
|
106
99
|
bool isShutDown() const;
|
107
|
-
|
108
100
|
const databases& dbs() const { return m_dbs; }
|
109
|
-
|
110
101
|
boost::mutex& mutex() { return m_mutex; }
|
111
102
|
};
|
112
103
|
|