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
@@ -1,7 +1,7 @@
|
|
1
1
|
#ifndef BZS_DB_TRANSACTD_CONNECTIONRECORD_H
|
2
2
|
#define BZS_DB_TRANSACTD_CONNECTIONRECORD_H
|
3
3
|
/*=================================================================
|
4
|
-
Copyright (C) 2013 BizStation Corp All rights reserved.
|
4
|
+
Copyright (C) 2013 2016 BizStation Corp All rights reserved.
|
5
5
|
|
6
6
|
This program is free software; you can redistribute it and/or
|
7
7
|
modify it under the terms of the GNU General Public License
|
@@ -20,9 +20,10 @@
|
|
20
20
|
=================================================================*/
|
21
21
|
#include <bzs/env/compiler.h>
|
22
22
|
#include <bzs/env/crosscompile.h>
|
23
|
+
#include <vector>
|
23
24
|
|
24
25
|
#pragma pack(push, 1)
|
25
|
-
pragma_pack1
|
26
|
+
pragma_pack1
|
26
27
|
|
27
28
|
namespace bzs
|
28
29
|
{
|
@@ -32,29 +33,117 @@ namespace transactd
|
|
32
33
|
{
|
33
34
|
namespace connection
|
34
35
|
{
|
36
|
+
|
37
|
+
/* Slave status row(field) index
|
38
|
+
record::type data type
|
39
|
+
0 longlong to longValue
|
40
|
+
1 string to value
|
41
|
+
*/
|
42
|
+
#define SLAVE_STATUS_IO_STATE 0
|
43
|
+
#define SLAVE_STATUS_MASTER_HOST 1
|
44
|
+
#define SLAVE_STATUS_MASTER_USER 2
|
45
|
+
#define SLAVE_STATUS_MASTER_PORT 3
|
46
|
+
#define SLAVE_STATUS_CONNECT_RETRY 4
|
47
|
+
#define SLAVE_STATUS_MASTER_LOG_FILE 5
|
48
|
+
#define SLAVE_STATUS_READ_MASTER_LOG_POS 6
|
49
|
+
#define SLAVE_STATUS_RELAY_LOG_FILE 7
|
50
|
+
#define SLAVE_STATUS_RELAY_LOG_POS 8
|
51
|
+
#define SLAVE_STATUS_RELAY_MASTER_LOG_FILE 9
|
52
|
+
#define SLAVE_STATUS_SLAVE_IO_RUNNING 10
|
53
|
+
#define SLAVE_STATUS_SLAVE_SQL_RUNNING 11
|
54
|
+
#define SLAVE_STATUS_REPLICATE_DO_DB 12
|
55
|
+
#define SLAVE_STATUS_REPLICATE_IGNORE_DB 13
|
56
|
+
#define SLAVE_STATUS_REPLICATE_DO_TABLE 14
|
57
|
+
#define SLAVE_STATUS_REPLICATE_IGNORE_TABLE 15
|
58
|
+
#define SLAVE_STATUS_REPLICATE_WILD_DO_TABLE 16
|
59
|
+
#define SLAVE_STATUS_REPLICATE_WILD_IGNORE_TABLE 17
|
60
|
+
#define SLAVE_STATUS_LAST_ERRNO 18
|
61
|
+
#define SLAVE_STATUS_LAST_ERROR 19
|
62
|
+
#define SLAVE_STATUS_SKIP_COUNER 20
|
63
|
+
#define SLAVE_STATUS_EXEC_MASTER_LOG_POS 21
|
64
|
+
#define SLAVE_STATUS_RELAY_LOG_SPACE 22
|
65
|
+
#define SLAVE_STATUS_UNTIL_CONDITION 23
|
66
|
+
#define SLAVE_STATUS_UNTIL_LOG_FILE 24
|
67
|
+
#define SLAVE_STATUS_UNTIL_LOG_POS 25
|
68
|
+
#define SLAVE_STATUS_MASTER_SSL_ALLOWED 26
|
69
|
+
#define SLAVE_STATUS_MASTER_SSL_CA_FILE 27
|
70
|
+
#define SLAVE_STATUS_MASTER_SSL_CA_PATH 28
|
71
|
+
#define SLAVE_STATUS_MASTER_SSL_CERT 29
|
72
|
+
#define SLAVE_STATUS_MASTER_SSL_CIPHER 30
|
73
|
+
#define SLAVE_STATUS_MASTER_SSL_KEY 31
|
74
|
+
#define SLAVE_STATUS_SECONDS_BEHIND_MASTER 32
|
75
|
+
#define SLAVE_STATUS_MASTER_SSL_VERIFY_SERVER_CERT 33
|
76
|
+
#define SLAVE_STATUS_LAST_IO_ERRNO 34
|
77
|
+
#define SLAVE_STATUS_LAST_IO_ERROR 35
|
78
|
+
#define SLAVE_STATUS_LAST_SQL_ERRNO 36
|
79
|
+
#define SLAVE_STATUS_LAST_SQL_ERROR 37
|
80
|
+
#define SLAVE_STATUS_REPLICATE_IGNORE_SERVER_IDS 38
|
81
|
+
#define SLAVE_STATUS_MASTER_SERVER_ID 39
|
82
|
+
#define SLAVE_STATUS_DEFAULT_SIZE 40
|
83
|
+
|
84
|
+
#ifdef MARIADB_BASE_VERSION
|
85
|
+
# define SLAVE_STATUS_MASTER_SSL_CRL 40
|
86
|
+
# define SLAVE_STATUS_MASTER_SSL_CRLPATH 41
|
87
|
+
# define SLAVE_STATUS_USING_GTID 42
|
88
|
+
# define SLAVE_STATUS_GTID_IO_POS 43
|
89
|
+
# define SLAVE_STATUS_SIZE 44
|
90
|
+
#else
|
91
|
+
# define SLAVE_STATUS_MASTER_UUID 40
|
92
|
+
# define SLAVE_STATUS_MASTER_INFO_FILE 41
|
93
|
+
# define SLAVE_STATUS_SQL_DELAY 42
|
94
|
+
# define SLAVE_STATUS_SQL_REMAINING_DELAY 43
|
95
|
+
# define SLAVE_STATUS_SQL_RUNNING_STATE 44
|
96
|
+
# define SLAVE_STATUS_MASTER_RETRY_COUNT 45
|
97
|
+
# define SLAVE_STATUS_MASTER_BIND 46
|
98
|
+
# define SLAVE_STATUS_LAST_IO_ERROR_TIMESTAMP 47
|
99
|
+
# define SLAVE_STATUS_LAST_SQL_ERROR_TIMESTAMP 48
|
100
|
+
# define SLAVE_STATUS_MASTER_SSL_CRL 49
|
101
|
+
# define SLAVE_STATUS_MASTER_SSL_CRLPATH 50
|
102
|
+
# define SLAVE_STATUS_RETRIEVED_GTID_SET 51
|
103
|
+
# define SLAVE_STATUS_EXECUTED_GTID_SET 52
|
104
|
+
# define SLAVE_STATUS_AUTO_POSITION 53
|
105
|
+
# define SLAVE_STATUS_SIZE 54
|
106
|
+
|
107
|
+
#endif
|
108
|
+
|
109
|
+
#define CON_REC_VALUE_SIZE 67
|
110
|
+
|
35
111
|
struct record
|
36
112
|
{
|
37
|
-
record() : conId(0),
|
38
|
-
updCount(0), delCount(0), insCount(0)
|
113
|
+
record() : conId(0), id(0), db(0), updCount(0), status(0)
|
39
114
|
{
|
40
115
|
name[0] = 0x00;
|
41
116
|
}
|
42
|
-
__int64 conId;
|
43
117
|
union
|
44
118
|
{
|
45
|
-
|
46
|
-
|
119
|
+
__int64 conId; // 8 byte
|
120
|
+
__int64 longValue;
|
121
|
+
struct
|
122
|
+
{
|
123
|
+
unsigned int delCount;
|
124
|
+
unsigned int insCount;
|
125
|
+
};
|
47
126
|
};
|
48
|
-
unsigned
|
49
|
-
|
50
|
-
union
|
127
|
+
unsigned int id; // 4 byte
|
128
|
+
union
|
51
129
|
{
|
52
|
-
|
53
|
-
|
130
|
+
unsigned int db;
|
131
|
+
unsigned int readCount; // 4 byte
|
54
132
|
};
|
55
133
|
union
|
56
134
|
{
|
57
|
-
|
135
|
+
unsigned int updCount; // 4 byte
|
136
|
+
unsigned int type;
|
137
|
+
};
|
138
|
+
|
139
|
+
union // 67 byte
|
140
|
+
{
|
141
|
+
char name[CON_REC_VALUE_SIZE];
|
142
|
+
char value[CON_REC_VALUE_SIZE];
|
143
|
+
};
|
144
|
+
union
|
145
|
+
{
|
146
|
+
char status; // 1 byte
|
58
147
|
struct
|
59
148
|
{
|
60
149
|
char inTransaction : 1;
|
@@ -66,11 +155,17 @@ struct record
|
|
66
155
|
char dummy : 2;
|
67
156
|
};
|
68
157
|
};
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
158
|
+
|
159
|
+
|
160
|
+
#ifdef _UNICODE
|
161
|
+
inline _TCHAR* nameW(_TCHAR* buf, int size)
|
162
|
+
{
|
163
|
+
MultiByteToWideChar(CP_UTF8, 0, name, -1, buf, size);
|
164
|
+
return buf;
|
165
|
+
}
|
166
|
+
#endif
|
167
|
+
}; // 20 + 68 = 88
|
168
|
+
typedef std::vector<record> records;
|
74
169
|
|
75
170
|
} // connection
|
76
171
|
} // transactd
|
@@ -78,6 +173,6 @@ struct record
|
|
78
173
|
} // bzs
|
79
174
|
|
80
175
|
#pragma pack(pop)
|
81
|
-
pragma_pop
|
176
|
+
pragma_pop
|
82
177
|
|
83
178
|
#endif // BZS_DB_TRANSACTD_CONNECTIONRECORD_H
|
data/source/bzs/env/tstring.h
CHANGED
@@ -69,7 +69,7 @@ bool openDbExclusive(database* db, const _TCHAR* uri)
|
|
69
69
|
}
|
70
70
|
|
71
71
|
void __STDCALL
|
72
|
-
onCopyData(database* db, int recordCount, int count, bool& cancel)
|
72
|
+
onCopyData(database* db, table* tb, int recordCount, int count, bool& cancel)
|
73
73
|
{
|
74
74
|
if (count == 0)
|
75
75
|
_tprintf(_T("\n"));
|
@@ -36,7 +36,7 @@ void changeUserTable(dbdef* def)
|
|
36
36
|
}
|
37
37
|
|
38
38
|
void __STDCALL
|
39
|
-
onCopyData(database* db, int recordCount, int count, bool& cancel)
|
39
|
+
onCopyData(database* db, table* tb, int recordCount, int count, bool& cancel)
|
40
40
|
{
|
41
41
|
if (count == 0)
|
42
42
|
std::cout << std::endl;
|
@@ -72,7 +72,8 @@ bool insertUser(table* tb, int id, const _TCHAR* name, int groupid,
|
|
72
72
|
tb->setFV(fieldnum_id, id);
|
73
73
|
tb->setFV(fieldnum_name, name);
|
74
74
|
tb->setFV(fieldnum_group, groupid);
|
75
|
-
tb->
|
75
|
+
if (tb->tableDef()->fieldCount == 4)
|
76
|
+
tb->setFV(fieldnum_tel, tel);
|
76
77
|
tb->insert();
|
77
78
|
if (tb->stat() != 0)
|
78
79
|
showError(_T("insert user record"), tb->tableDef()->tableName(),
|
@@ -60,7 +60,8 @@ void insertUser(fields& fds, int id, const _TCHAR* name, int groupid,
|
|
60
60
|
fds[fieldnum_id] = id;
|
61
61
|
fds[fieldnum_name] = name;
|
62
62
|
fds[fieldnum_group] = groupid;
|
63
|
-
fds
|
63
|
+
if ((int)fds.size() > fieldnum_tel)
|
64
|
+
fds[fieldnum_tel] = tel;
|
64
65
|
|
65
66
|
insertRecord(fds);
|
66
67
|
}
|
@@ -111,6 +111,7 @@ bool createUserTable(dbdef* def)
|
|
111
111
|
fd->setName(_T("tel"));
|
112
112
|
fd->type = USER_STRING_TYPE;
|
113
113
|
fd->setLenByCharnum(21);
|
114
|
+
fd->setNullable(true, true);
|
114
115
|
|
115
116
|
char keyNum = 0;
|
116
117
|
keydef* kd = def->insertKey(tableid, keyNum);
|
@@ -212,6 +213,7 @@ bool createUserExtTable(dbdef* def)
|
|
212
213
|
fd = def->insertField(tableid, filedIndex);
|
213
214
|
fd->setName(_T("blob"));
|
214
215
|
fd->type = BLOB_TYPE;
|
216
|
+
fd->setNullable(true, true);
|
215
217
|
#ifndef USE_PSQL_DATABASE
|
216
218
|
fd->len = 10;
|
217
219
|
++filedIndex;
|
@@ -446,10 +448,11 @@ bool checkVersion(database_ptr db)
|
|
446
448
|
if (td->fieldCount == 4)
|
447
449
|
{
|
448
450
|
table_ptr tb = openTable(db, _T("extention"));
|
449
|
-
|
451
|
+
if (tb->recordCount(false) == 20000)
|
452
|
+
return td->fieldDefs[2].isNullable() == true;
|
453
|
+
return false;
|
450
454
|
}
|
451
455
|
}
|
452
|
-
td = def->tableDefs(1);
|
453
456
|
}
|
454
457
|
return false;
|
455
458
|
}
|
@@ -82,6 +82,12 @@ public:
|
|
82
82
|
virtual bool isShutDown() = 0;
|
83
83
|
virtual bool checkHost(const char* hostCheckname, /*out*/char* hostName, int size) = 0;
|
84
84
|
virtual void cleanup() = 0;
|
85
|
+
virtual const char* user() const = 0;
|
86
|
+
virtual const char* host() const = 0;
|
87
|
+
virtual void setUser(const char* v) = 0;
|
88
|
+
virtual void setHost(const char* v) = 0;
|
89
|
+
virtual void skipGrants(bool v) = 0;
|
90
|
+
virtual bool isSkipGrants() const = 0;
|
85
91
|
};
|
86
92
|
|
87
93
|
// Defines at Implementing of IAppModule , two variables below.
|
@@ -703,6 +703,64 @@ function testBinlogPos(db)
|
|
703
703
|
db.endSnapshot();
|
704
704
|
}
|
705
705
|
|
706
|
+
function testConnMgr(uri)
|
707
|
+
{
|
708
|
+
var mgr = new ActiveXObject('transactd.connMgr');
|
709
|
+
var db = createDatabaseObject();
|
710
|
+
mgr.setDatabase(db);
|
711
|
+
mgr.connect(uri);
|
712
|
+
checkEqual(db.stat , 0, "mgr.connect");
|
713
|
+
|
714
|
+
//connections
|
715
|
+
var recs = mgr.Connections();
|
716
|
+
checkEqual(mgr.stat , 0, "mgr.Connections");
|
717
|
+
//InUseDatabases
|
718
|
+
var recs1 = mgr.InUseDatabases(recs(0).conid);
|
719
|
+
checkEqual(mgr.stat , 0, "mgr.InUseDatabases");
|
720
|
+
//InUseTables
|
721
|
+
var recs2 = mgr.InUseTables(recs(0).conid, recs(0).db);
|
722
|
+
checkEqual(mgr.stat , 0, "mgr.InUseTables");
|
723
|
+
|
724
|
+
checkEqual(recs.size , 1, "mgr.Connections.size");
|
725
|
+
checkEqual(recs1.size , 1, "mgr.InUseDatabases.size");
|
726
|
+
checkEqual(recs2.size , 4, "mgr.InUseTables.size");
|
727
|
+
|
728
|
+
//tables
|
729
|
+
recs = mgr.tables("test_v3");
|
730
|
+
checkEqual(mgr.stat , 0, "mgr.tables");
|
731
|
+
checkEqual(recs.size , 3, "mgr.tables.size");
|
732
|
+
|
733
|
+
//views
|
734
|
+
recs = mgr.views("test_v3");
|
735
|
+
checkEqual(mgr.stat , 0, "mgr.views");
|
736
|
+
checkEqual(recs.size , 1, "mgr.views.size");
|
737
|
+
checkEqual(recs(0).name , "idlessthan5");
|
738
|
+
|
739
|
+
//schemaTables
|
740
|
+
recs = mgr.schemaTables("test_v3");
|
741
|
+
checkEqual(mgr.stat , 0, "mgr.schemaTables");
|
742
|
+
checkEqual(recs.size , 1, "mgr.schemaTables.size");
|
743
|
+
checkEqual(recs(0).name , "test");
|
744
|
+
|
745
|
+
//databases
|
746
|
+
recs = mgr.databases();
|
747
|
+
checkEqual(mgr.stat , 0, "mgr.databases");
|
748
|
+
var size = recs.size;
|
749
|
+
mgr.RemoveSystemDb(recs);
|
750
|
+
checkNotEqual(size , recs.size, "RemoveSystemDb recs");
|
751
|
+
|
752
|
+
//slaveStatus
|
753
|
+
recs = mgr.slaveStatus();
|
754
|
+
checkEqual(mgr.stat , 0, "mgr.slaveStatus");
|
755
|
+
var status = "";
|
756
|
+
/*for (var i = 0; i<recs.size; ++i)
|
757
|
+
status += (mgr.SlaveStatusName(i) + "\t:" + recs(i).value + "\n");
|
758
|
+
*/
|
759
|
+
mgr.disconnect();
|
760
|
+
checkEqual(mgr.stat , 0, "mgr.disconnect");
|
761
|
+
WScript.Echo("\n\n" + status);
|
762
|
+
}
|
763
|
+
|
706
764
|
|
707
765
|
/*--------------------------------------------------------------------------------*/
|
708
766
|
function test(atu, ate, db)
|
@@ -994,6 +1052,23 @@ function test(atu, ate, db)
|
|
994
1052
|
//binlogPos
|
995
1053
|
testBinlogPos(db);
|
996
1054
|
|
1055
|
+
//getCreateViewSql
|
1056
|
+
db.createTable("create view idlessthan5 as select * from user where id < 5");
|
1057
|
+
var view = db.getCreateViewSql("idlessthan5");
|
1058
|
+
checkNotEqual(view.indexOf("idlessthan5") , -1, "getCreateViewSql");
|
1059
|
+
checkNotEqual(view.indexOf("���O") , -1, "getCreateViewSql 2");
|
1060
|
+
//getCreateSql2
|
1061
|
+
var sql = tb.getCreateSql();
|
1062
|
+
checkNotEqual(sql.indexOf("CREATE TABLE") , -1, "getCreateSql");
|
1063
|
+
checkNotEqual(view.indexOf("���O") , -1, "getCreateSql 2");
|
1064
|
+
|
1065
|
+
//createAssociate()
|
1066
|
+
var dba = db.createAssociate();
|
1067
|
+
checkEqual(db.stat , 0, "createAssociate");
|
1068
|
+
checkEqual(dba.IsAssociate , true, "IsAssociate");
|
1069
|
+
// connMgr
|
1070
|
+
testConnMgr(db.uri);
|
1071
|
+
|
997
1072
|
//WScript.Echo(" -- End Test -- ");
|
998
1073
|
}
|
999
1074
|
/*--------------------------------------------------------------------------------*/
|
@@ -297,6 +297,8 @@ class transactdTest extends PHPUnit_Framework_TestCase
|
|
297
297
|
$db->abortTrn();
|
298
298
|
$this->assertEquals(true, false);
|
299
299
|
}
|
300
|
+
$tb->close();
|
301
|
+
$tb3->close();
|
300
302
|
}
|
301
303
|
private function openTable($db)
|
302
304
|
{
|
@@ -311,14 +313,14 @@ class transactdTest extends PHPUnit_Framework_TestCase
|
|
311
313
|
public function test()
|
312
314
|
{
|
313
315
|
$db = new bz\database();
|
314
|
-
|
316
|
+
|
315
317
|
$this->createDatabase($db);
|
316
318
|
$this->openDatabase($db);
|
317
319
|
$this->createUserTable($db);
|
318
320
|
$this->createUserExtTable($db);
|
319
321
|
$this->insertData($db);
|
320
322
|
$mysql_5_5 = $this->isMySQL5_5($db);
|
321
|
-
|
323
|
+
|
322
324
|
$db->setAutoSchemaUseNullkey(true);
|
323
325
|
$this->assertEquals($db->autoSchemaUseNullkey(), true);
|
324
326
|
$db->setAutoSchemaUseNullkey(false);
|
@@ -345,15 +347,13 @@ class transactdTest extends PHPUnit_Framework_TestCase
|
|
345
347
|
|
346
348
|
//size()
|
347
349
|
$this->assertEquals($td->size() , 1184);
|
348
|
-
|
350
|
+
|
349
351
|
//InUse
|
350
352
|
$this->assertEquals($td->inUse() , 0);
|
351
353
|
|
352
354
|
//nullfields
|
353
355
|
$this->assertEquals($td->nullfields(), 2);
|
354
|
-
|
355
356
|
|
356
|
-
|
357
357
|
//fieldNumByName
|
358
358
|
$this->assertEquals($td->fieldNumByName("tel") , 3);
|
359
359
|
|
@@ -609,6 +609,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
|
|
609
609
|
$tb->release();
|
610
610
|
$this->assertEquals($td->inUse() , 0);
|
611
611
|
|
612
|
+
$db->close();
|
612
613
|
}
|
613
614
|
|
614
615
|
public function test_bit()
|
@@ -693,7 +694,9 @@ class transactdTest extends PHPUnit_Framework_TestCase
|
|
693
694
|
$this->assertEquals($bits[62], true);
|
694
695
|
$this->assertEquals($bits[11], false);
|
695
696
|
$this->assertEquals($bits[13], false);
|
696
|
-
|
697
|
+
|
698
|
+
$tb->close();
|
699
|
+
$db->close();
|
697
700
|
}
|
698
701
|
|
699
702
|
public function test_bitset()
|
@@ -749,6 +752,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
|
|
749
752
|
$fd->len = 4;
|
750
753
|
$fd->setDefaultValue($bits1);
|
751
754
|
$this->assertEquals($fd->defaultValue(), '4');
|
755
|
+
$db->close();
|
752
756
|
}
|
753
757
|
public function test_snapshot()
|
754
758
|
{
|
@@ -761,7 +765,100 @@ class transactdTest extends PHPUnit_Framework_TestCase
|
|
761
765
|
$this->assertEquals($bpos->type, bz\transactd::REPL_POSTYPE_POS);
|
762
766
|
$this->assertNotEquals($bpos->pos, 0);
|
763
767
|
$this->assertNotEquals($bpos->filename, "");
|
764
|
-
echo PHP_EOL.'binlog pos = '.$bpos->filename.':'.$bpos->pos.PHP_EOL;
|
768
|
+
//echo PHP_EOL.'binlog pos = '.$bpos->filename.':'.$bpos->pos.PHP_EOL;
|
765
769
|
$db->endSnapshot();
|
770
|
+
$db->close();
|
771
|
+
}
|
772
|
+
public function test_getSql()
|
773
|
+
{
|
774
|
+
$db = new bz\database();
|
775
|
+
$this->openDatabase($db);
|
776
|
+
$db->createTable("create view idlessthan5 as select * from user where id < 5");
|
777
|
+
$view = $db->getCreateViewSql("idlessthan5");
|
778
|
+
$this->assertEquals((strpos($view, "idlessthan5") !== false), true);
|
779
|
+
$this->assertEquals((strpos($view, "名前") !== false), true);
|
780
|
+
//echo($view);
|
781
|
+
$tb = $db->openTable("user");
|
782
|
+
$this->assertEquals($db->stat(), 0);
|
783
|
+
$sql = $tb->getCreateSql();
|
784
|
+
//echo($sql);
|
785
|
+
$this->assertEquals((strpos($sql, "CREATE TABLE") !== false), true);
|
786
|
+
$this->assertEquals((strpos($sql, "名前") !== false), true);
|
787
|
+
$tb->close();
|
788
|
+
$db->close();
|
789
|
+
}
|
790
|
+
public function test_createAssociate()
|
791
|
+
{
|
792
|
+
$db = new bz\database();
|
793
|
+
$this->openDatabase($db);
|
794
|
+
$dba = $db->createAssociate();
|
795
|
+
$this->assertEquals($db->stat(), 0);
|
796
|
+
$this->assertEquals($dba->isAssociate(), true);
|
797
|
+
$dba->close();
|
798
|
+
$db->close();
|
799
|
+
}
|
800
|
+
public function test_ConnMgr()
|
801
|
+
{
|
802
|
+
// other database connection
|
803
|
+
$db_other = new bz\database();
|
804
|
+
$this->openDatabase($db_other);
|
805
|
+
$tb_other = $db_other->openTable("user");
|
806
|
+
$this->assertEquals($db_other->stat(), 0);
|
807
|
+
// connMgr connection
|
808
|
+
$db = new bz\database();
|
809
|
+
$mgr = new bz\connMgr($db);
|
810
|
+
$mgr->connect($db_other->uri());
|
811
|
+
$this->assertEquals($mgr->stat(), 0);
|
812
|
+
// connections
|
813
|
+
$recs = $mgr->connections();
|
814
|
+
$this->assertEquals($mgr->stat(), 0);
|
815
|
+
$this->assertEquals($recs->size(), count($recs));
|
816
|
+
$this->assertEquals($recs->size(), 1);
|
817
|
+
// InUseDatabases
|
818
|
+
$recs = $mgr->inUseDatabases($recs[0]->conId);
|
819
|
+
$this->assertEquals($mgr->stat(), 0);
|
820
|
+
$this->assertEquals($recs->size(), count($recs));
|
821
|
+
$this->assertEquals($recs->size(), 1);
|
822
|
+
// InUseTables
|
823
|
+
$recs = $mgr->inUseTables($recs[0]->conId, $recs[0]->db);
|
824
|
+
$this->assertEquals($mgr->stat(), 0);
|
825
|
+
$this->assertEquals($recs->size(), count($recs));
|
826
|
+
$this->assertEquals($recs->size(), 2);
|
827
|
+
// tables, views
|
828
|
+
$recs = $mgr->tables("test_v3");
|
829
|
+
$this->assertEquals($mgr->stat(), 0);
|
830
|
+
$recs1 = $mgr->views("test_v3");
|
831
|
+
$this->assertEquals($mgr->stat(), 0);
|
832
|
+
$this->assertEquals($recs->size(), count($recs));
|
833
|
+
$this->assertEquals($recs->size(), 3);
|
834
|
+
$this->assertEquals($recs1->size(), count($recs1));
|
835
|
+
$this->assertEquals($recs1->size(), 1);
|
836
|
+
$this->assertEquals($recs1[0]->name, "idlessthan5");
|
837
|
+
// schemaTables
|
838
|
+
$recs = $mgr->schemaTables("test_v3");
|
839
|
+
$this->assertEquals($mgr->stat(), 0);
|
840
|
+
$this->assertEquals($recs->size(), count($recs));
|
841
|
+
$this->assertEquals($recs->size(), 1);
|
842
|
+
$this->assertEquals($recs[0]->name, "test");
|
843
|
+
// databases
|
844
|
+
$recs = $mgr->databases();
|
845
|
+
$this->assertEquals($mgr->stat(), 0);
|
846
|
+
$this->assertEquals($recs->size(), count($recs));
|
847
|
+
$size = $recs->size();
|
848
|
+
$mgr->RemoveSystemDb($recs);
|
849
|
+
$this->assertEquals($mgr->stat(), 0);
|
850
|
+
$this->assertEquals($recs->size(), count($recs));
|
851
|
+
$this->assertNotEquals($recs->size(), $size);
|
852
|
+
// slaveStatus
|
853
|
+
$recs = $mgr->slaveStatus();
|
854
|
+
$this->assertEquals($mgr->stat(), 0);
|
855
|
+
for ($i = 0; $i < $recs->size(); $i++)
|
856
|
+
{
|
857
|
+
echo(PHP_EOL . $mgr->slaveStatusName($i) . "\t:" . $recs[$i]->value);
|
858
|
+
}
|
859
|
+
$mgr->disconnect();
|
860
|
+
$this->assertEquals($mgr->stat(), 0);
|
861
|
+
$tb_other->close();
|
862
|
+
$db_other->close();
|
766
863
|
}
|
767
864
|
}
|
@@ -689,6 +689,8 @@ describe Transactd, 'V3Features' do
|
|
689
689
|
expect(bits[62]).to eq true
|
690
690
|
expect(bits[11]).to eq false
|
691
691
|
expect(bits[13]).to eq false
|
692
|
+
tb.close()
|
693
|
+
db.close()
|
692
694
|
end
|
693
695
|
|
694
696
|
it 'bitset' do
|
@@ -754,6 +756,8 @@ describe Transactd, 'V3Features' do
|
|
754
756
|
expect(rs[3]['bit32'].isNull()).to eq true
|
755
757
|
expect(rs[3]['bit64'].isNull()).to eq true
|
756
758
|
ats.release()
|
759
|
+
db.dropTable(SEB_TABLENAME);
|
760
|
+
expect(db.stat()).to eq 0
|
757
761
|
db.close()
|
758
762
|
end
|
759
763
|
it 'snapshot' do
|
@@ -771,4 +775,84 @@ describe Transactd, 'V3Features' do
|
|
771
775
|
db.endSnapshot();
|
772
776
|
db.close()
|
773
777
|
end
|
778
|
+
it 'get sql' do
|
779
|
+
db = Transactd::Database.new()
|
780
|
+
openDatabase(db)
|
781
|
+
db.createTable("create view idlessthan5 as select * from user where id < 5")
|
782
|
+
view = db.getCreateViewSql("idlessthan5")
|
783
|
+
expect(view.include?("idlessthan5")).to eq true
|
784
|
+
expect(view.include?("名前")).to eq true
|
785
|
+
#puts("view" + view)
|
786
|
+
tb = db.openTable("user")
|
787
|
+
expect(db.stat()).to eq 0
|
788
|
+
sql = tb.getCreateSql()
|
789
|
+
#puts("sql" + sql)
|
790
|
+
expect(sql.include?("CREATE TABLE")).to eq true
|
791
|
+
expect(sql.include?("名前")).to eq true
|
792
|
+
tb.close()
|
793
|
+
db.close()
|
794
|
+
end
|
795
|
+
it 'create associate' do
|
796
|
+
db = Transactd::Database.new()
|
797
|
+
openDatabase(db)
|
798
|
+
dba = db.createAssociate()
|
799
|
+
expect(db.stat()).to eq 0
|
800
|
+
expect(dba.isAssociate()).to eq true
|
801
|
+
dba.close()
|
802
|
+
db.close()
|
803
|
+
end
|
804
|
+
it 'connMgr' do
|
805
|
+
# other database connection
|
806
|
+
db_other = Transactd::Database.new()
|
807
|
+
openDatabase(db_other)
|
808
|
+
tb_other = db_other.openTable("user")
|
809
|
+
expect(db_other.stat()).to eq 0
|
810
|
+
# connMgr connection
|
811
|
+
db = Transactd::Database.new()
|
812
|
+
mgr = Transactd::ConnMgr.new(db)
|
813
|
+
mgr.connect(db_other.uri())
|
814
|
+
expect(mgr.stat()).to eq 0
|
815
|
+
# connections
|
816
|
+
recs = mgr.connections()
|
817
|
+
expect(mgr.stat()).to eq 0
|
818
|
+
expect(recs.size()).to eq 1
|
819
|
+
# inUseDatabases
|
820
|
+
recs = mgr.inUseDatabases(recs[0].conId)
|
821
|
+
expect(mgr.stat()).to eq 0
|
822
|
+
expect(recs.size()).to eq 1
|
823
|
+
# inUseTables
|
824
|
+
recs = mgr.inUseTables(recs[0].conId, recs[0].db)
|
825
|
+
expect(mgr.stat()).to eq 0
|
826
|
+
expect(recs.size()).to eq 2
|
827
|
+
# tables, views
|
828
|
+
recs = mgr.tables("test_v3")
|
829
|
+
expect(mgr.stat()).to eq 0
|
830
|
+
recs1 = mgr.views("test_v3")
|
831
|
+
expect(mgr.stat()).to eq 0
|
832
|
+
expect(recs.size()).to eq 3
|
833
|
+
expect(recs1.size()).to eq 1
|
834
|
+
expect(recs1[0].name).to eq "idlessthan5"
|
835
|
+
# schemaTables
|
836
|
+
recs = mgr.schemaTables("test_v3")
|
837
|
+
expect(mgr.stat()).to eq 0
|
838
|
+
expect(recs.size()).to eq 1
|
839
|
+
expect(recs[0].name).to eq "test"
|
840
|
+
# databases
|
841
|
+
recs = mgr.databases()
|
842
|
+
expect(mgr.stat()).to eq 0
|
843
|
+
size = recs.size()
|
844
|
+
Transactd::ConnMgr::removeSystemDb(recs)
|
845
|
+
expect(mgr.stat()).to eq 0
|
846
|
+
expect(recs.size()).not_to eq size
|
847
|
+
# slaveStatus
|
848
|
+
recs = mgr.slaveStatus()
|
849
|
+
expect(mgr.stat()).to eq 0
|
850
|
+
for i in 0...recs.size() do
|
851
|
+
puts (Transactd::ConnMgr::slaveStatusName(i) + "\t" + recs[i].value)
|
852
|
+
end
|
853
|
+
mgr.disconnect()
|
854
|
+
expect(mgr.stat()).to eq 0
|
855
|
+
tb_other.close()
|
856
|
+
db_other.close()
|
857
|
+
end
|
774
858
|
end
|