transactd 1.2.0 → 2.0.0

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 (306) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +46 -67
  3. data/BUILD_WIN-JA +106 -63
  4. data/CMakeLists.txt +40 -15
  5. data/README +219 -75
  6. data/README-JA +207 -76
  7. data/README_ORMSRCGEN +118 -0
  8. data/README_ORMSRCGEN-JA +115 -0
  9. data/bin/common/tdclc_32_2_0.dll +0 -0
  10. data/bin/common/tdclc_64_2_0.dll +0 -0
  11. data/build/common/check_for_link_iconv.cmake +18 -14
  12. data/build/common/create_symlink.cmake.in +25 -0
  13. data/build/common/get_boost_libs.cmake +23 -23
  14. data/build/common/options.cmake +0 -66
  15. data/build/common/smart_install.cmake +3 -3
  16. data/build/common/transactd.rc.in +15 -5
  17. data/build/common/transactd_cl_common.cmake +37 -18
  18. data/build/common/transactd_cl_output.cmake +55 -13
  19. data/build/common/transactd_common.cmake +108 -31
  20. data/build/swig/php/generate.cmake.in +15 -17
  21. data/build/swig/php/generate.cmd.in +15 -9
  22. data/build/swig/php/php.swg +124 -82
  23. data/build/swig/php/transactd.no_yield.php +4494 -0
  24. data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
  25. data/build/swig/php/transactd.no_yield.php.patch +685 -0
  26. data/build/swig/php/transactd.yield.php +4461 -0
  27. data/build/swig/php/transactd.yield.php.git.patch +652 -0
  28. data/build/swig/php/transactd.yield.php.patch +652 -0
  29. data/build/swig/referencecounter.h +79 -0
  30. data/build/swig/ruby/ruby.swg +226 -76
  31. data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
  32. data/build/swig/ruby/without_gvl.swg +87 -0
  33. data/build/swig/tdcl.i +659 -170
  34. data/build/swig/validatablepointer.h +91 -0
  35. data/build/tdclc/CMakeLists.txt +49 -34
  36. data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
  37. data/build/tdclc/tdclc.rc +0 -0
  38. data/build/tdclcpp/CMakeLists.txt +84 -20
  39. data/build/tdclcpp/tdclcpp.rc +0 -0
  40. data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
  41. data/build/tdclrb/CMakeLists.txt +84 -66
  42. data/build/tdclrb/bldgem/extconf.rb +28 -3
  43. data/build/tdclrb/gem/helper.rb +11 -1
  44. data/build/tdclrb/gem_output.cmake +20 -16
  45. data/index_ja.html +15 -0
  46. data/source/bzs/db/IBlobBuffer.h +15 -17
  47. data/source/bzs/db/blobBuffer.h +186 -140
  48. data/source/bzs/db/blobStructs.h +37 -37
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
  50. data/source/bzs/db/engine/mysql/bookmark.h +150 -147
  51. data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
  52. data/source/bzs/db/engine/mysql/database.h +608 -370
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
  54. data/source/bzs/db/engine/mysql/dbManager.h +115 -104
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
  56. data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
  63. data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
  64. data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
  68. data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
  69. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
  70. data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
  71. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
  72. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
  73. data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
  74. data/source/bzs/db/protocol/tdap/client/client.h +361 -320
  75. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
  76. data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
  77. data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
  78. data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
  79. data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
  80. data/source/bzs/db/protocol/tdap/client/database.h +141 -118
  81. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
  82. data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
  83. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
  84. data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
  85. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
  86. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
  87. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
  88. data/source/bzs/db/protocol/tdap/client/export.h +35 -0
  89. data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
  90. data/source/bzs/db/protocol/tdap/client/field.h +393 -0
  91. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
  92. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
  93. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
  94. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
  95. data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
  96. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
  97. data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
  98. data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
  99. data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
  100. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
  101. data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
  102. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
  103. data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
  104. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
  105. data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
  106. data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
  107. data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
  108. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
  109. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
  110. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
  111. data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
  112. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
  113. data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
  114. data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
  115. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
  116. data/source/bzs/db/protocol/tdap/client/request.h +227 -170
  117. data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
  118. data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
  119. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
  120. data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
  121. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
  122. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
  123. data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
  124. data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
  125. data/source/bzs/db/protocol/tdap/client/table.h +413 -87
  126. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
  127. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
  128. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
  129. data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
  130. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
  131. data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
  132. data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
  133. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
  134. data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
  135. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
  136. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
  137. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
  138. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
  139. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
  140. data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
  141. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
  142. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
  143. data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
  144. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
  145. data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
  146. data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
  147. data/source/bzs/db/transactd/appBuilderImple.h +21 -20
  148. data/source/bzs/db/transactd/appModule.cpp +350 -98
  149. data/source/bzs/db/transactd/appModule.h +31 -37
  150. data/source/bzs/db/transactd/connManager.cpp +138 -135
  151. data/source/bzs/db/transactd/connManager.h +28 -21
  152. data/source/bzs/db/transactd/connectionRecord.h +39 -39
  153. data/source/bzs/db/transactd/transactd.cpp +217 -203
  154. data/source/bzs/env/boost_bcb_link.h +131 -0
  155. data/source/bzs/env/compiler.h +136 -79
  156. data/source/bzs/env/crosscompile.cpp +57 -57
  157. data/source/bzs/env/crosscompile.h +130 -115
  158. data/source/bzs/env/fileopen.h +7 -8
  159. data/source/bzs/env/mbcswchrLinux.cpp +4 -9
  160. data/source/bzs/env/mbcswchrLinux.h +37 -34
  161. data/source/bzs/env/tcharMinGW.h +59 -0
  162. data/source/bzs/env/tstring.h +90 -95
  163. data/source/bzs/example/changeSchema.cpp +22 -23
  164. data/source/bzs/example/changeSchema_c.cpp +22 -24
  165. data/source/bzs/example/connection_pool_c.cpp +49 -104
  166. data/source/bzs/example/createDatabase.cpp +40 -47
  167. data/source/bzs/example/createDatabase_c.cpp +38 -43
  168. data/source/bzs/example/deleteRecords.cpp +10 -15
  169. data/source/bzs/example/deleteRecords_c.cpp +10 -14
  170. data/source/bzs/example/dropDatabase.cpp +3 -9
  171. data/source/bzs/example/dropDatabase_c.cpp +5 -6
  172. data/source/bzs/example/insertRecords.cpp +37 -29
  173. data/source/bzs/example/insertRecords_c.cpp +19 -25
  174. data/source/bzs/example/ormap_c.cpp +621 -0
  175. data/source/bzs/example/queryData.cpp +371 -0
  176. data/source/bzs/example/queryData.h +16 -0
  177. data/source/bzs/example/query_c.cpp +109 -0
  178. data/source/bzs/example/readRecords.cpp +27 -27
  179. data/source/bzs/example/readRecords_c.cpp +25 -23
  180. data/source/bzs/example/updateRecords.cpp +16 -21
  181. data/source/bzs/example/updateRecords_c.cpp +8 -12
  182. data/source/bzs/example/update_with_transaction.cpp +21 -24
  183. data/source/bzs/example/update_with_transaction_c.cpp +12 -15
  184. data/source/bzs/example/useORMRecord.cpp +177 -0
  185. data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
  186. data/source/bzs/netsvc/client/tcpClient.h +541 -489
  187. data/source/bzs/netsvc/server/IAppModule.h +119 -32
  188. data/source/bzs/netsvc/server/iserver.h +21 -23
  189. data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
  190. data/source/bzs/netsvc/server/serverCpt.h +41 -43
  191. data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
  192. data/source/bzs/netsvc/server/serverPipe.h +44 -45
  193. data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
  194. data/source/bzs/netsvc/server/serverTpool.h +38 -43
  195. data/source/bzs/rtl/benchmark.cpp +91 -31
  196. data/source/bzs/rtl/benchmark.h +76 -22
  197. data/source/bzs/rtl/datetime.cpp +231 -233
  198. data/source/bzs/rtl/datetime.h +16 -16
  199. data/source/bzs/rtl/debuglog.cpp +48 -51
  200. data/source/bzs/rtl/debuglog.h +55 -44
  201. data/source/bzs/rtl/exception.h +55 -48
  202. data/source/bzs/rtl/stl_uty.cpp +27 -28
  203. data/source/bzs/rtl/stl_uty.h +28 -29
  204. data/source/bzs/rtl/stringBuffers.cpp +8 -6
  205. data/source/bzs/rtl/stringBuffers.h +16 -9
  206. data/source/bzs/rtl/strtrim.cpp +90 -91
  207. data/source/bzs/rtl/strtrim.h +14 -16
  208. data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
  209. data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
  210. data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
  211. data/source/bzs/test/tdclphp/bench.php +357 -0
  212. data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
  213. data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
  214. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
  215. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
  216. data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
  217. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
  218. data/source/bzs/test/tdclrb/prepare.rb +15 -12
  219. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
  220. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
  221. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
  222. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
  223. data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
  224. data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
  225. data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
  226. data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
  227. data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
  228. data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
  229. data/source/bzs/test/transactdBench/workerBase.h +88 -0
  230. data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
  231. data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
  232. data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
  233. data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
  234. data/source/global/ormsrcgen/confParam.h +80 -0
  235. data/source/global/ormsrcgen/fieldName.cpp +77 -0
  236. data/source/global/ormsrcgen/fieldName.h +43 -0
  237. data/source/global/ormsrcgen/main.cpp +196 -0
  238. data/source/global/ormsrcgen/srcgen.cpp +763 -0
  239. data/source/global/ormsrcgen/srcgen.h +72 -0
  240. data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
  241. data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
  242. data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
  243. data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
  244. data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
  245. data/source/global/ormsrcgen/template/template.cnf +38 -0
  246. data/source/global/querystmts/querystmts.cpp +237 -0
  247. data/source/global/tdclatl/ConnectParams.cpp +77 -0
  248. data/source/global/tdclatl/ConnectParams.h +70 -0
  249. data/source/global/tdclatl/Database.cpp +132 -128
  250. data/source/global/tdclatl/Database.h +60 -49
  251. data/source/global/tdclatl/DbDef.cpp +68 -64
  252. data/source/global/tdclatl/DbDef.h +36 -36
  253. data/source/global/tdclatl/Field.cpp +12 -17
  254. data/source/global/tdclatl/Field.h +15 -12
  255. data/source/global/tdclatl/FieldDef.cpp +75 -36
  256. data/source/global/tdclatl/FieldDef.h +38 -19
  257. data/source/global/tdclatl/FieldDefs.cpp +74 -0
  258. data/source/global/tdclatl/FieldDefs.h +56 -0
  259. data/source/global/tdclatl/FieldNames.cpp +99 -0
  260. data/source/global/tdclatl/FieldNames.h +66 -0
  261. data/source/global/tdclatl/Flags.cpp +75 -37
  262. data/source/global/tdclatl/Flags.h +13 -12
  263. data/source/global/tdclatl/GroupQuery.cpp +119 -0
  264. data/source/global/tdclatl/GroupQuery.h +65 -0
  265. data/source/global/tdclatl/KeyDef.cpp +15 -14
  266. data/source/global/tdclatl/KeyDef.h +20 -17
  267. data/source/global/tdclatl/KeySegment.cpp +13 -12
  268. data/source/global/tdclatl/PooledDbManager.cpp +223 -0
  269. data/source/global/tdclatl/PooledDbManager.h +76 -0
  270. data/source/global/tdclatl/QueryBase.cpp +206 -127
  271. data/source/global/tdclatl/QueryBase.h +55 -59
  272. data/source/global/tdclatl/Record.cpp +214 -0
  273. data/source/global/tdclatl/Record.h +96 -0
  274. data/source/global/tdclatl/Recordset.cpp +278 -0
  275. data/source/global/tdclatl/Recordset.h +83 -0
  276. data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
  277. data/source/global/tdclatl/RecordsetQuery.h +126 -0
  278. data/source/global/tdclatl/Table.cpp +57 -60
  279. data/source/global/tdclatl/Table.h +32 -29
  280. data/source/global/tdclatl/TableDef.cpp +63 -62
  281. data/source/global/tdclatl/TableDef.h +20 -22
  282. data/source/global/tdclatl/TdVersion.cpp +3 -3
  283. data/source/global/tdclatl/TdVersion.h +15 -11
  284. data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
  285. data/source/global/tdclatl/activeTable.cpp +355 -0
  286. data/source/global/tdclatl/activeTable.h +79 -0
  287. data/source/global/tdclatl/dllmain.cpp +4 -3
  288. data/source/global/tdclatl/dllmain.h +7 -6
  289. data/source/global/tdclatl/keySegment.h +22 -18
  290. data/source/global/tdclatl/resource.h +0 -0
  291. data/source/global/tdclatl/stdafx.h +6 -4
  292. data/source/global/tdclatl/targetver.h +0 -1
  293. data/source/global/tdclatl/tdclatl.cpp +10 -5
  294. data/source/global/tdclatl/tdclatl.idl +530 -14
  295. data/source/linux/charsetConvert.h +78 -79
  296. data/source/linux/linuxTypes.h +9 -12
  297. data/source/linux/tchar.h +168 -166
  298. data/transactd.gemspec +24 -16
  299. metadata +98 -12
  300. data/bin/common/tdclc_32_1_2.dll +0 -0
  301. data/bin/common/tdclc_64_1_2.dll +0 -0
  302. data/build/tdclc/tdclc_32.cbproj +0 -173
  303. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
  304. data/build/tdclrb/GEM_VERSION +0 -3
  305. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
  306. data/source/bzs/example/useORM.cpp +0 -585
@@ -14,12 +14,12 @@
14
14
  GNU General Public License for more details.
15
15
 
16
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
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
19
  02111-1307, USA.
20
20
  =================================================================*/
21
21
 
22
- #ifndef __TSTRING_H //old tstring.h is used
22
+ #ifndef __TSTRING_H // old tstring.h is used
23
23
 
24
24
  #include <string.h>
25
25
  #include <string>
@@ -34,150 +34,145 @@
34
34
  #ifdef LINUX
35
35
  #include <bzs/env/mbcswchrLinux.h>
36
36
  #endif
37
+ #include <bzs/env/crosscompile.h>
37
38
 
38
-
39
- namespace std {
39
+ namespace std
40
+ {
40
41
  #ifdef _UNICODE
41
- typedef wstring _tstring;
42
-
42
+ typedef wstring _tstring;
43
+ typedef wstringstream _tstringstream;
43
44
  #else
44
- typedef string _tstring;
45
-
45
+ typedef string _tstring;
46
+ typedef stringstream _tstringstream;
46
47
  #endif
47
- } //std
48
-
48
+ } // std
49
49
 
50
50
  #ifdef _UNICODE
51
- #define tPos Pos
52
- #define tcout wcout
51
+ #define tPos Pos
52
+ #define tcout wcout
53
53
  #else
54
- #define tPos AnsiPos
55
- #define tcout cout
54
+ #define tPos AnsiPos
55
+ #define tcout cout
56
56
  #endif
57
57
 
58
-
59
58
  #ifdef _UNICODE
60
- #define _tcsmcmp _tcscmp
61
- #define _tcsmclen _tcsclen
62
- #define _tcsmnextc _tcsnextc
63
- #define _tcsmrchr _tcsrchr
64
- #define _tcsmstr _tcsstr
65
- #define _tcsmupr _tcsupr
66
-
67
- typedef char _NTCHAR;
59
+ #define _tcsmcmp _tcscmp
60
+ #define _tcsmclen _tcsclen
61
+ #define _tcsmnextc _tcsnextc
62
+ #define _tcsmrchr _tcsrchr
63
+ #define _tcsmstr _tcsstr
64
+ #define _tcsmupr _tcsupr
65
+
66
+ typedef char _NTCHAR;
68
67
  #else
69
- #define _tcsmcmp _mbscmp
70
- #define _tcsmclen _mbslen
71
- #define _tcsmnextc _mbsnextc
72
- #define _tcsmrchr _mbsrchr
73
- #define _tcsmstr _mbsstr
74
- #define _tcsmupr _mbsupr
75
- typedef wchar_t _NTCHAR;
68
+ #define _tcsmcmp _mbscmp
69
+ #define _tcsmclen _mbslen
70
+ #define _tcsmnextc _mbsnextc
71
+ #define _tcsmrchr _mbsrchr
72
+ #define _tcsmstr _mbsstr
73
+ #define _tcsmupr _mbsupr
74
+ typedef wchar_t _NTCHAR;
76
75
  #endif
77
76
 
78
77
  #define __BEGIN_NO_TCHAR_CONVERT__
79
78
  #define __END_NO_TCHAR_CONVERT__
80
79
 
81
-
82
80
  inline const char* toChar(char* buf, const _TCHAR* w, int size)
83
- { //If w becomes in Ansi, a pointer will be returned without doing anything.
84
- #ifdef _UNICODE
85
- WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL, NULL);
86
- return buf;
87
- #else
88
- return w;
89
- #endif
81
+ { // If w becomes in Ansi, a pointer will be returned without doing anything.
82
+ #ifdef _UNICODE
83
+ WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL,
84
+ NULL);
85
+ return buf;
86
+ #else
87
+ return w;
88
+ #endif
90
89
  }
91
90
 
92
91
  inline const char* wtoa(char* buf, const WCHAR* w, int size)
93
92
  {
94
- WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL, NULL);
95
- return buf;
93
+ WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL,
94
+ NULL);
95
+ return buf;
96
96
  }
97
97
 
98
98
  inline const WCHAR* toWChar(WCHAR* buf, const _TCHAR* w, int size)
99
- {//If w becomes in WCHAR, a pointer will be returned without doing anything.
100
- #ifdef _UNICODE
101
- return w;
102
- #else
103
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, w, -1, buf, size);
104
- return buf;
105
- #endif
99
+ { // If w becomes in WCHAR, a pointer will be returned without doing anything.
100
+ #ifdef _UNICODE
101
+ return w;
102
+ #else
103
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, w, -1, buf, size);
104
+ return buf;
105
+ #endif
106
106
  }
107
107
 
108
-
109
108
  #ifdef _UNICODE
110
109
  inline const WCHAR* toWChar(WCHAR* buf, const char* a, int size)
111
110
  {
112
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, buf, size);
113
- return buf;
111
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, buf, size);
112
+ return buf;
114
113
  }
115
114
  #endif
116
115
 
117
116
  inline const WCHAR* toWChar_n(WCHAR* buf, const char* a, int size)
118
117
  {
119
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, size, buf, size);
120
- return buf;
118
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, size, buf, size);
119
+ return buf;
121
120
  }
122
121
 
123
122
  inline const _TCHAR* toTChar(_TCHAR* t, const WCHAR* w, int size)
124
123
  {
125
- #ifdef _UNICODE
126
- return w;
127
- #else
128
- WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, t, size, NULL, NULL);
129
- return t;
130
- #endif
124
+ #ifdef _UNICODE
125
+ return w;
126
+ #else
127
+ WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, t, size, NULL, NULL);
128
+ return t;
129
+ #endif
131
130
  }
132
131
 
133
132
  inline const _TCHAR* toTCharCopy(_TCHAR* t, const WCHAR* w, int size)
134
- { //It returns, after certainly copying, even if w is _TCHAR.
135
- #ifdef _UNICODE
136
- _tcscpy_s(t, size, w);
137
- return t;
138
- #else
139
- WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, t, size, NULL, NULL);
140
- return t;
141
-
142
- #endif
133
+ { // It returns, after certainly copying, even if w is _TCHAR.
134
+ #ifdef _UNICODE
135
+ _tcscpy_s(t, size, w);
136
+ return t;
137
+ #else
138
+ WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, t, size, NULL, NULL);
139
+ return t;
140
+
141
+ #endif
143
142
  }
144
143
 
145
- #pragma warning(disable:4996)
146
144
  inline const char* toCharCpy(char* buf, const _TCHAR* w, int size)
147
- {
148
- #ifdef _UNICODE
149
- WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL, NULL);
150
- return buf;
151
- #else
152
- strncpy(buf, w, size);
153
- return buf;
154
- #endif
145
+ {
146
+ #ifdef _UNICODE
147
+ WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, w, -1, buf, size, NULL,
148
+ NULL);
149
+ return buf;
150
+ #else
151
+ strncpy_s(buf, size, w, size - 1);
152
+ return buf;
153
+ #endif
155
154
  }
156
- #pragma warning(default:4996)
157
155
 
158
156
  inline const _TCHAR* toTChar(_TCHAR* t, const char* a, int size)
159
157
  {
160
- #ifdef _UNICODE
161
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, t, size);
162
- return t;
163
- #else
164
- return a;
165
- #endif
158
+ #ifdef _UNICODE
159
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, t, size);
160
+ return t;
161
+ #else
162
+ return a;
163
+ #endif
166
164
  }
167
165
 
168
- #pragma warning(disable:4996)
169
166
  inline const _TCHAR* toTCharCopy(_TCHAR* t, const char* a, int size)
170
167
  {
171
- #ifdef _UNICODE
172
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, t, size);
173
- return t;
174
- #else
175
- _tcsncpy(t, a, size);
176
- return t;
177
- #endif
168
+ #ifdef _UNICODE
169
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, a, -1, t, size);
170
+ return t;
171
+ #else
172
+ _tcsncpy_s(t, size, a, size - 1);
173
+ return t;
174
+ #endif
178
175
  }
179
- #pragma warning(default:4996)
180
-
181
176
 
182
177
  #endif //__TSTRING_H
183
- #endif //BZS_ENV_TSTRING_H
178
+ #endif // BZS_ENV_TSTRING_H
@@ -6,7 +6,6 @@
6
6
  using namespace bzs::db::protocol::tdap::client;
7
7
  using namespace bzs::db::protocol::tdap;
8
8
 
9
-
10
9
  /** @brief change schema and convert table example
11
10
 
12
11
  This program change "user" table.
@@ -20,14 +19,13 @@ Please execute the "create database" example before execute this example.
20
19
  static const short tablenum_user = 1;
21
20
  static const short fieldnum_name = 1;
22
21
 
23
-
24
22
  /** show database operation error
25
23
  */
26
- void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
24
+ void showError(const _TCHAR* caption, const _TCHAR* tableName, short statusCode)
27
25
  {
28
- _TCHAR tmp[1024]={0x00};
26
+ _TCHAR tmp[1024] = { 0x00 };
29
27
  nstable::tdapErr(0x00, statusCode, tableName, tmp);
30
- _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
28
+ _tprintf(_T("[ERROR] %s No.%ld %s\n"), caption, statusCode, tmp);
31
29
  }
32
30
 
33
31
  /** Change user table schema
@@ -35,20 +33,20 @@ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
35
33
  bool changeUserTable(dbdef* def)
36
34
  {
37
35
 
38
- //change name size
39
- tabledef** td = def->tableDefPtr(tablenum_user);
40
- fielddef* fd = &(*td)->fieldDefs[fieldnum_name];
36
+ // change name size
37
+ tabledef* td = def->tableDefs(tablenum_user);
38
+ fielddef* fd = &td->fieldDefs[fieldnum_name];
41
39
  fd->setLenByCharnum(64);
42
40
 
43
- //add tel field
44
- fd = def->insertField((*td)->id, (*td)->fieldCount);
41
+ // add tel field
42
+ fd = def->insertField(tablenum_user, td->fieldCount);
45
43
  fd->setName(_T("tel"));
46
44
  fd->type = ft_mychar;
47
- fd->setCharsetIndex( CHARSET_LATIN1);
45
+ fd->setCharsetIndex(CHARSET_LATIN1);
48
46
  fd->setLenByCharnum(16);
49
47
 
50
- //write user table schema
51
- def->updateTableDef((*td)->id);
48
+ // write user table schema
49
+ def->updateTableDef(tablenum_user);
52
50
  if (def->stat() != 0)
53
51
  {
54
52
  showError(_T("edit schema table"), NULL, def->stat());
@@ -70,12 +68,12 @@ bool openDbExclusive(database* db, const _TCHAR* uri)
70
68
  return true;
71
69
  }
72
70
 
73
- void __STDCALL onCopyData(database* db, int recordCount, int count, bool &cancel)
71
+ void __STDCALL
72
+ onCopyData(database* db, int recordCount, int count, bool& cancel)
74
73
  {
75
- if (count == 0)
76
- _tprintf(_T("\n"));
77
- _tprintf(_T("."));
78
-
74
+ if (count == 0)
75
+ _tprintf(_T("\n"));
76
+ _tprintf(_T("."));
79
77
  }
80
78
 
81
79
  #pragma argsused
@@ -87,12 +85,12 @@ int _tmain(int argc, _TCHAR* argv[])
87
85
 
88
86
  if (openDbExclusive(db, uri))
89
87
  {
90
- //backup current user table schema
88
+ // backup current user table schema
91
89
  db->dbDef()->pushBackup(tablenum_user);
92
90
 
93
91
  if (changeUserTable(db->dbDef()))
94
92
  {
95
- //convert table if table exist;
93
+ // convert table if table exist;
96
94
  if (db->existsTableFile(tablenum_user, NULL))
97
95
  {
98
96
  db->setOnCopyData(onCopyData);
@@ -106,10 +104,11 @@ int _tmain(int argc, _TCHAR* argv[])
106
104
  if (db->stat())
107
105
  {
108
106
  result = db->stat();
109
- //restore user table schema
107
+ // restore user table schema
110
108
  db->dbDef()->popBackup(tablenum_user);
111
- }else
112
- _tprintf(_T("\nchage table success. \n"));
109
+ }
110
+ else
111
+ _tprintf(_T("\nchange schema success. \n"));
113
112
  db->close();
114
113
  }
115
114
  database::destroy(db);
@@ -3,7 +3,6 @@
3
3
  using namespace bzs::db::protocol::tdap::client;
4
4
  using namespace bzs::db::protocol::tdap;
5
5
 
6
-
7
6
  /**
8
7
  @brief change schema and convert table example
9
8
 
@@ -18,61 +17,60 @@ Please execute the "create database" example before execute this example.
18
17
  static const short tablenum_user = 1;
19
18
  static const short fieldnum_name = 1;
20
19
 
21
-
22
-
23
20
  /** Change user table schema
24
21
  */
25
22
  void changeUserTable(dbdef* def)
26
23
  {
27
- //change name size
28
- tabledef** td = def->tableDefPtr(tablenum_user);
29
- fielddef* fd = &(*td)->fieldDefs[fieldnum_name];
24
+ // change name size
25
+ tabledef* td = def->tableDefs(tablenum_user);
26
+ fielddef* fd = &td->fieldDefs[fieldnum_name];
30
27
  fd->setLenByCharnum(64);
31
28
 
32
- //add tel field
29
+ // add tel field
33
30
  int size = lenByCharnum(ft_mychar, CHARSET_LATIN1, 16);
34
- fd = insertField(def, (*td)->id, (*td)->fieldCount, _T("tel"), ft_mychar, size);
31
+ fd = insertField(def, tablenum_user, td->fieldCount, _T("tel"), ft_mychar,
32
+ size);
35
33
  fd->setCharsetIndex(CHARSET_LATIN1);
36
-
37
- //write user table schema
38
- updateTableDef(def, (*td)->id);
34
+ // write user table schema
35
+ updateTableDef(def, tablenum_user);
39
36
  }
40
37
 
41
- void __stdcall onCopyData(database* db, int recordCount, int count, bool &cancel)
38
+ void __STDCALL
39
+ onCopyData(database* db, int recordCount, int count, bool& cancel)
42
40
  {
43
- if (count == 0)
44
- std::cout << std::endl;
45
- std::cout << "." ;
46
-
41
+ if (count == 0)
42
+ std::cout << std::endl;
43
+ std::cout << ".";
47
44
  }
48
45
 
49
46
  #pragma argsused
50
47
  int _tmain(int argc, _TCHAR* argv[])
51
48
  {
52
- database_ptr db = createDatadaseObject();
49
+ database_ptr db = createDatabaseObject();
53
50
  try
54
51
  {
55
- connectParams prams(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
52
+ connectParams prams(_T("tdap"), _T("localhost"), _T("test"),
53
+ _T("test"));
56
54
  prams.setMode(TD_OPEN_EXCLUSIVE);
57
55
 
58
56
  openDatabase(db, prams);
59
57
 
60
- //backup current user table schema
58
+ // backup current user table schema
61
59
  db->dbDef()->pushBackup(tablenum_user);
62
60
 
63
61
  changeUserTable(db->dbDef());
64
62
 
65
- //convert table
66
- //If an error ouccered then restore the table schema automaticaly.
63
+ // convert table
64
+ // If an error ouccered then restore the table schema automaticaly.
67
65
  convertTable(db, _T("user"), onCopyData);
68
66
 
69
- std::cout << "change databse success." << std::endl;
67
+ std::cout << "change schema success." << std::endl;
70
68
  return 0;
71
69
  }
72
70
 
73
- catch(bzs::rtl::exception& e)
71
+ catch (bzs::rtl::exception& e)
74
72
  {
75
- std::tcout << *bzs::rtl::getMsg(e) << std::endl;
73
+ std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
76
74
  }
77
75
  return 1;
78
76
  }
@@ -1,10 +1,5 @@
1
- #include <bzs/db/protocol/tdap/client/trdboostapi.h>
1
+ #include <bzs/db/protocol/tdap/client/pooledDatabaseManager.h>
2
2
  #include <iostream>
3
- #include <vector>
4
- #include <boost/thread/thread.hpp>
5
- #include <boost/thread/condition.hpp>
6
-
7
-
8
3
 
9
4
  using namespace bzs::db::protocol::tdap::client;
10
5
  using namespace bzs::db::protocol::tdap;
@@ -19,147 +14,97 @@ And execute ten worker jobs with each thread.
19
14
  Each worker shows the connection object pointer.
20
15
 
21
16
  */
22
-
23
-
24
17
  struct clientID
25
18
  {
26
19
  void* con;
27
- char_td reserved[12 - sizeof(void*)];//32bit = 8 64bit = 4
28
- char_td aid[2];
29
- ushort_td id;
20
+ char_td reserved[12 - sizeof(void*)]; // 32bit = 8 64bit = 4
21
+ char_td aid[2];
22
+ ushort_td id;
30
23
  };
31
24
 
32
-
33
- /** connection pool class
34
- Hold database instance and delivery.
35
- */
36
- class connectionPool
25
+ class worker
37
26
  {
38
- std::vector<database_ptr> m_dbs;
39
- mutable mutex m_mutex;
40
- mutable mutex m_mutex2;
41
-
42
- mutable condition m_busy;
27
+ int m_id;
28
+ int m_worktime;
29
+ static mutex m_mutex;
43
30
 
44
31
  public:
45
- connectionPool(){};
32
+ worker(int id, int worktime) : m_id(id), m_worktime(worktime){};
46
33
 
47
- /** delivery database instance*/
48
- database_ptr get()const
34
+ void execute()
49
35
  {
50
- mutex::scoped_lock lck(m_mutex);
51
- while (1)
36
+ try
52
37
  {
53
- for (size_t i = 0;i<m_dbs.size();i++)
38
+ pooledDbManager db;
39
+ db.use();
40
+
41
+ clientID* cid = (clientID*)db.clientID();
42
+
54
43
  {
55
- if (m_dbs[i].use_count() == 1)
56
- return m_dbs[i];
44
+ mutex::scoped_lock lck(m_mutex);
45
+ std::cout << "worker strat id = " << m_id << " connection = 0x"
46
+ << std::hex << cid->con << std::endl;
47
+ }
48
+
49
+ Sleep(m_worktime);
50
+ if (m_id == 4)
51
+ throw "error"; // throw error example
57
52
 
53
+ {
54
+ mutex::scoped_lock lck(m_mutex);
55
+ std::cout << "worker finish id = " << m_id << " connection = 0x"
56
+ << std::hex << cid->con << std::endl;
58
57
  }
59
- mutex::scoped_lock lck(m_mutex2);
60
- m_busy.wait(lck);
61
-
58
+ db.unUse();
59
+ delete this;
62
60
  }
63
- }
64
61
 
65
- /** create database and login the server with each connection*/
66
- void create(size_t size, const connectParams& param)
67
- {
68
- for (size_t i =0;i<size;++i)
62
+ catch (bzs::rtl::exception& e)
69
63
  {
70
- database_ptr db = createDatadaseObject();
71
- connect(db, param, true/* new connection*/);
72
- openDatabase(db, param);
73
- m_dbs.push_back(db);
64
+ std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
74
65
  }
75
- }
76
-
77
- void releaseOne()
78
- {
79
- m_busy.notify_one();
80
- }
81
66
 
82
- };
83
-
84
- connectionPool cpool;
85
-
86
- void releaseConnection(connectionPool* pool)
87
- {
88
- pool->releaseOne();
89
- }
90
-
91
- class worker
92
- {
93
- int m_id;
94
- int m_worktime;
95
- static mutex m_mutex;
96
- public:
97
- worker(int id, int worktime):m_id(id),m_worktime(worktime){};
98
- void execute()
99
- {
100
- try
101
- {
102
- shared_ptr<connectionPool> pool(&cpool, releaseConnection);
103
- {
104
- database_ptr db = pool->get();
105
-
106
- clientID* cid = (clientID*)db->clientID();
107
-
108
- {
109
- mutex::scoped_lock lck(m_mutex);
110
- std::cout << "worker strat id = " << m_id
111
- << " connection = 0x" << std::hex << cid->con << std::endl;
112
- }
113
-
114
- Sleep(m_worktime);
115
- if (m_id == 4) throw "error"; //throw error example
116
-
117
- {
118
- mutex::scoped_lock lck(m_mutex);
119
- std::cout << "worker finish id = " << m_id
120
- << " connection = 0x" << std::hex << cid->con << std::endl;
121
- }
122
- } // release database
123
-
124
- delete this;
125
- } //call releaseConnection
126
-
127
- catch(...)
67
+ catch (...)
128
68
  {
129
69
  mutex::scoped_lock lck(m_mutex);
130
70
  std::cout << "worker error id = " << m_id << std::endl;
131
71
  delete this;
132
72
  }
133
73
  }
134
-
135
74
  };
136
75
  mutex worker::m_mutex;
137
76
 
138
- static const worktime[10] = {5, 1, 3, 5, 4, 1, 2, 5, 4, 1};
77
+ static const int worktime[10] = { 5, 1, 3, 5, 4, 1, 2, 5, 4, 1 };
139
78
 
140
79
  #pragma argsused
141
80
  int _tmain(int argc, _TCHAR* argv[])
142
81
  {
143
82
  try
144
83
  {
145
- connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
146
- //create four databases
147
- cpool.create(4, param);
84
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"),
85
+ _T("test"));
86
+ // create four databases
87
+ pooledDbManager::reserve(4, param);
148
88
 
149
- //Execute 10 workers with each thread.
89
+ // Execute 10 workers with each thread.
150
90
  thread_group threads;
151
- for (int i=0;i<10;++i)
91
+ for (int i = 0; i < 10; ++i)
152
92
  {
153
- worker* w = new worker(i+1, worktime[i]*100);
154
- threads.create_thread( bind(&worker::execute, w));
93
+ worker* w = new worker(i + 1, worktime[i] * 100);
94
+ threads.create_thread(bind(&worker::execute, w));
155
95
  }
156
96
  threads.join_all();
97
+
98
+ // release all connection.
99
+ pooledDbManager().reset(0);
100
+
101
+ std::cout << "Connection pool test success." << std::endl;
157
102
  return 0;
158
103
  }
159
104
 
160
- catch(bzs::rtl::exception& e)
105
+ catch (bzs::rtl::exception& e)
161
106
  {
162
- std::tcout << *bzs::rtl::getMsg(e) << std::endl;
107
+ std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
163
108
  }
164
109
  return 1;
165
110
  }