transactd 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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