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
@@ -1,5 +1,5 @@
1
- #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
2
- #define BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
1
+ #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
2
+ #define BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
3
3
  /* =================================================================
4
4
  Copyright (C) 2000-2013 BizStation Corp All rights reserved.
5
5
 
@@ -18,11 +18,11 @@
18
18
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
19
  02111-1307, USA.
20
20
  ================================================================= */
21
-
22
21
  #include <bzs/env/tstring.h>
23
22
  #include <bzs/db/protocol/tdap/tdapcapi.h>
24
23
  #include <bzs/db/protocol/tdap/tdapSchema.h>
25
24
  #include <bzs/rtl/exception.h>
25
+ #include "export.h"
26
26
 
27
27
  namespace bzs
28
28
  {
@@ -39,39 +39,45 @@ class nsdatabase;
39
39
  class nstable;
40
40
  class bulkInsert;
41
41
 
42
- #define BULKBUFSIZE USHRT_MAX-1000
43
-
42
+ #define BULKBUFSIZE USHRT_MAX - 1000
44
43
 
45
-
46
- class AGRPACK nstable
44
+ class DLLLIB nstable
47
45
  {
48
- friend class nsdatabase; // for destroy()
46
+ friend class nsdatabase; // for destroy()
49
47
  friend class filter;
48
+
50
49
  public:
51
- enum eUpdateType{changeCurrentCc,changeCurrentNcc,changeInKey};
52
- enum eFindType{findForword, findBackForword};
50
+ enum eUpdateType
51
+ {
52
+ changeCurrentCc,
53
+ changeCurrentNcc,
54
+ changeInKey
55
+ };
56
+ enum eFindType
57
+ {
58
+ findForword,
59
+ findBackForword
60
+ };
53
61
  static const bool inkey = true;
54
62
 
55
63
  private:
56
64
  struct nstimpl* m_impl;
57
65
 
58
-
59
66
  nstable(const nstable&);
60
- const nstable& operator = (const nstable&);
67
+ const nstable& operator=(const nstable&);
61
68
  void doUpdate(eUpdateType type);
62
69
  ushort_td doInsert(bool ncc);
63
- static TCHAR* getErrorMessage(int errorCode, _TCHAR* buf, size_t size);
70
+ static _TCHAR* getErrorMessage(int errorCode, _TCHAR* buf, size_t size);
64
71
 
65
72
  protected:
66
-
67
- ushort_td m_op;
68
73
  void* m_pdata;
69
74
  uint_td m_buflen;
70
75
  uint_td m_datalen;
71
76
  void* m_keybuf;
77
+ ushort_td m_op;
72
78
  keylen_td m_keybuflen;
73
79
  keylen_td m_keylen;
74
- short_td m_stat;
80
+ mutable short_td m_stat;
75
81
  char_td m_keynum;
76
82
 
77
83
  union
@@ -82,84 +88,110 @@ protected:
82
88
  uchar_td m_write : 1;
83
89
  uchar_td m_insart : 1;
84
90
  uchar_td m_delete : 1;
91
+ uchar_td m_reserverd : 4;
85
92
  };
86
93
  uchar_td m_curd;
87
94
  };
88
95
 
89
96
  virtual ~nstable();
90
- const _TCHAR* uri() const ;
91
- const uchar_td* posblk() const ;
97
+ const _TCHAR* uri() const;
98
+ const uchar_td* posblk() const;
92
99
  void setIsOpen(bool v);
93
- nsdatabase* nsdb() const ;
94
- bulkInsert* bulkIns() const ;
95
- virtual bool isUniqeKey(char_td keynum){return false;}//for chacek updates deletes at key
96
- virtual void writeRecordData()=0;
97
- virtual int onInsertBefore() {writeRecordData();return 0;};
100
+
101
+ bulkInsert* bulkIns() const;
102
+ virtual bool isUniqeKey(char_td keynum)
103
+ {
104
+ return false;
105
+ } // for chacek updates deletes at key
106
+ virtual void writeRecordData() = 0;
107
+ virtual int onInsertBefore()
108
+ {
109
+ writeRecordData();
110
+ return 0;
111
+ };
98
112
  virtual void onInsertAfter(int beforeResult);
99
- virtual bool onUpdateCheck(eUpdateType type) {return true;};
100
- virtual int onUpdateBefore() {writeRecordData();return 0;};
101
- virtual void onUpdateAfter(int beforeResult) {};
102
- virtual bool onDeleteCheck(bool inkey) {return true;};
113
+ virtual bool onUpdateCheck(eUpdateType type) { return true; };
114
+ virtual int onUpdateBefore()
115
+ {
116
+ writeRecordData();
117
+ return 0;
118
+ };
119
+ virtual void onUpdateAfter(int beforeResult){};
120
+ virtual bool onDeleteCheck(bool in_key) { return true; };
103
121
  virtual void doDel(bool inkey);
104
- virtual keylen_td writeKeyData(){return 0;};
105
- virtual void onReadAfter()=0;
106
- virtual uint_td doGetWriteImageLen() {return m_buflen;};
107
- virtual void doOpen(const _TCHAR* name, char_td mode, const _TCHAR* ownername);
122
+ virtual keylen_td writeKeyData() { return 0; };
123
+ virtual void onReadAfter() = 0;
124
+ virtual uint_td doGetWriteImageLen() { return m_buflen; };
125
+ virtual void doOpen(const _TCHAR* name, char_td mode,
126
+ const _TCHAR* ownername);
108
127
  virtual void doClose();
109
128
  virtual void doCreateIndex(bool specifyKeyNum);
110
- virtual uint_td doRecordCount(bool estimate, bool fromCurrent, eFindType direction);
129
+ virtual uint_td doRecordCount(bool estimate, bool fromCurrent);
111
130
  virtual short_td doBtrvErr(HWND hWnd, _TCHAR* retbuf);
112
131
  virtual ushort_td doCommitBulkInsert(bool autoCommit);
113
132
  virtual void doAbortBulkInsert();
114
- inline void open(const _TCHAR* uri, char_td mode = 0, const _TCHAR* ownerName = NULL) {
115
- doOpen(uri, mode, ownerName);}
133
+ inline void open(const _TCHAR* uri, char_td mode = 0,
134
+ const _TCHAR* ownerName = NULL)
135
+ {
136
+ doOpen(uri, mode, ownerName);
137
+ }
116
138
 
117
- /*
118
- This method is ignore refarence count of nstable and force delete.
119
- Use in nsdatabase::reset()
120
- */
121
- void destroy();
122
- void setShared();
139
+ /*
140
+ This method is ignore refarence count of nstable and force delete.
141
+ Use in nsdatabase::reset()
142
+ */
143
+ void destroy();
144
+ void setShared();
123
145
 
124
146
  public:
125
-
126
- explicit nstable(nsdatabase *pbe);
127
- void addref(void);
128
- void release();
129
- int refCount() const;
130
-
131
- short tableid() const ;
147
+ explicit nstable(nsdatabase* pbe);
148
+ void addref(void);
149
+ void release();
150
+ int refCount() const;
151
+ nsdatabase* nsdb() const;
152
+ short tableid() const;
132
153
  void setTableid(short v);
133
154
  bool isOpen() const;
134
- inline void setAccessRights(unsigned char curd) {m_curd = curd;};
135
- inline const void* data() const {return m_pdata;}
136
- inline void setData(void* v) {m_pdata = v;}
137
- inline uint_td buflen() const {return m_buflen;}
138
- inline void setBuflen(uint_td v) {m_buflen = v;}
139
- inline uint_td datalen() const {return m_datalen;}
140
- inline short_td stat() const {return m_stat;}
141
- inline void setStat(short_td v) {m_stat = v;}
142
- inline char_td keyNum() const {return m_keynum;}
143
- inline void setKeyNum(char_td v) {m_keynum = v;}
144
- inline bool canRead() const {return (bool)m_read;}
145
- inline bool canWrite() const {return (bool)m_write;}
146
- inline bool canInsert() const {return (bool)m_insart;}
147
- inline bool canDelete() const {return (bool)m_delete;}
148
- inline uint_td getWriteImageLen() {return doGetWriteImageLen();};
149
- inline void close() {doClose();}
150
- inline void update(eUpdateType type = changeCurrentCc) {doUpdate(type);}
151
- inline void del(bool inkey=false) {doDel(inkey);}
152
- inline ushort_td insert(bool ncc = false) {return doInsert(ncc);};
153
- inline void createIndex(bool specifyKeyNum = false) {doCreateIndex(specifyKeyNum);}
155
+ bool isUseTransactd() const;
156
+ inline void setAccessRights(unsigned char curd) { m_curd = curd; };
157
+ inline const void* data() const { return m_pdata; }
158
+ inline void setData(void* v) { m_pdata = v; }
159
+ inline uint_td buflen() const { return m_buflen; }
160
+ inline void setBuflen(uint_td v) { m_buflen = v; }
161
+ inline uint_td datalen() const { return m_datalen; }
162
+ inline short_td stat() const { return m_stat; }
163
+ inline void setStat(short_td v) { m_stat = v; }
164
+ inline char_td keyNum() const { return m_keynum; }
165
+ inline void setKeyNum(char_td v) { m_keynum = v; }
166
+ inline bool canRead() const { return (bool)m_read; }
167
+ inline bool canWrite() const { return (bool)m_write; }
168
+ inline bool canInsert() const { return (bool)m_insart; }
169
+ inline bool canDelete() const { return (bool)m_delete; }
170
+ inline uint_td getWriteImageLen() { return doGetWriteImageLen(); };
171
+ inline void close() { doClose(); }
172
+ inline void update(eUpdateType type = changeCurrentCc) { doUpdate(type); }
173
+ inline void del(bool in_key = false) { doDel(in_key); }
174
+ inline ushort_td insert(bool ncc = false) { return doInsert(ncc); };
175
+ inline void createIndex(bool specifyKeyNum = false)
176
+ {
177
+ doCreateIndex(specifyKeyNum);
178
+ }
154
179
  void dropIndex(bool norenumber = false);
155
- inline uint_td recordCount(bool estimate = true, bool fromCurrent = false, eFindType direction = findForword)
156
- {return doRecordCount(estimate, fromCurrent, direction);}
157
- inline short_td tdapErr(HWND hWnd, _TCHAR* retbuf = NULL) {return doBtrvErr(hWnd, retbuf);}
158
-
180
+ inline uint_td recordCount(bool estimate = true, bool fromCurrent = false)
181
+ {
182
+ return doRecordCount(estimate, fromCurrent);
183
+ }
184
+ inline short_td tdapErr(HWND hWnd, _TCHAR* retbuf = NULL)
185
+ {
186
+ return doBtrvErr(hWnd, retbuf);
187
+ }
188
+
159
189
  void beginBulkInsert(int maxBuflen);
160
- void abortBulkInsert(){doAbortBulkInsert();}
161
- inline ushort_td commitBulkInsert(bool autoCommit = false) {
162
- return doCommitBulkInsert(autoCommit);}
190
+ void abortBulkInsert() { doAbortBulkInsert(); }
191
+ inline ushort_td commitBulkInsert(bool autoCommit = false)
192
+ {
193
+ return doCommitBulkInsert(autoCommit);
194
+ }
163
195
  void tdap(ushort_td op);
164
196
  void seekFirst(ushort_td lockBias = 0);
165
197
  void seekLast(ushort_td lockBias = 0);
@@ -179,27 +211,29 @@ public:
179
211
  percentage_td getPercentage(bookmark_td bm);
180
212
  void seekByPercentage();
181
213
  void seekByPercentage(percentage_td pc);
182
- void setOwnerName(const _TCHAR* name , char_td enctype = 0);
214
+ void setOwnerName(const _TCHAR* name, char_td enctype = 0);
183
215
  void clearOwnerName();
184
216
  ushort_td recordLength();
185
217
  void stats(void* databuffer, uint_td buflen, bool estimate = true);
186
218
  void unlock(bookmark_td bm = 0);
219
+ char_td mode() const;
187
220
  static _TCHAR* getFileName(const _TCHAR* uri, _TCHAR* filename);
188
- static short_td tdapErr(HWND hWnd, short_td status, const _TCHAR* tableName = NULL,
189
- _TCHAR* retbuf = NULL);
190
- static void throwError(const _TCHAR* caption, short statusCode);
221
+ static short_td tdapErr(HWND hWnd, short_td status,
222
+ const _TCHAR* tableName = NULL,
223
+ _TCHAR* retbuf = NULL);
224
+ static void throwError(const _TCHAR* caption, short statusCode);
191
225
  static void throwError(const _TCHAR* caption, nstable* tb);
192
226
  static _TCHAR* getDirURI(const _TCHAR* uri, _TCHAR* retbuf);
193
227
  static bool existsFile(const _TCHAR* filename);
194
- static bool test(nstable* p);
195
-
228
+ /** @cond INTERNAL */
229
+ static bool test(nstable* p);
230
+ /** @endcond*/
196
231
  };
197
232
 
233
+ } // namespace client
234
+ } // namespace tdap
235
+ } // namespace protocol
236
+ } // namespace db
237
+ } // namespace bzs
198
238
 
199
- }// namespace client
200
- }// namespace tdap
201
- }// namespace protocol
202
- }// namespace db
203
- }// namespace bzs
204
-
205
- #endif //BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
239
+ #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
@@ -0,0 +1,173 @@
1
+ #pragma once
2
+ #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_POOLEDDATABASEMANAGER_H
3
+ #define BZS_DB_PROTOCOL_TDAP_CLIENT_POOLEDDATABASEMANAGER_H
4
+
5
+ /* =================================================================
6
+ Copyright (C) 20014 BizStation Corp All rights reserved.
7
+
8
+ This program is free software; you can redistribute it and/or
9
+ modify it under the terms of the GNU General Public License
10
+ as published by the Free Software Foundation; either version 2
11
+ of the License, or (at your option) any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with this program; if not, write to the Free Software
20
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21
+ 02111-1307, USA.
22
+ ================================================================= */
23
+ #include "trdboostapi.h"
24
+ #include "connectionPool.h"
25
+ namespace bzs
26
+ {
27
+ namespace db
28
+ {
29
+ namespace protocol
30
+ {
31
+ namespace tdap
32
+ {
33
+ namespace client
34
+ {
35
+
36
+ class xaTransaction
37
+ {
38
+ std::vector<dbmanager_ptr> m_dbs;
39
+
40
+ public:
41
+ void add(dbmanager_ptr& db) { m_dbs.push_back(db); }
42
+
43
+ void unUse()
44
+ {
45
+ for (int i = (int)m_dbs.size() - 1; i >= 0; --i)
46
+ {
47
+ int ref = m_dbs[i].use_count();
48
+ m_dbs.erase(m_dbs.begin() + i);
49
+ if (ref == 2)
50
+ releaseConnection(&cpool);
51
+ }
52
+ }
53
+
54
+ void beginTrn(short bias)
55
+ {
56
+ for (size_t i = 0; i < m_dbs.size(); ++i)
57
+ m_dbs[i]->beginTrn(bias);
58
+ }
59
+
60
+ void endTrn()
61
+ {
62
+ for (size_t i = 0; i < m_dbs.size(); ++i)
63
+ m_dbs[i]->endTrn();
64
+ }
65
+
66
+ void abortTrn()
67
+ {
68
+ for (size_t i = 0; i < m_dbs.size(); ++i)
69
+ m_dbs[i]->abortTrn();
70
+ }
71
+ };
72
+
73
+ /*
74
+ --------------------------------------
75
+ pooledDbManager::setMaxConnections(n);
76
+
77
+ pooledDbManager db;
78
+ db.use(param)
79
+ activeTable a(db, "user");
80
+ ....
81
+ db.unUse();
82
+ --------------------------------------
83
+ Thread safe
84
+ Method : non thread safe.
85
+ Object : thread safe.
86
+
87
+ */
88
+ class pooledDbManager : public idatabaseManager
89
+ {
90
+ dbmanager_ptr m_db;
91
+ bool m_inUse;
92
+ xaTransaction m_xa;
93
+
94
+ public:
95
+ inline pooledDbManager() : m_inUse(false){};
96
+
97
+ inline pooledDbManager(const connectParams* param) : m_inUse(false)
98
+ {
99
+ use(param);
100
+ }
101
+
102
+ inline ~pooledDbManager()
103
+ {
104
+ if (m_inUse)
105
+ unUse();
106
+ }
107
+
108
+ inline void use(const connectParams* param = NULL)
109
+ {
110
+ m_db = cpool.get(param);
111
+ m_inUse = true;
112
+ m_xa.add(m_db);
113
+ }
114
+
115
+ inline void unUse()
116
+ {
117
+ m_db.reset();
118
+ m_xa.unUse();
119
+ // releaseConnection(&cpool);
120
+ m_inUse = false;
121
+ }
122
+
123
+ inline void reset(int v) { cpool.reset(v); }
124
+
125
+ inline table_ptr table(const _TCHAR* name) { return m_db->table(name); }
126
+
127
+ inline database* db() const { return m_db->db(); }
128
+
129
+ inline const _TCHAR* uri() const { return m_db->uri(); }
130
+
131
+ inline char_td mode() const { return m_db->mode(); }
132
+
133
+ inline bool isOpened() const { return m_db->isOpened(); }
134
+
135
+ inline void setOption(__int64 v) { m_db->setOption(v); };
136
+
137
+ inline __int64 option() { return m_db->option(); };
138
+
139
+ inline void beginTrn(short bias) { m_xa.beginTrn(bias); };
140
+
141
+ inline void endTrn() { m_xa.endTrn(); }
142
+
143
+ inline void abortTrn() { m_xa.abortTrn(); }
144
+
145
+ inline int enableTrn() { return m_db->enableTrn(); }
146
+
147
+ inline void beginSnapshot() { m_db->beginSnapshot(); }
148
+
149
+ inline void endSnapshot() { m_db->endSnapshot(); }
150
+
151
+ inline short_td stat() const { return m_db->stat(); }
152
+
153
+ inline uchar_td* clientID() const { return m_db->clientID(); }
154
+
155
+ inline static void setMaxConnections(int maxWorkerNum)
156
+ {
157
+ cpool.setMaxConnections(maxWorkerNum);
158
+ };
159
+ inline static int maxConnections() { return cpool.maxConnections(); };
160
+ inline static void reserve(size_t size, const connectParams& param)
161
+ {
162
+ cpool.reserve(size, param);
163
+ }
164
+ // inline static bool reset(int waitSec=5){return cpool.reset(waitSec);}
165
+ };
166
+
167
+ } // namespace client
168
+ } // namespace tdap
169
+ } // namespace protocol
170
+ } // namespace db
171
+ } // namespace bzs
172
+
173
+ #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_POOLEDDATABASEMANAGER_H
@@ -0,0 +1,209 @@
1
+ /*=================================================================
2
+ Copyright (C) 2014 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
+ #pragma hdrstop
20
+
21
+ #include "recordset.h"
22
+ #include "recordsetImple.h"
23
+
24
+ #pragma package(smart_init)
25
+
26
+ namespace bzs
27
+ {
28
+ namespace db
29
+ {
30
+ namespace protocol
31
+ {
32
+ namespace tdap
33
+ {
34
+ namespace client
35
+ {
36
+
37
+ // ---------------------------------------------------------------------------
38
+ // class recordset
39
+ // ---------------------------------------------------------------------------
40
+ recordset::recordset() : m_imple(new recordsetImple)
41
+ {
42
+ }
43
+
44
+ /* This is deep copy.
45
+ But text and blob field data memory are shared.
46
+ */
47
+ recordset::recordset(const recordset& r) : m_imple(r.m_imple->clone())
48
+ {
49
+ }
50
+
51
+ recordset& recordset::operator=(const recordset& r)
52
+ {
53
+ if (this != &r)
54
+ {
55
+ delete m_imple;
56
+ m_imple = r.m_imple->clone();
57
+ }
58
+ return *this;
59
+ }
60
+
61
+ recordset* recordset::clone() const
62
+ {
63
+ return new recordset(*this);
64
+ }
65
+
66
+ recordset::~recordset()
67
+ {
68
+ delete m_imple;
69
+ }
70
+
71
+ void recordset::release()
72
+ {
73
+ delete this;
74
+ }
75
+
76
+ void recordset::clearRecords()
77
+ {
78
+ m_imple->clearRecords();
79
+ }
80
+
81
+ void recordset::clear()
82
+ {
83
+ m_imple->clear();
84
+ }
85
+
86
+ const fielddefs* recordset::fieldDefs() const
87
+ {
88
+ return m_imple->fieldDefs();
89
+ }
90
+
91
+ row& recordset::operator[](size_t index) const
92
+ {
93
+ m_imple->checkIndex(index);
94
+ return (*m_imple)[index];
95
+ }
96
+
97
+ row& recordset::first() const
98
+ {
99
+ return m_imple->first();
100
+ }
101
+
102
+ row& recordset::last() const
103
+ {
104
+ return m_imple->last();
105
+ }
106
+
107
+ size_t recordset::size() const
108
+ {
109
+ return m_imple->size();
110
+ }
111
+
112
+ size_t recordset::count() const
113
+ {
114
+ return m_imple->count();
115
+ }
116
+
117
+ recordset& recordset::top(recordset& c, int n) const
118
+ {
119
+ m_imple->top(*c.m_imple, n);
120
+ return c;
121
+ }
122
+
123
+ recordset::iterator recordset::begin()
124
+ {
125
+ return m_imple->begin();
126
+ }
127
+
128
+ recordset::iterator recordset::end()
129
+ {
130
+ return m_imple->end();
131
+ }
132
+
133
+ recordset::iterator recordset::erase(size_t index)
134
+ {
135
+ m_imple->checkIndex(index);
136
+ return m_imple->erase(m_imple->begin() + index);
137
+ }
138
+
139
+ recordset::iterator recordset::erase(const iterator& it)
140
+ {
141
+ return m_imple->erase(it);
142
+ }
143
+
144
+ void recordset::removeField(int index)
145
+ {
146
+ m_imple->removeField(index);
147
+ }
148
+
149
+ recordset& recordset::matchBy(recordsetQuery& rq)
150
+ {
151
+ m_imple->matchBy(rq);
152
+ return *this;
153
+ }
154
+
155
+ recordset& recordset::groupBy(groupQuery& gq)
156
+ {
157
+ m_imple->groupBy(gq);
158
+ return *this;
159
+ }
160
+
161
+ recordset& recordset::orderBy(const _TCHAR* name1, const _TCHAR* name2,
162
+ const _TCHAR* name3, const _TCHAR* name4,
163
+ const _TCHAR* name5, const _TCHAR* name6,
164
+ const _TCHAR* name7, const _TCHAR* name8)
165
+ {
166
+ m_imple->orderBy(name1, name2, name3, name4, name5, name6, name7, name8);
167
+ return *this;
168
+ }
169
+
170
+ recordset& recordset::orderBy(const sortFields& orders)
171
+ {
172
+ m_imple->orderBy(orders);
173
+ return *this;
174
+ }
175
+
176
+ recordset& recordset::reverse()
177
+ {
178
+ m_imple->reverse();
179
+ return *this;
180
+ }
181
+
182
+ void recordset::appendField(const _TCHAR* name, int type, short len)
183
+ {
184
+ m_imple->appendField(name, type, len);
185
+ }
186
+
187
+ recordset& recordset::operator+=(const recordset& r)
188
+ {
189
+ m_imple->operator+=(*r.m_imple);
190
+ return *this;
191
+ }
192
+
193
+ recordset* recordset::create()
194
+ {
195
+ return new recordset();
196
+ }
197
+
198
+ #ifdef _DEBUG
199
+ void recordset::dump()
200
+ {
201
+ m_imple->dump();
202
+ }
203
+ #endif
204
+
205
+ } // namespace client
206
+ } // namespace tdap
207
+ } // namespace protocol
208
+ } // namespace db
209
+ } // namespace bzs