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,227 @@
1
+ #ifndef BZS_DB_PROTOCOL_TDAP_BTRDATE_H
2
+ #define BZS_DB_PROTOCOL_TDAP_BTRDATE_H
3
+ /* =================================================================
4
+ Copyright (C) 2000-2013 BizStation Corp All rights reserved.
5
+
6
+ This program is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU General Public License
8
+ as published by the Free Software Foundation; either version 2
9
+ of the License, or (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ 02111-1307, USA.
20
+ ================================================================= */
21
+
22
+ #include <bzs/env/compiler.h>
23
+ #include <bzs/env/crosscompile.h>
24
+
25
+ namespace bzs
26
+ {
27
+ namespace db
28
+ {
29
+ namespace protocol
30
+ {
31
+ namespace tdap
32
+ {
33
+
34
+ #pragma option -a-
35
+ pragma_pack1
36
+
37
+ #ifdef SWIG
38
+ /* For swig interface
39
+ export field names.
40
+ */
41
+ union btrDate
42
+ {
43
+ char dd;
44
+ char mm;
45
+ short yy;
46
+ int i;
47
+ };
48
+
49
+ union btrTime
50
+ {
51
+ char uu;
52
+ char ss;
53
+ char nn;
54
+ char hh;
55
+ int i;
56
+ };
57
+
58
+ union btrDateTime
59
+ {
60
+ btrTime time;
61
+ btrDate date;
62
+ __int64 i64;
63
+ };
64
+
65
+ #else
66
+
67
+ union btrDate
68
+ {
69
+ struct
70
+ {
71
+ char dd;
72
+ char mm;
73
+ short yy;
74
+ };
75
+
76
+ int i;
77
+
78
+ };
79
+
80
+ union btrTime
81
+ {
82
+ struct
83
+ {
84
+ char uu;
85
+ char ss;
86
+ char nn;
87
+ char hh;
88
+ };
89
+
90
+ int i;
91
+ };
92
+
93
+ union btrDateTime
94
+ {
95
+ struct
96
+ {
97
+ btrTime time;
98
+ btrDate date;
99
+ };
100
+
101
+ __int64 i64;
102
+
103
+ };
104
+
105
+ #endif //SWIG
106
+
107
+
108
+
109
+ #pragma option -a
110
+ pragma_pop
111
+
112
+ class PACKAGE btrTimeStamp
113
+ {
114
+
115
+ __int64 getDateTimeInt(int& time);
116
+
117
+ public:
118
+ unsigned __int64 i64;
119
+
120
+ explicit btrTimeStamp(unsigned __int64 i);
121
+ explicit btrTimeStamp(const char* p);
122
+ btrTimeStamp(btrDate d, btrTime t);
123
+ #ifdef _WIN32
124
+ explicit btrTimeStamp(const wchar_t* p);
125
+ wchar_t* toString(wchar_t* p);
126
+ void fromString(const wchar_t* p);
127
+ #endif
128
+ char* toString(char* p);
129
+ void fromString(const char* p);
130
+
131
+ };
132
+
133
+
134
+ // Class bdate is for btrDate
135
+
136
+ class PACKAGE bdate
137
+ {
138
+ btrDate m_date;
139
+
140
+ public:
141
+ explicit bdate(int btrDate);
142
+ explicit bdate(const _TCHAR* date);
143
+ const _TCHAR* year_str();
144
+ const _TCHAR* month_str();
145
+ const _TCHAR* date_str();
146
+
147
+ int year() {return m_date.yy;};
148
+
149
+ int date() {return m_date.dd;};
150
+
151
+ int month() {return m_date.mm;};
152
+
153
+ btrDate btr_date() {return m_date;};
154
+ const _TCHAR* c_str();
155
+ };
156
+
157
+ PACKAGE btrDate atobtrd(const char* date);
158
+
159
+
160
+ PACKAGE const char* btrdtoa(const btrDate& d, char* retbuf, bool type_vb = false);
161
+
162
+
163
+ PACKAGE const char* btrttoa(const btrTime& t, char* retbuf, bool type_vb = false);
164
+
165
+
166
+ PACKAGE btrTime atobtrt(const char* p);
167
+
168
+ inline const char* btrdtoa(int date, char* retbuf, bool type_vb = false)
169
+ {
170
+ btrDate d;
171
+ d.i = date;
172
+ return btrdtoa(d, retbuf, type_vb);
173
+ }
174
+
175
+ inline const char* btrttoa(int time, char* retbuf, bool type_vb = false)
176
+ {
177
+ btrTime t;
178
+ t.i = time;
179
+ return btrttoa(t, retbuf, type_vb);
180
+
181
+ }
182
+
183
+ #ifdef _WIN32
184
+ PACKAGE btrDate atobtrd(const wchar_t* date);
185
+
186
+ PACKAGE const wchar_t* btrdtoa(const btrDate& d, wchar_t* retbuf, bool type_vb = false);
187
+
188
+ PACKAGE const wchar_t* btrttoa(const btrTime& t, wchar_t* retbuf, bool type_vb = false);
189
+
190
+ PACKAGE btrTime atobtrt(const wchar_t* p);
191
+
192
+ inline const wchar_t* btrdtoa(int date, wchar_t* retbuf, bool type_vb = false)
193
+ {
194
+ btrDate d;
195
+ d.i = date;
196
+ return btrdtoa(d, retbuf, type_vb);
197
+ }
198
+
199
+ inline const wchar_t* btrttoa(int time, wchar_t* retbuf, bool type_vb = false)
200
+ {
201
+ btrTime t;
202
+ t.i = time;
203
+ return btrttoa(t, retbuf, type_vb);
204
+
205
+ }
206
+
207
+ #endif
208
+
209
+ PACKAGE const _TCHAR* btrstoa(const btrDateTime& d, _TCHAR* retbuf = NULL, bool type_vb = false);
210
+
211
+ PACKAGE btrDateTime atobtrs(const _TCHAR* p);
212
+
213
+
214
+ inline const _TCHAR* c_str(const btrDate& d) {return btrdtoa(d, (_TCHAR*)NULL);};
215
+
216
+ inline const _TCHAR* c_str(const btrTime& d) {return btrttoa(d, (_TCHAR*)NULL);};
217
+
218
+ PACKAGE int getNowDate();
219
+ PACKAGE int getNowTime();
220
+
221
+
222
+ }// namespace tdap
223
+ }// namespace protocol
224
+ }// namespace db
225
+ }// namespace bzs
226
+ #endif//BZS_DB_PROTOCOL_TDAP_BTRDATE_H
227
+
@@ -0,0 +1,127 @@
1
+ #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_BULKINSERT_H
2
+ #define BZS_DB_PROTOCOL_TDAP_CLIENT_BULKINSERT_H
3
+ /*=================================================================
4
+ Copyright (C) 2000-2013 BizStation Corp All rights reserved.
5
+
6
+ This program is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU General Public License
8
+ as published by the Free Software Foundation; either version 2
9
+ of the License, or (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ 02111-1307, USA.
20
+ =================================================================*/
21
+ #include <bzs/db/protocol/tdap/tdapcapi.h>
22
+ #include <limits.h>
23
+ #include "nsTable.h"
24
+
25
+ namespace bzs
26
+ {
27
+ namespace db
28
+ {
29
+ namespace protocol
30
+ {
31
+ namespace tdap
32
+ {
33
+ namespace client
34
+ {
35
+
36
+ class bulkInsert
37
+ {
38
+ char* m_buf;
39
+ char* m_ptr;
40
+ int m_count;
41
+ int m_buflen;
42
+ int m_maxBuflen;
43
+
44
+ public:
45
+ bulkInsert(int max) : m_maxBuflen(max)
46
+ {
47
+
48
+ m_buf = new char[BULKBUFSIZE];
49
+ m_ptr = m_buf + sizeof(ushort_td);
50
+ m_count = 0;
51
+ m_buflen = BULKBUFSIZE;
52
+
53
+ }
54
+
55
+ ~bulkInsert()
56
+ {
57
+ delete [] m_buf;
58
+ }
59
+
60
+ char* reallocBuffer(char* buf, int oldsize, int newSize)
61
+ {
62
+ char* p = new char[newSize];
63
+ memcpy(p, buf, oldsize);
64
+ delete [] buf;
65
+
66
+ return p;
67
+
68
+ }
69
+
70
+ ushort_td insert(const char* p, ushort_td size, nstable* tb)
71
+ {
72
+ ushort_td ins_rows = 0;
73
+ if (m_count == (int)(USHRT_MAX - 3))
74
+ {
75
+ ins_rows = tb->commitBulkInsert(true /* auto */);
76
+ m_ptr = m_buf +sizeof(ushort_td);
77
+ m_count = 0;
78
+ }
79
+
80
+ // check over run. current size + need size
81
+ if ((m_ptr - m_buf )+ size + sizeof(ushort_td) > (uint_td)m_buflen)
82
+ {
83
+ if ((int)(m_buflen + BULKBUFSIZE) > m_maxBuflen)
84
+ {
85
+ ins_rows = tb->commitBulkInsert(true /* auto */);
86
+ m_ptr = m_buf +sizeof(ushort_td);
87
+ m_count = 0;
88
+ }
89
+ else
90
+ {
91
+ size_t pos = m_ptr - m_buf;
92
+ m_buf = reallocBuffer(m_buf, m_buflen, m_buflen + BULKBUFSIZE);
93
+ m_buflen += BULKBUFSIZE;
94
+ m_ptr = m_buf + pos;
95
+ }
96
+ }
97
+ memcpy(m_ptr, &size, sizeof(ushort_td));
98
+ m_ptr += sizeof(ushort_td);
99
+ memcpy(m_ptr, p, size);
100
+ m_ptr += size;
101
+ m_count++;
102
+ return ins_rows;
103
+
104
+ }
105
+
106
+ void* data()
107
+ {
108
+ (*(ushort_td*)m_buf) = (ushort_td)m_count;
109
+ return m_buf;
110
+ }
111
+
112
+ uint_td dataLen()
113
+ {
114
+ return (uint_td)(m_ptr - m_buf);
115
+ }
116
+
117
+ int count() {return m_count;}
118
+
119
+ };
120
+
121
+ }//namespace client
122
+ }//namespace tdap
123
+ }//namespace protocol
124
+ }//namespace db
125
+ }//namespace bzs
126
+
127
+ #endif//BZS_DB_PROTOCOL_TDAP_CLIENT_BULKINSERT_H
@@ -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
+ #include "client.h"
20
+ #include "sqlBuilder.h"
21
+ #include "stringConverter.h"
22
+
23
+ using namespace bzs::db::protocol::tdap::client;
24
+
25
+ bzs::netsvc::client::connections* m_cons = NULL;
26
+
27
+
28
+ namespace bzs
29
+ {
30
+ namespace db
31
+ {
32
+ namespace protocol
33
+ {
34
+ namespace tdap
35
+ {
36
+ namespace client
37
+ {
38
+
39
+ #if( defined(_WIN32) && defined(_MSC_VER))
40
+ DWORD g_tlsiID = 0;
41
+ #else
42
+ __THREAD client* __THREAD_BCB g_client=NULL;
43
+ #endif
44
+
45
+
46
+ bool client::readServerCharsetIndex()
47
+ {
48
+ if (m_charsetIndexServer == -1)
49
+ {
50
+ request req = m_req;
51
+ uint_td len = 256;
52
+ char tmp[256]={0x00};
53
+ req.op = TD_GETSERVER_CHARSET;
54
+ req.data = tmp;
55
+ req.datalen = &len;
56
+
57
+ mutex::scoped_lock lck(m_mutex);
58
+ char* p = con()->sendBuffer();
59
+ unsigned int size = req.serialize(p);
60
+ p = con()->asyncWriteRead(size);
61
+ req.parse(p);
62
+ if (req.result==0)
63
+ {
64
+ m_charsetIndexServer = mysql::charsetIndex((const char*)req.data);
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+ return true;
70
+ }
71
+
72
+ void client::addSecondCharsetData(unsigned int destCodePage, std::string& src)
73
+ {
74
+ stringConverter cv(destCodePage, CP_UTF8);
75
+ int osize = (int)src.size()*3;
76
+ char* srvchar = new char[osize];
77
+
78
+ size_t len = cv.convert(srvchar, osize, src.c_str(), src.size());
79
+ srvchar[len] = 0x00;
80
+ src += std::string("\t") + srvchar;
81
+ delete [] srvchar;
82
+ }
83
+
84
+ bool client::buildDualChasetKeybuf()
85
+ {
86
+ if (!readServerCharsetIndex())
87
+ return false;
88
+ //m_serverCharData = std::string((char*)m_req.keybuf, m_req.keylen);
89
+ m_serverCharData = (char*)m_req.keybuf;
90
+ if (CHARSET_UTF8 != m_charsetIndexServer)
91
+ addSecondCharsetData(mysql::codePage(m_charsetIndexServer), m_serverCharData);
92
+ else
93
+ m_serverCharData += std::string("\t") + (char*)m_req.keybuf;
94
+
95
+ m_req.keybuf = (void_td*)m_serverCharData.c_str();
96
+ m_req.keylen = (keylen_td)m_serverCharData.size() + 1;
97
+ return true;
98
+ }
99
+
100
+ }//namespace client
101
+ }//namespace tdap
102
+ }//namespace protocol
103
+ }//namespace db
104
+ }//namespace bzs
105
+
106
+