transactd 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/BUILD_UNIX-JA +174 -0
  3. data/BUILD_WIN-JA +256 -0
  4. data/CMakeLists.txt +96 -0
  5. data/COPYING +339 -0
  6. data/README +406 -0
  7. data/README-JA +424 -0
  8. data/bin/common/tdclc_32_1_0.dll +0 -0
  9. data/bin/common/tdclc_64_1_0.dll +0 -0
  10. data/build/common/check_for_link_iconv.cmake +73 -0
  11. data/build/common/copyifgreater.cmd +30 -0
  12. data/build/common/copyifgreater.js +290 -0
  13. data/build/common/get_boost_libs.cmake +106 -0
  14. data/build/common/get_ruby_path.cmake +115 -0
  15. data/build/common/options.cmake +127 -0
  16. data/build/common/smart_install.cmake +263 -0
  17. data/build/common/system.cmake +122 -0
  18. data/build/common/transactd.rc.in +52 -0
  19. data/build/common/transactd_cl_common.cmake +101 -0
  20. data/build/common/transactd_cl_output.cmake +93 -0
  21. data/build/common/transactd_common.cmake +237 -0
  22. data/build/common/transactd_required.cmake +28 -0
  23. data/build/swig/ruby/generate.cmake.in +35 -0
  24. data/build/swig/ruby/generate.cmd.in +19 -0
  25. data/build/swig/ruby/ruby.swg +101 -0
  26. data/build/swig/tdcl.i +188 -0
  27. data/build/tdclc/BUILDNUMBER.txt +1 -0
  28. data/build/tdclc/CMakeLists.txt +170 -0
  29. data/build/tdclc/tdclc_32.cbproj +181 -0
  30. data/build/tdclc/tdclc_64.cbproj +205 -0
  31. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  32. data/build/tdclcpp/CMakeLists.txt +142 -0
  33. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
  34. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
  35. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  36. data/build/tdclrb/CMakeLists.txt +258 -0
  37. data/build/tdclrb/GEM_VERSION +3 -0
  38. data/build/tdclrb/bldgem/extconf.rb +123 -0
  39. data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
  40. data/build/tdclrb/gem/Makefile.win32-VS +65 -0
  41. data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
  42. data/build/tdclrb/gem/detect.rb +31 -0
  43. data/build/tdclrb/gem/helper.rb +113 -0
  44. data/build/tdclrb/gem/transactd.rb +22 -0
  45. data/build/tdclrb/gem_output.cmake +44 -0
  46. data/source/bzs/db/IBlobBuffer.h +51 -0
  47. data/source/bzs/db/blobBuffer.h +177 -0
  48. data/source/bzs/db/blobStructs.h +85 -0
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
  50. data/source/bzs/db/engine/mysql/bookmark.h +195 -0
  51. data/source/bzs/db/engine/mysql/database.cpp +1882 -0
  52. data/source/bzs/db/engine/mysql/database.h +465 -0
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
  54. data/source/bzs/db/engine/mysql/dbManager.h +143 -0
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
  56. data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
  63. data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
  64. data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
  68. data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
  69. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
  70. data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
  71. data/source/bzs/db/protocol/tdap/client/client.h +292 -0
  72. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
  73. data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
  74. data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
  75. data/source/bzs/db/protocol/tdap/client/database.h +118 -0
  76. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
  77. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
  78. data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
  79. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
  80. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
  81. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
  82. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
  83. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
  84. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
  85. data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
  86. data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
  87. data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
  88. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
  89. data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
  90. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
  91. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
  92. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
  93. data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
  94. data/source/bzs/db/protocol/tdap/client/request.h +198 -0
  95. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
  96. data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
  97. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
  98. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
  99. data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
  100. data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
  101. data/source/bzs/db/protocol/tdap/client/table.h +221 -0
  102. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
  103. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
  104. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
  105. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
  106. data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
  107. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
  108. data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
  109. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
  110. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
  111. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
  112. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
  113. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
  114. data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
  115. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
  116. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
  117. data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
  118. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
  119. data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
  120. data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
  121. data/source/bzs/db/transactd/appBuilderImple.h +55 -0
  122. data/source/bzs/db/transactd/appModule.cpp +183 -0
  123. data/source/bzs/db/transactd/appModule.h +80 -0
  124. data/source/bzs/db/transactd/connManager.cpp +201 -0
  125. data/source/bzs/db/transactd/connManager.h +60 -0
  126. data/source/bzs/db/transactd/connectionRecord.h +69 -0
  127. data/source/bzs/db/transactd/transactd.cpp +325 -0
  128. data/source/bzs/env/compiler.h +135 -0
  129. data/source/bzs/env/crosscompile.cpp +130 -0
  130. data/source/bzs/env/crosscompile.h +150 -0
  131. data/source/bzs/env/fileopen.h +36 -0
  132. data/source/bzs/env/mbcswchrLinux.cpp +40 -0
  133. data/source/bzs/env/mbcswchrLinux.h +88 -0
  134. data/source/bzs/env/tstring.h +183 -0
  135. data/source/bzs/example/changeSchema.cpp +117 -0
  136. data/source/bzs/example/changeSchema_c.cpp +78 -0
  137. data/source/bzs/example/connection_pool_c.cpp +171 -0
  138. data/source/bzs/example/createDatabase.cpp +305 -0
  139. data/source/bzs/example/createDatabase_c.cpp +202 -0
  140. data/source/bzs/example/deleteRecords.cpp +87 -0
  141. data/source/bzs/example/deleteRecords_c.cpp +57 -0
  142. data/source/bzs/example/dropDatabase.cpp +59 -0
  143. data/source/bzs/example/dropDatabase_c.cpp +34 -0
  144. data/source/bzs/example/insertRecords.cpp +212 -0
  145. data/source/bzs/example/insertRecords_c.cpp +153 -0
  146. data/source/bzs/example/readRecords.cpp +141 -0
  147. data/source/bzs/example/readRecords_c.cpp +107 -0
  148. data/source/bzs/example/updateRecords.cpp +99 -0
  149. data/source/bzs/example/updateRecords_c.cpp +71 -0
  150. data/source/bzs/example/update_with_transaction.cpp +104 -0
  151. data/source/bzs/example/update_with_transaction_c.cpp +80 -0
  152. data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
  153. data/source/bzs/netsvc/client/tcpClient.h +489 -0
  154. data/source/bzs/netsvc/server/IAppModule.h +94 -0
  155. data/source/bzs/netsvc/server/iserver.h +65 -0
  156. data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
  157. data/source/bzs/netsvc/server/serverCpt.h +88 -0
  158. data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
  159. data/source/bzs/netsvc/server/serverPipe.h +96 -0
  160. data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
  161. data/source/bzs/netsvc/server/serverTpool.h +84 -0
  162. data/source/bzs/rtl/benchmark.cpp +96 -0
  163. data/source/bzs/rtl/benchmark.h +65 -0
  164. data/source/bzs/rtl/datetime.cpp +375 -0
  165. data/source/bzs/rtl/datetime.h +53 -0
  166. data/source/bzs/rtl/debuglog.cpp +106 -0
  167. data/source/bzs/rtl/debuglog.h +97 -0
  168. data/source/bzs/rtl/exception.h +116 -0
  169. data/source/bzs/rtl/stl_uty.cpp +35 -0
  170. data/source/bzs/rtl/stl_uty.h +29 -0
  171. data/source/bzs/rtl/stringBuffers.cpp +101 -0
  172. data/source/bzs/rtl/stringBuffers.h +58 -0
  173. data/source/bzs/rtl/strtrim.cpp +135 -0
  174. data/source/bzs/rtl/strtrim.h +46 -0
  175. data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
  176. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
  177. data/source/bzs/test/tdclrb/prepare.rb +226 -0
  178. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
  179. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
  180. data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
  181. data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
  182. data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
  183. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
  184. data/source/global/tdclatl/Database.cpp +503 -0
  185. data/source/global/tdclatl/Database.h +139 -0
  186. data/source/global/tdclatl/DbDef.cpp +242 -0
  187. data/source/global/tdclatl/DbDef.h +79 -0
  188. data/source/global/tdclatl/Field.cpp +92 -0
  189. data/source/global/tdclatl/Field.h +59 -0
  190. data/source/global/tdclatl/FieldDef.cpp +238 -0
  191. data/source/global/tdclatl/FieldDef.h +87 -0
  192. data/source/global/tdclatl/Flags.cpp +111 -0
  193. data/source/global/tdclatl/Flags.h +55 -0
  194. data/source/global/tdclatl/KeyDef.cpp +51 -0
  195. data/source/global/tdclatl/KeyDef.h +55 -0
  196. data/source/global/tdclatl/KeySegment.cpp +55 -0
  197. data/source/global/tdclatl/Table.cpp +600 -0
  198. data/source/global/tdclatl/Table.h +144 -0
  199. data/source/global/tdclatl/TableDef.cpp +291 -0
  200. data/source/global/tdclatl/TableDef.h +86 -0
  201. data/source/global/tdclatl/TdVersion.cpp +74 -0
  202. data/source/global/tdclatl/TdVersion.h +54 -0
  203. data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
  204. data/source/global/tdclatl/dllmain.cpp +30 -0
  205. data/source/global/tdclatl/dllmain.h +27 -0
  206. data/source/global/tdclatl/keySegment.h +57 -0
  207. data/source/global/tdclatl/resource.h +0 -0
  208. data/source/global/tdclatl/stdafx.cpp +2 -0
  209. data/source/global/tdclatl/stdafx.h +25 -0
  210. data/source/global/tdclatl/targetver.h +4 -0
  211. data/source/global/tdclatl/tdclatl.cpp +68 -0
  212. data/source/global/tdclatl/tdclatl.def +10 -0
  213. data/source/global/tdclatl/tdclatl.idl +1035 -0
  214. data/source/linux/charsetConvert.h +112 -0
  215. data/source/linux/linuxTypes.h +33 -0
  216. data/source/linux/tchar.h +428 -0
  217. data/transactd.gemspec +97 -0
  218. metadata +267 -0
@@ -0,0 +1,383 @@
1
+ /*=================================================================
2
+ Copyright (C) 2012 2013 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+
20
+ #include "debuglog.h"
21
+ #include "btrvProtocol.h"
22
+ #include "recordsetReader.h"
23
+ #include "stl_uty.h"
24
+
25
+ namespace bzs
26
+ {
27
+ namespace msqlp
28
+ {
29
+
30
+ static char logfilename[FN_REFLEN];
31
+ static boost::mutex g_logMutex;
32
+
33
+
34
+
35
+ char msg[1024];
36
+ void writeDebuglog(ushort_td op, request& req, bool error)
37
+ {
38
+ bool write = false;
39
+
40
+
41
+ switch(op)
42
+ {
43
+ /*case TD_CONNECT:
44
+ case TD_STOP_ENGINE:
45
+
46
+ break;*/
47
+ case TD_RESET_CLIENT:
48
+ {
49
+ std::string dbname = getDatabaseName(req);
50
+ sprintf_s(msg, "%s TD_RESET_CLIENT result = %d \tdbname = %s\t cid = %d \n"
51
+ ,dateTime(), req.result, dbname.c_str(), req.cid);
52
+ write = true;
53
+ break;
54
+ }
55
+ case TD_CREATETABLE:
56
+ {
57
+ std::string dbname = getDatabaseName(req);
58
+ sprintf_s(msg, "%s TD_CREATETABLE result = %d \tdbname = %s\t table=%s\n"
59
+ ,dateTime(), req.result, dbname.c_str(), getTableName(req).c_str());
60
+ write = true;
61
+ break;
62
+ }
63
+ case TD_OPENTABLE:
64
+ {
65
+ std::string dbname = getDatabaseName(req);
66
+ sprintf_s(msg, "%s TD_OPENTABLE result = %d \tHandle = %d \tdbname = %s\n"
67
+ ,dateTime(), req.result, req.pbk->handle, dbname.c_str());
68
+ write = true;
69
+ break;
70
+ }
71
+ case TD_CLOSETABLE:
72
+ sprintf_s(msg, "%s TD_CLOSETABLE result = %d \tHandle = %d\n"
73
+ ,dateTime(), req.result, req.pbk->handle);
74
+ write = true;
75
+ break;
76
+ case TD_KEY_SEEK:
77
+ sprintf_s(msg, "%s TD_KEY_SEEK result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
78
+ write = true;
79
+ break;
80
+ case TD_KEY_AFTER:
81
+ sprintf_s(msg, "%s TD_KEY_AFTER result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
82
+ write = true;
83
+ break;
84
+ case TD_KEY_OR_AFTER:
85
+ sprintf_s(msg, "%s TD_KEY_OR_AFTER result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
86
+ write = true;
87
+ break;
88
+ case TD_KEY_BEFORE:
89
+ sprintf_s(msg, "%s TD_KEY_BEFORE result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
90
+ write = true;
91
+ break;
92
+ case TD_KEY_OR_BEFORE:
93
+ sprintf_s(msg, "%s TD_KEY_OR_BEFORE result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
94
+ write = true;
95
+ break;
96
+ case TD_KEY_FIRST:
97
+ sprintf_s(msg, "%s TD_KEY_FIRST result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
98
+ write = true;
99
+ break;
100
+ case TD_KEY_PREV:
101
+ sprintf_s(msg, "%s TD_KEY_PREV result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
102
+ write = true;
103
+ break;
104
+ case TD_KEY_LAST:
105
+ sprintf_s(msg, "%s TD_KEY_LAST result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
106
+ write = true;
107
+ break;
108
+ case TD_KEY_NEXT:
109
+ sprintf_s(msg, "%s TD_KEY_NEXT result = %d \tHandle = %d\n" ,dateTime(), req.result, req.pbk->handle);
110
+ write = true;
111
+ break;
112
+ case TD_REC_INSERT:
113
+ sprintf_s(msg, "%s TD_REC_INSERT result = %d \tHandle = %d\n"
114
+ ,dateTime(), req.result, req.pbk->handle);
115
+ write = true;
116
+ break;
117
+ case TD_REC_UPDATE:
118
+ sprintf_s(msg, "%s TD_REC_UPDATE result = %d \tHandle = %d\n"
119
+ ,dateTime(), req.result, req.pbk->handle);
120
+ write = true;
121
+ break;
122
+ case TD_REC_DELETE:
123
+ sprintf_s(msg, "%s TD_REC_DELETE result = %d \tHandle = %d\n"
124
+ ,dateTime(), req.result, req.pbk->handle);
125
+ write = true;
126
+ break;
127
+ case TD_BEGIN_TRANSACTION:
128
+ sprintf_s(msg, "%s TD_BEGIN_TRANSACTION cid = %d \n",dateTime(), req.cid);
129
+ write = true;
130
+ break;
131
+ case TD_END_TRANSACTION:
132
+ sprintf_s(msg, "%s TD_END_TRANSACTION cid = %d \n",dateTime(), req.cid);
133
+ write = true;
134
+ break;
135
+ case TD_ABORT_TRANSACTION:
136
+ sprintf_s(msg, "%s TD_ABORT_TRANSACTION cid = %d \n",dateTime(), req.cid);
137
+ write = true;
138
+ break;
139
+ case TD_BEGIN_SHAPSHOT:
140
+ sprintf_s(msg, "%s TD_BEGIN_SHAPSHOT cid = %d \n",dateTime(), req.cid);
141
+ write = true;
142
+ break;
143
+ case TD_END_SNAPSHOT:
144
+ sprintf_s(msg, "%s TD_END_SNAPSHOT cid = %d \n",dateTime(), req.cid);
145
+ write = true;
146
+ break;
147
+ case TD_TABLE_INFO:
148
+ {
149
+ std::string dbname = getDatabaseName(req);
150
+ sprintf_s(msg, "%s TD_TABLE_INFO result = %d \tHandle = %d\n"
151
+ ,dateTime(), req.result, req.pbk->handle);
152
+ write = true;
153
+ break;
154
+ }
155
+
156
+ case TD_POS_FIRST:
157
+ sprintf_s(msg, "%s TD_POS_FIRST result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
158
+ write = true;
159
+ break;
160
+ case TD_POS_LAST:
161
+ sprintf_s(msg, "%s TD_POS_LAST result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
162
+ write = true;
163
+ break;
164
+ case TD_POS_NEXT:
165
+ sprintf_s(msg, "%s TD_POS_NEXT result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
166
+ write = true;
167
+ break;
168
+ case TD_POS_PREV:
169
+ sprintf_s(msg, "%s TD_POS_PREV result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
170
+ write = true;
171
+ break;
172
+ case TD_BOOKMARK:
173
+ if (req.result==0)
174
+ sprintf_s(msg, "%s TD_BOOKMARK result = %d \tHandle = %d key = %d pos = %d\n"
175
+ ,dateTime(), req.result, req.pbk->handle, req.keyNum, *((uint*)req.data));
176
+ else
177
+ sprintf_s(msg, "%s TD_BOOKMARK result = %d \tHandle = %d key = %d \n"
178
+ ,dateTime(), req.result, req.pbk->handle, req.keyNum);
179
+ write = true;
180
+ break;
181
+
182
+ case TD_MOVE_BOOKMARK:
183
+ sprintf_s(msg, "%s TD_MOVE_BOOKMARK result = %d \tHandle = %d key = %d pos = %d\n"
184
+ ,dateTime(), req.result, req.pbk->handle, req.keyNum, *((uchar*)req.data));
185
+ write = true;
186
+ break;
187
+
188
+ case TD_GETDIRECTORY:
189
+ sprintf_s(msg, "%s TD_GETDIRECTORY cid = %d \n",dateTime(), req.cid);
190
+ write = true;
191
+ break;
192
+
193
+ /*case TD_VERSION:
194
+ break;
195
+ case TD_CLEAR_OWNERNAME:
196
+ */
197
+ case TD_SET_OWNERNAME:
198
+ sprintf_s(msg, "%s TD_SET_OWNERNAME result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
199
+ write = true;
200
+ break;
201
+ case TD_DROP_INDEX:
202
+ sprintf_s(msg, "%s TD_DROP_INDEX result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
203
+ write = true;
204
+ break;
205
+ case TD_KEY_NEXT_MULTI:
206
+ sprintf_s(msg, "%s TD_KEY_NEXT_MULTI result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
207
+ write = true;
208
+ break;
209
+ case TD_KEY_PREV_MULTI:
210
+ sprintf_s(msg, "%s TD_KEY_PREV_MULTI result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
211
+ write = true;
212
+ break;
213
+ case TD_POS_NEXT_MULTI:
214
+ sprintf_s(msg, "%s TD_POS_NEXT_MULTI result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
215
+ write = true;
216
+ break;
217
+ case TD_POS_PREV_MULTI:
218
+ sprintf_s(msg, "%s TD_POS_PREV_MULTI result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
219
+ write = true;
220
+ break;
221
+ case TD_MOVE_PER:
222
+ sprintf_s(msg, "%s TD_MOVE_PER result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
223
+ write = true;
224
+ break;
225
+ case TD_GET_PER:
226
+ sprintf_s(msg, "%s TD_GET_PER result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
227
+ write = true;
228
+ break;
229
+ case TD_INSERT_BULK:
230
+ sprintf_s(msg, "%s TD_INSERT_BULK result = %d \tHandle = %d\n",dateTime(), req.result, req.pbk->handle);
231
+ write = true;
232
+ break;
233
+ }
234
+ if (error)
235
+ {
236
+ sprintf_s(msg, "%s ERROR result = %d op=%d\t\tHandle = %d\n"
237
+ ,dateTime(), req.result, op, req.pbk?req.pbk->handle:0);
238
+ write = true;
239
+ }
240
+ if (write)
241
+ {
242
+ boost::mutex::scoped_lock lck(g_logMutex);
243
+ FILE* fp = fileOpne(logfilename, "a+");
244
+ if (fp)
245
+ {
246
+ fputs(msg, fp);
247
+ fclose(fp);
248
+ }
249
+ }
250
+ }
251
+ void writeDebuglog(const char* msg)
252
+ {
253
+ boost::mutex::scoped_lock lck(g_logMutex);
254
+ FILE* fp = fileOpne(logfilename, "a+");
255
+ if (fp)
256
+ {
257
+ fputs(dateTime(), fp);
258
+ fputs(" ", fp);
259
+ fputs(msg, fp);
260
+ fclose(fp);
261
+ }
262
+ }
263
+ void writeDebuglogDump(const char* msg, const char* p, int size)
264
+ {
265
+ boost::mutex::scoped_lock lck(g_logMutex);
266
+ FILE* fp = fileOpne(logfilename, "a+");
267
+ if (fp)
268
+ {
269
+ fputs(msg, fp);
270
+ fputs("\n", fp);
271
+ dump(fp, p, size, INT_MAX);
272
+
273
+ fclose(fp);
274
+ }
275
+ }
276
+ void fieldDump(table* tb)
277
+ {
278
+ boost::mutex::scoped_lock lck(g_logMutex);
279
+ FILE* fp = fileOpne(logfilename, "a+");
280
+ if (fp)
281
+ {
282
+ for (int j=0;j<(int)tb->m_table->s->fields;j++)
283
+ {
284
+ fputs(tb->m_table->s->field[j]->field_name, fp);
285
+ fputs("=", fp);
286
+ fputs(tb->valStr(j), fp);
287
+ fputs("\n", fp);
288
+ }
289
+ fclose(fp);
290
+ }
291
+ }
292
+
293
+ void initLog()
294
+ {
295
+ fn_format(logfilename, "transctd_debug","",".log",MY_REPLACE_EXT|MY_UNPACK_FILENAME);
296
+
297
+ FILE* fp = fileOpne(logfilename, "w");
298
+ if (fp)
299
+ {
300
+ fputs(dateTime(), fp);
301
+ fputs("Transctd debug Start", fp);
302
+ fputs(msg, fp);
303
+ fclose(fp);
304
+ }
305
+ }
306
+ void endLog()
307
+ {
308
+ writeDebuglog("Transctd debug End");
309
+ }
310
+ void dump(FILE* fp, const char* p, int size, int limit)
311
+ {
312
+ size = std::min(size, limit);
313
+ for (int i=0;i<size;i+=16)
314
+ {
315
+
316
+ for (int j=0;j<16;j++)
317
+ fprintf(fp, "%02X ", *((unsigned char*)(p+i+j)));
318
+ fprintf(fp, " ");
319
+ for (int j=0;j<16;j++)
320
+ fprintf(fp, "%c", *((unsigned char*)(p+i+j)));
321
+ fprintf(fp, "\n");
322
+
323
+ }
324
+ fprintf(fp, "\n");
325
+ }
326
+ void debugReadRecordsBegin(extResultDef* resultDef, extRequest* req)
327
+ {
328
+ char tmp[2048];
329
+ char tmp2[1024]={0x00};
330
+ sprintf(tmp, "READS RESULTDEF maxRows=%d fieldCount=%d\n", resultDef->maxRows, resultDef->fieldCount);
331
+ for (int i=0;i<resultDef->fieldCount;i++)
332
+ {
333
+ resultField* fd = &resultDef->field[i];
334
+ sprintf(tmp2,"RESULTDEF FIELD%d pos =%d len=%d \n",i+1, fd->pos, fd->len);
335
+ strcat(tmp, tmp2);
336
+ }
337
+ sprintf(tmp2, "READS REQ len=%d reject=%d logicalCount=%d\n", req->len, req->rejectCount, req->logicalCount);
338
+ strcat(tmp, tmp2);
339
+ logicalField* field = &req->field;
340
+ while(1)
341
+ {
342
+ sprintf(tmp2,"REQUEST FIELD1 type =%d len=%d pos=%d logType=%d opr=%d "
343
+ , field->type, field->len, field->pos, field->logType, field->opr);
344
+ strcat(tmp, tmp2);
345
+ if (field->logType & CMPLOGICAL_FIELD)
346
+ sprintf(tmp2, "offset=%d\n", field->offset);
347
+ else
348
+ {
349
+ strcat(tmp, "Value=");
350
+ for (int j=0;j<field->len;j++)
351
+ {
352
+ sprintf(tmp2, "%02X ", *(field->ptr+j));
353
+ strcat(tmp, tmp2);
354
+ }
355
+ strcat(tmp, "\n");
356
+ }
357
+ if (field->opr == 0) break;//this is last
358
+ field = field->next();
359
+ }
360
+ writeDebuglog(tmp);
361
+ }
362
+ void debugReadRecordsEnd(resultWriter* rw)
363
+ {
364
+ writeDebuglogDump("READS RESULT DUMP", rw->resultBuffer()+RETBUF_EXT_RESERVE_SIZE
365
+ , rw->resultLen()-RETBUF_EXT_RESERVE_SIZE);
366
+ }
367
+ void debugInsert(table* tb, const char* packPtr,int packlen, int row, int errorCount)
368
+ {
369
+ char tmp[64];
370
+ sprintf(tmp, "INSERT PACKED Row=%d len=%d ErrorRows=%d ", packlen, row, errorCount);
371
+ writeDebuglogDump(tmp, packPtr + sizeof(ushort_td), packlen);
372
+ sprintf(tmp, "INSERT UNPACKED Row=%d len=%ld stat=%d", row, tb->recordLen(), tb->stat());
373
+ writeDebuglogDump(tmp, (const char*)tb->record(), tb->recordLen());
374
+ fieldDump(tb);
375
+ }
376
+
377
+ }//namespace msqlp
378
+ }//namespace bzs
379
+
380
+ #ifdef DEBUG_PROFILE
381
+ unsigned int g_v;
382
+ #endif
383
+
@@ -0,0 +1,106 @@
1
+ /*=================================================================
2
+ Copyright (C) 2012 2013 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+ #ifndef BZS_DB_PROTOCOL_TDAP_MYSQL_DEBUGLOG_H
20
+ #define BZS_DB_PROTOCOL_TDAP_MYSQL_DEBUGLOG_H
21
+
22
+ #include "request.h"
23
+ namespace bzs
24
+ {
25
+ namespace msqlp
26
+ {
27
+ struct extResultDef;
28
+ struct extRequest;
29
+ class resultWriter;
30
+
31
+ extern char msg[1024];
32
+
33
+ void writeDebuglog(const char* msg);
34
+ void writeDebuglogDump(const char* msg, const char* p, int size);
35
+ void initLog();
36
+ void endLog();
37
+ void dump(FILE* fp, const char* p, int size, int limit);
38
+
39
+ void writeDebuglog(ushort_td op, request& req, bool error = false);
40
+ void fieldDump(table* tb);
41
+ void debugInsert(table* tb, const char* packPtr,int packlen, int row, int errorCount);
42
+ void debugReadRecordsBegin(extResultDef* resultDef, extRequest* req);
43
+ void debugReadRecordsEnd(resultWriter* rw);
44
+ }//namespace msqlp
45
+ }//namespace bzs
46
+
47
+
48
+ #ifdef DEBUG_LOG
49
+ #define DEBUG_WRITELOG(MSG) writeDebuglog(MSG);
50
+ #define DEBUG_WRITELOG2(OP, REQ) writeDebuglog(OP, REQ);
51
+ #define DEBUG_WRITELOG3(OP, REQ, ERR) writeDebuglog(OP, REQ, ERR);
52
+ #define DEBUG_WRITELOG_SP1(FORMAT, PARAM) \
53
+ sprintf_s(msg,FORMAT, PARAM); \
54
+ writeDebuglog(msg);
55
+
56
+ #else //DEBUG_LOG
57
+ #define DEBUG_WRITELOG(MSG)
58
+ #define DEBUG_WRITELOG2(OP, REQ)
59
+ #define DEBUG_WRITELOG3(OP, REQ, ERR)
60
+ #define DEBUG_WRITELOG_SP1(FORMAT, PARAM)
61
+ #endif //DEBUG_LOG
62
+
63
+ #ifdef DEBUG_LOG_BINSERT
64
+ #define DEBUG_INSERT(TB,PTR,LEN,ROW,ERRORS) debugInsert(TB, PTR, LEN, ROW, ERRORS);
65
+ #else
66
+ #define DEBUG_INSERT(TB,PTR,LEN,ROW,ERRORS)
67
+ #endif
68
+
69
+ #ifdef DEBUG_RECORDS
70
+ #define DEBUG_RECORDS_BEGIN( RDEF, REQ) debugReadRecordsBegin(RDEF, REQ);
71
+ #define DEBUG_RECORDS_END( WRITER) debugReadRecordsEnd(WRITER);
72
+ #else
73
+ #define DEBUG_RECORDS_BEGIN( RDEF, REQ)
74
+ #define DEBUG_RECORDS_END( WRITER)
75
+ #endif
76
+
77
+ #if defined(DEBUG_PROFILE) || defined(DEBUG_LOG)
78
+ #define DEBUG_PROFILE_INIT() bzs::msqlp::initLog();
79
+ #define DEBUG_PROFILE_DEINIT() bzs::msqlp::endLog();
80
+ #else
81
+ #define DEBUG_PROFILE_INIT()
82
+ #define DEBUG_PROFILE_DEINIT()
83
+ #endif
84
+
85
+ #ifdef DEBUG_PROFILE
86
+ extern unsigned int g_v;
87
+
88
+ #define DEBUG_PROFILE_START(V) if (V) g_v = GetTickCount();
89
+ #define DEBUG_PROFILE_END(V, NAME) if (V){char buf[256]; \
90
+ sprintf(buf, "%-20s\t %ld\r\n",NAME, GetTickCount()-g_v); \
91
+ bzs::msqlp::writeDebuglog(buf);};
92
+
93
+ #define DEBUG_PROFILE_END_OP(V, IV) if (V){char buf[256]; \
94
+ sprintf(buf, "op = %-15ld\t %ld\r\n", IV, GetTickCount()-g_v); \
95
+ bzs::msqlp::writeDebuglog(buf);};
96
+
97
+ #else //DEBUG_PROFILE
98
+
99
+ #define DEBUG_PROFILE_START(V)
100
+ #define DEBUG_PROFILE_END(V, NAME)
101
+ #define DEBUG_PROFILE_END_OP(V, IV)
102
+
103
+ #endif //DEBUG_PROFILE
104
+
105
+
106
+ #endif //BZS_DB_PROTOCOL_TDAP_MYSQL_DEBUGLOG_H