transactd 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,120 @@
1
+ <?php
2
+ /* ================================================================
3
+ Copyright (C) 2014 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ ================================================================ */
20
+ mb_internal_encoding('UTF-8');
21
+
22
+ require_once("transactd.php");
23
+ use BizStation\Transactd as Bz;
24
+
25
+ define("PROTOCOL", 'tdap');
26
+ define("HOSTNAME", 'localhost');
27
+ define("DBNAME", 'querytest');
28
+ define("SCHEMANAME", 'test');
29
+ define("BDFNAME", '?dbfile=' . SCHEMANAME . '.bdf');
30
+ define("URL", PROTOCOL . '://' . HOSTNAME . '/' . DBNAME . BDFNAME);
31
+ define("TABLENAME", 'user');
32
+
33
+ // multi thread test if `php_pthreads` exists.
34
+ if(class_exists('Thread')){
35
+ class SimpleWorker extends Thread
36
+ {
37
+ public function __construct($name, $url, $sleep=0)
38
+ {
39
+ $this->name = $name;
40
+ $this->url = $url;
41
+ $this->sleep = $sleep;
42
+ }
43
+ public function run()
44
+ {
45
+ //echo ('... waiting to get ' . $this->name . " ...\n");
46
+ $dbm = new Bz\pooledDbManager(new Bz\connectParams($this->url));
47
+ //echo ('GOT ' . $this->name . ' ! sleep ' . $this->sleep . "sec ...\n");
48
+ sleep($this->sleep);
49
+ $dbm->unUse();
50
+ //echo ('end ' . $this->name . "\n");
51
+ }
52
+ }
53
+ }
54
+
55
+ class transactdPoolTest extends PHPUnit_Framework_TestCase
56
+ {
57
+ public function testConnectParams()
58
+ {
59
+ $cp = new Bz\connectParams(URL);
60
+ $this->assertEquals($cp->uri(), URL);
61
+ $cp = new Bz\connectParams(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME);
62
+ $this->assertEquals($cp->uri(), URL);
63
+ }
64
+ public function testUse()
65
+ {
66
+ Bz\pooledDbManager::setMaxConnections(3);
67
+ $cp = new Bz\connectParams(URL);
68
+ $this->assertEquals($cp->uri(), URL);
69
+ $dbm1 = new Bz\pooledDbManager($cp);
70
+ $dbm2 = new Bz\pooledDbManager($cp);
71
+ $dbm3 = new Bz\pooledDbManager($cp);
72
+ $dbm1->unUse();
73
+ $dbm4 = new Bz\pooledDbManager($cp);
74
+ $dbm3->unUse();
75
+ $dbm5 = new Bz\pooledDbManager($cp);
76
+ Bz\pooledDbManager::setMaxConnections(5);
77
+ $dbm1 = new Bz\pooledDbManager($cp);
78
+ $dbm3 = new Bz\pooledDbManager($cp);
79
+ $dbm1->unUse();
80
+ $dbm2->unUse();
81
+ $dbm3->unUse();
82
+ $dbm4->unUse();
83
+ $dbm5->unUse();
84
+ }
85
+ public function testConnect()
86
+ {
87
+ Bz\pooledDbManager::setMaxConnections(3);
88
+ $cp = new Bz\connectParams(URL);
89
+ $this->assertEquals($cp->uri(), URL);
90
+ $dbm = new Bz\pooledDbManager($cp);
91
+ $atu = new Bz\ActiveTable($dbm, 'user');
92
+ $q = new Bz\query();
93
+ $rs = new Bz\RecordSet();
94
+ $atu->alias('名前', 'name');
95
+ $q->select('id', 'name', 'group')->where('id', '<=', 15000);
96
+ $rs = $atu->index(0)->keyValue(1)->read($q);
97
+ $this->assertEquals($rs->size(), 15000);
98
+ $this->assertEquals($rs[0]['id'], 1);
99
+ $this->assertEquals($rs[0][0], 1);
100
+ $this->assertEquals($rs[0]['name'], '1 user');
101
+ $this->assertEquals($rs[0][1], '1 user');
102
+ $this->assertEquals($rs[0][2], 1);
103
+ $dbm->unUse();
104
+ }
105
+ public function testMultiThreads()
106
+ {
107
+ if(! class_exists('Thread')){
108
+ echo(' * class Tread not found! * ');
109
+ return;
110
+ }
111
+ Bz\pooledDbManager::setMaxConnections(5);
112
+ $t = array();
113
+ for ($i = 1; $i <= 12; $i++)
114
+ {
115
+ $t[] = new SimpleWorker('dbm' . $i, URL, rand(1, 3));
116
+ $t[$i - 1]->start();
117
+ }
118
+ $this->assertEquals(true, true);
119
+ }
120
+ }
@@ -21,8 +21,6 @@
21
21
  require 'date'
22
22
  require 'transactd'
23
23
 
24
- TYPE_SCHEMA_BDF = 0
25
-
26
24
  USE_NORMAL = 0
27
25
  USE_TRANS = 1
28
26
  USE_BALKINS = 2
@@ -203,7 +201,7 @@ def createTestDataBase(db, uri)
203
201
  puts("createTestDataBase erorr:No.#{db.stat().to_s} #{uri}")
204
202
  return false
205
203
  end
206
- if (db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
204
+ if (db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
207
205
  dbdef = db.dbDef()
208
206
  td = Transactd::Tabledef.new()
209
207
  td.setTableName('user')
@@ -286,8 +284,8 @@ def main(argv)
286
284
  exeType = Integer(argv[3]) # -1
287
285
  insertBeforeNoDelete = ((argv.length > 4) && (Integer(argv[4]) != 0))
288
286
 
289
- db = Transactd::Database.createObject()
290
- if (db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '') == false)
287
+ db = Transactd::Database.new()
288
+ if (db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '') == false)
291
289
  if (!createTestDataBase(db, uri))
292
290
  db.close()
293
291
  return
@@ -296,7 +294,7 @@ def main(argv)
296
294
  end
297
295
  printHeader(uri, count)
298
296
 
299
- if (!db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
297
+ if (!db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
300
298
  puts("open table erorr No:#{db.stat().to_s}")
301
299
  else
302
300
  tb = openTable(db, 'user', Transactd::TD_OPEN_NORMAL)
@@ -23,7 +23,6 @@ require 'transactd'
23
23
  FN_ID = 0
24
24
  FN_NAME = 1
25
25
 
26
- TYPE_SCHEMA_BDF = 0
27
26
  PARALLEL_TRN = 1000
28
27
  LOCK_SINGLE_NOWAIT = 200
29
28
  TRANS_BIAS = PARALLEL_TRN + LOCK_SINGLE_NOWAIT
@@ -31,31 +30,35 @@ TRANS_BIAS = PARALLEL_TRN + LOCK_SINGLE_NOWAIT
31
30
  def createTable(db)
32
31
  dbdef = db.dbDef()
33
32
  td = Transactd::Tabledef.new()
33
+ # Set table schema codepage to UTF-8
34
+ # - codepage for field NAME and tableNAME
35
+ td.schemaCodePage = Transactd::CP_UTF8
34
36
  td.setTableName('user')
35
37
  td.setFileName('user.dat')
38
+ # Set table default charaset index
39
+ # - default charset for field VALUE
40
+ td.charsetIndex = Transactd::charsetIndex(Transactd::CP_UTF8)
36
41
  td.id = 1
37
42
  td.pageSize = 2048
38
43
  dbdef.insertTable(td)
39
- td = dbdef.tableDefs(td.id)
40
-
41
- fd = dbdef.insertField(td.id, 0)
44
+ # id
45
+ fd = dbdef.insertField(td.id, FN_ID)
42
46
  fd.setName('id')
43
47
  fd.type = Transactd::Ft_integer
44
48
  fd.len = 4
45
49
  dbdef.updateTableDef(1)
46
-
47
- fd = dbdef.insertField(td.id, 1)
50
+ # name
51
+ fd = dbdef.insertField(td.id, FN_NAME)
48
52
  fd.setName('name')
49
53
  fd.type = Transactd::Ft_myvarchar
50
54
  fd.len = 100
51
55
  dbdef.updateTableDef(td.id)
52
-
56
+ # key
53
57
  kd = dbdef.insertKey(td.id, 0)
54
58
  kd.segment(0).fieldNum = 0
55
59
  kd.segment(0).flags.bit8 = 1 # extend key type
56
60
  kd.segment(0).flags.bit1 = 1 # changeable
57
61
  kd.segmentCount = 1
58
-
59
62
  td.primaryKeyNum = 0
60
63
  dbdef.updateTableDef(td.id)
61
64
  end
@@ -107,9 +110,9 @@ def main(argv)
107
110
  end
108
111
  end
109
112
 
110
- db = Transactd::Database.createObject()
113
+ db = Transactd::Database.new()
111
114
 
112
- if !db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
115
+ if !db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
113
116
  db.create(uri)
114
117
  if db.stat() != 0
115
118
  puts("create database error No #{db.stat()}")
@@ -118,7 +121,7 @@ def main(argv)
118
121
  end
119
122
  end
120
123
 
121
- if !db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
124
+ if !db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
122
125
  puts("open table erorr No #{db.stat().to_s}")
123
126
  db.close()
124
127
  return
@@ -158,8 +161,8 @@ def main(argv)
158
161
 
159
162
  if functionNumber == 2
160
163
  db.beginTrn(TRANS_BIAS)
161
- tb.clearBuffer()
162
164
  for i in rangeStart..rangeEnd do
165
+ tb.clearBuffer()
163
166
  tb.setFV(FN_ID, i)
164
167
  tb.seek()
165
168
  if (tb.stat() == 0)
@@ -38,8 +38,6 @@ FDI_USER_ID = 1
38
38
  FDI_BODY = 2
39
39
  FDI_IMAGE = 3
40
40
 
41
- TYPE_SCHEMA_BDF = 0
42
-
43
41
  def dropDatabase(db)
44
42
  db.open(URL)
45
43
  expect(db.stat()).to eq 0
@@ -57,7 +55,7 @@ def createDatabase(db)
57
55
  end
58
56
 
59
57
  def openDatabase(db)
60
- db.open(URL, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
58
+ db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
61
59
  expect(db.stat()).to eq 0
62
60
  end
63
61
 
@@ -128,26 +126,20 @@ def getTestBinary()
128
126
  end
129
127
 
130
128
  describe Transactd, 'blob' do
131
- before :each do
132
- @db = Transactd::Database.createObject()
133
- end
134
- after :each do
135
- @db.close()
136
- @db = nil
137
- end
138
-
139
129
  it 'create' do
140
- createDatabase(@db)
141
- openDatabase(@db)
142
- createTable(@db)
143
- tb = openTable(@db)
144
- tb.close()
130
+ db = Transactd::Database.new()
131
+ createDatabase(db)
132
+ openDatabase(db)
133
+ createTable(db)
134
+ tb = openTable(db)
135
+ db.close()
145
136
  end
146
137
 
147
138
  it 'insert' do
139
+ db = Transactd::Database.new()
148
140
  image = getTestBinary()
149
- openDatabase(@db)
150
- tb = openTable(@db)
141
+ openDatabase(db)
142
+ tb = openTable(db)
151
143
  expect(tb).not_to be nil
152
144
  # 1
153
145
  tb.clearBuffer()
@@ -172,13 +164,14 @@ describe Transactd, 'blob' do
172
164
  tb.setFV(FDI_IMAGE, str, str.bytesize)
173
165
  tb.insert()
174
166
  expect(tb.stat()).to eq 0
175
- tb.close()
167
+ db.close()
176
168
  end
177
169
 
178
170
  it 'seek' do
171
+ db = Transactd::Database.new()
179
172
  image = getTestBinary()
180
- openDatabase(@db)
181
- tb = openTable(@db)
173
+ openDatabase(db)
174
+ tb = openTable(db)
182
175
  expect(tb).not_to be nil
183
176
  # 1
184
177
  tb.clearBuffer()
@@ -210,13 +203,14 @@ describe Transactd, 'blob' do
210
203
  expect(tb.getFVint(FDI_USER_ID)).to eq 1
211
204
  expect(tb.getFVstr(FDI_BODY)).to eq "2\ntest\nテスト\n\nあいうえおあいうえお"
212
205
  expect(tb.getFVbin(FDI_IMAGE).force_encoding('UTF-8')).to eq "2\ntest\nテスト\n\nあいうえおあいうえお"
213
- tb.close()
206
+ db.close()
214
207
  end
215
208
 
216
209
  it 'find' do
210
+ db = Transactd::Database.new()
217
211
  image = getTestBinary()
218
- openDatabase(@db)
219
- tb = openTable(@db)
212
+ openDatabase(db)
213
+ tb = openTable(db)
220
214
  expect(tb).not_to be nil
221
215
  # 1
222
216
  tb.setKeyNum(0)
@@ -243,13 +237,14 @@ describe Transactd, 'blob' do
243
237
  # 2... but changing seek-direction is not allowed
244
238
  tb.findPrev(true)
245
239
  expect(tb.stat()).to eq Transactd::STATUS_PROGRAM_ERROR
246
- tb.close()
240
+ db.close()
247
241
  end
248
242
 
249
243
  it 'update' do
244
+ db = Transactd::Database.new()
250
245
  image = getTestBinary()
251
- openDatabase(@db)
252
- tb = openTable(@db)
246
+ openDatabase(db)
247
+ tb = openTable(db)
253
248
  expect(tb).not_to be nil
254
249
  # select 1
255
250
  tb.clearBuffer()
@@ -289,13 +284,14 @@ describe Transactd, 'blob' do
289
284
  expect(tb.getFVint(FDI_USER_ID)).to eq 1
290
285
  expect(tb.getFVstr(FDI_BODY)).to eq "2\nテスト\ntest\n\nABCDEFG"
291
286
  expect(tb.getFVbin(FDI_IMAGE).force_encoding('UTF-8')).to eq "2\ntest\nテスト\n\nあいうえおあいうえお"
292
- tb.close()
287
+ db.close()
293
288
  end
294
289
 
295
290
  it 'delete' do
291
+ db = Transactd::Database.new()
296
292
  image = getTestBinary()
297
- openDatabase(@db)
298
- tb = openTable(@db)
293
+ openDatabase(db)
294
+ tb = openTable(db)
299
295
  expect(tb).not_to be nil
300
296
  # delete 2
301
297
  tb.clearBuffer()
@@ -323,10 +319,11 @@ describe Transactd, 'blob' do
323
319
  # eof
324
320
  tb.seekNext()
325
321
  expect(tb.stat()).to eq Transactd::STATUS_EOF
326
- tb.close()
322
+ db.close()
327
323
  end
328
324
 
329
325
  it 'drop' do
330
- dropDatabase(@db)
326
+ db = Transactd::Database.new()
327
+ dropDatabase(db)
331
328
  end
332
329
  end
@@ -32,14 +32,11 @@ describe Transactd, 'datetime' do
32
32
  nowdate.i = i_nowdate # get today as BtrDate
33
33
  s_nowdate = Transactd::btrdtoa(nowdate)
34
34
  s_nowdate2 = Transactd::btrdtoa(nowdate, true)
35
- cs_nowdate = Transactd::c_str(nowdate)
36
35
  #p nowdate
37
36
  #p s_nowdate + ' ' + s_nowdate.encoding.to_s
38
37
  #p s_nowdate2 + ' ' + s_nowdate2.encoding.to_s
39
- #p cs_nowdate + ' ' + cs_nowdate.encoding.to_s
40
38
  expect(s_i_nowdate).to eq s_nowdate
41
39
  expect(s_i_nowdate2).to eq s_nowdate2
42
- expect(cs_nowdate).to eq s_nowdate
43
40
  end
44
41
 
45
42
  it 'get BtrTime' do
@@ -53,14 +50,11 @@ describe Transactd, 'datetime' do
53
50
  nowtime.i = i_nowtime # get now time as BtrTime
54
51
  s_nowtime = Transactd::btrttoa(nowtime)
55
52
  s_nowtime2 = Transactd::btrttoa(nowtime, true)
56
- cs_nowtime = Transactd::c_str(nowtime)
57
53
  #p nowtime
58
54
  #p s_nowtime + ' ' + s_nowtime.encoding.to_s
59
55
  #p s_nowtime2 + ' ' + s_nowtime2.encoding.to_s
60
- #p cs_nowtime + ' ' + cs_nowtime.encoding.to_s
61
56
  expect(s_i_nowtime).to eq s_nowtime
62
57
  expect(s_i_nowtime2).to eq s_nowtime2
63
- expect(cs_nowtime).to eq s_nowtime
64
58
  end
65
59
 
66
60
  it 'get BtrDateTime' do
@@ -88,29 +82,6 @@ describe Transactd, 'datetime' do
88
82
  #p s_datetime_d + ' ' + s_datetime_t
89
83
  end
90
84
 
91
- it 'get Bdate' do
92
- date = Transactd::atobtrd('2012-08-22')
93
- bdate = Transactd::Bdate.new(date.i)
94
- bdate2 = Transactd::Bdate.new(Transactd::btrdtoa(date))
95
- #p bdate,bdate2
96
- btrdate = bdate.btr_date()
97
- btrdate2 = bdate2.btr_date()
98
- #p btrdate, btrdate2
99
- s_bdate = bdate.c_str()
100
- s_bdate2 = bdate2.c_str()
101
- expect(s_bdate).to eq s_bdate2
102
- #p s_bdate + ' ' + s_bdate.encoding.to_s
103
- #p s_bdate2 + ' ' + s_bdate2.encoding.to_s
104
- expect(bdate.year()).to eq 2012
105
- expect(bdate.month()).to eq 8
106
- expect(bdate.date()).to eq 22
107
- expect(bdate.year_str()).to eq '2012'
108
- expect(bdate.month_str()).to eq '8'
109
- expect(bdate.date_str()).to eq '22'
110
- #p bdate.year(), bdate.month(), bdate.date()
111
- #p bdate.year_str(), bdate.month_str(), bdate.date_str()
112
- end
113
-
114
85
  it 'get BtrTimeStamp from string' do
115
86
  date = Transactd::atobtrd('2012-08-22')
116
87
  time = Transactd::atobtrt('15:37:00')
@@ -41,8 +41,6 @@ FDI_NAME = 1
41
41
  FDN_NAME = '名前'.encode('UTF-8')
42
42
 
43
43
 
44
- TYPE_SCHEMA_BDF = 0
45
-
46
44
  def testDropDatabase(db, url)
47
45
  db.open(url)
48
46
  expect(db.stat()).to eq 0
@@ -50,17 +48,19 @@ def testDropDatabase(db, url)
50
48
  expect(db.stat()).to eq 0
51
49
  end
52
50
 
53
- def testCreateDatabase(db, url)
51
+ def testCreateDatabase(url)
52
+ db = Transactd::Database.new()
54
53
  db.create(url)
55
54
  if db.stat() == Transactd::STATUS_TABLE_EXISTS_ERROR
56
55
  testDropDatabase(db, url)
57
56
  db.create(url)
58
57
  end
59
58
  expect(db.stat()).to eq 0
59
+ db.close()
60
60
  end
61
61
 
62
62
  def testOpenDatabase(db, url)
63
- db.open(url, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
63
+ db.open(url, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
64
64
  expect(db.stat()).to eq 0
65
65
  end
66
66
 
@@ -162,7 +162,8 @@ def testFind(db, tablename)
162
162
  tb.close()
163
163
  end
164
164
 
165
- def testWhole(db, tableid, tablename, url)
165
+ def testWhole(tableid, tablename, url)
166
+ db = Transactd::Database.new()
166
167
  tablename = tablename.encode('UTF-8') # table name must be UTF-8
167
168
  testOpenDatabase(db, url)
168
169
  testCreateTable(db, tableid, tablename)
@@ -170,39 +171,37 @@ def testWhole(db, tableid, tablename, url)
170
171
  testInsert(db, tablename)
171
172
  testGetEqual(db, tablename)
172
173
  testFind(db, tablename)
174
+ db.close()
173
175
  end
174
176
 
175
177
 
176
178
  describe Transactd do
177
- before :each do
178
- @db = Transactd::Database.createObject()
179
- end
180
- after :each do
181
- @db.close()
182
- @db = nil
183
- end
184
-
185
179
  it 'create database' do
186
- testCreateDatabase(@db, URL.encode('UTF-8'))
180
+ testCreateDatabase(URL.encode('UTF-8'))
187
181
  end
188
182
 
189
183
  it 'table which has kanji-named field' do
190
- testWhole(@db, 1, 'kanji-field', URL.encode('UTF-8'))
184
+ testWhole(1, 'kanji-field', URL.encode('UTF-8'))
191
185
  end
192
186
 
193
187
  it 'kanji-named table' do
194
- testWhole(@db, 2, '漢字テーブル', URL)
188
+ testWhole(2, '漢字テーブル', URL)
195
189
  end
196
190
 
197
191
  it 'create kanji-named database' do
198
- testCreateDatabase(@db, URL_KANJI.encode('UTF-8')) # URL must be UTF-8
192
+ testCreateDatabase(URL_KANJI.encode('UTF-8')) # URL must be UTF-8
199
193
  end
200
194
 
201
195
  it 'table which has kanji-named field' do
202
- testWhole(@db, 1, 'kanji-field', URL_KANJI.encode('UTF-8'))
196
+ testWhole(1, 'kanji-field', URL_KANJI.encode('UTF-8'))
203
197
  end
204
198
 
205
199
  it 'kanji-named table' do
206
- testWhole(@db, 2, '漢字テーブル', URL_KANJI.encode('UTF-8'))
200
+ testWhole(2, '漢字テーブル', URL_KANJI.encode('UTF-8'))
201
+ end
202
+
203
+ it 'drop database' do
204
+ db = Transactd::Database.new()
205
+ testDropDatabase(db, URL_KANJI.encode('UTF-8'))
207
206
  end
208
207
  end
@@ -0,0 +1,107 @@
1
+ # coding : utf-8
2
+ =begin ============================================================
3
+ Copyright (C) 2014 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ ===================================================================
20
+ =end
21
+ require 'transactd'
22
+ require 'thwait'
23
+
24
+ def getHost()
25
+ hostname = '127.0.0.1/'
26
+ if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
27
+ hostname = ENV['TRANSACTD_RSPEC_HOST']
28
+ end
29
+ hostname = hostname + '/' unless (hostname =~ /\/$/)
30
+ return hostname
31
+ end
32
+
33
+ PROTOCOL = 'tdap'
34
+ HOSTNAME = getHost().sub(/\/$/, '')
35
+ DBNAME = 'querytest'
36
+ SCHEMANAME = 'test'
37
+ BDFNAME = '?dbfile=' + SCHEMANAME + '.bdf'
38
+ URL = PROTOCOL + '://' + HOSTNAME + '/' + DBNAME + BDFNAME
39
+ TABLENAME = 'user'
40
+
41
+ describe Transactd, 'pool' do
42
+ it 'create ConnectParams' do
43
+ cp = Transactd::ConnectParams.new(URL)
44
+ expect(cp.uri()).to eq URL
45
+ cp = Transactd::ConnectParams.new(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME)
46
+ expect(cp.uri()).to eq URL
47
+ end
48
+
49
+ it 'use connections' do
50
+ Transactd::PooledDbManager::setMaxConnections(3)
51
+ cp = Transactd::ConnectParams.new(URL)
52
+ expect(cp.uri()).to eq URL
53
+ dbm1 = Transactd::PooledDbManager.new(cp)
54
+ dbm2 = Transactd::PooledDbManager.new(cp)
55
+ dbm3 = Transactd::PooledDbManager.new(cp)
56
+ dbm1.unUse()
57
+ dbm4 = Transactd::PooledDbManager.new(cp)
58
+ dbm3.unUse()
59
+ dbm5 = Transactd::PooledDbManager.new(cp)
60
+ Transactd::PooledDbManager::setMaxConnections(5)
61
+ dbm1 = Transactd::PooledDbManager.new(cp)
62
+ dbm3 = Transactd::PooledDbManager.new(cp)
63
+ dbm1.unUse()
64
+ dbm2.unUse()
65
+ dbm3.unUse()
66
+ dbm4.unUse()
67
+ dbm5.unUse()
68
+ end
69
+
70
+ it 'connect to table' do
71
+ Transactd::PooledDbManager::setMaxConnections(3)
72
+ cp = Transactd::ConnectParams.new(URL)
73
+ expect(cp.uri()).to eq URL
74
+ dbm = Transactd::PooledDbManager.new(cp)
75
+ atu = Transactd::ActiveTable.new(dbm, 'user')
76
+ q = Transactd::Query.new()
77
+ atu.alias('名前', 'name')
78
+ q.select('id', 'name', 'group').where('id', '<=', '15000')
79
+ rs = atu.index(0).keyValue(1).read(q)
80
+ expect(rs.size()).to eq 15000
81
+ expect(rs[0]['id']).to eq 1
82
+ expect(rs[0][0]).to eq 1
83
+ expect(rs[0]['name']).to eq '1 user'
84
+ expect(rs[0][1]).to eq '1 user'
85
+ expect(rs[0][2]).to eq 1
86
+ atu.release()
87
+ dbm.unUse()
88
+ end
89
+
90
+ it 'can be used in MultiThreads' do
91
+ Transactd::PooledDbManager::setMaxConnections(5)
92
+ threads = [];
93
+ for i in 1..12 do
94
+ threads.push(Thread.new(i) { |i|
95
+ #puts('... waiting to get dbm' + i.to_s + ' ...')
96
+ Thread.pass
97
+ dbm = Transactd::PooledDbManager.new(Transactd::ConnectParams.new(URL))
98
+ #puts('GOT dbm' + i.to_s + ' !')
99
+ sleep(rand(3) + 1)
100
+ #puts('end dbm' + i.to_s)
101
+ dbm.unUse()
102
+ })
103
+ end
104
+ tw = ThreadsWait.new(*threads)
105
+ tw.all_waits()
106
+ end
107
+ end