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
@@ -13,7 +13,7 @@ And O/R mapping to the user class.
13
13
  This program use the filter operation on server side.
14
14
 
15
15
  Please execute "create database" , "change schema" and "insert records" example
16
- before execute this example.
16
+ before execute this example.
17
17
 
18
18
  */
19
19
 
@@ -31,7 +31,6 @@ public:
31
31
  std::string name;
32
32
  int group;
33
33
  std::string tel;
34
-
35
34
  };
36
35
 
37
36
  typedef boost::shared_ptr<user> user_ptr;
@@ -39,27 +38,27 @@ typedef boost::shared_ptr<user> user_ptr;
39
38
  /** dump user to screen */
40
39
  void dumpUser(const user_ptr& user)
41
40
  {
42
- std::cout << " id " << user->id << std::endl;
43
- std::cout << " name " << user->name << std::endl;
41
+ std::cout << " id " << user->id << std::endl;
42
+ std::cout << " name " << user->name << std::endl;
44
43
  std::cout << " group " << user->group << std::endl;
45
- std::cout << " tel " << user->tel << std::endl << std::endl;
46
-
44
+ std::cout << " tel " << user->tel << std::endl << std::endl;
47
45
  }
48
46
 
49
47
  /** OR mapping functional object*/
50
48
  class userMappper
51
49
  {
52
50
  std::vector<user_ptr>& m_users;
51
+
53
52
  public:
54
- userMappper(std::vector<user_ptr>& users):m_users(users){}
53
+ userMappper(std::vector<user_ptr>& users) : m_users(users) {}
55
54
  void operator()(const fields& fds)
56
55
  {
57
- user_ptr u(new user());
58
- u->id = fds[fieldnum_id].i();
59
- u->name = fds[fieldnum_name].a_str(); //get by ansi string
60
- u->group = fds[fieldnum_group].i();
61
- u->tel = fds[fieldnum_tel].a_str(); //get by ansi string
62
- m_users.push_back(u);
56
+ user_ptr u(new user());
57
+ u->id = fds[fieldnum_id].i();
58
+ u->name = fds[fieldnum_name].a_str(); // get by ansi string
59
+ u->group = fds[fieldnum_group].i();
60
+ u->tel = fds[fieldnum_tel].a_str(); // get by ansi string
61
+ m_users.push_back(u);
63
62
  }
64
63
  };
65
64
 
@@ -67,41 +66,44 @@ void readUsers(table_ptr tb, std::vector<user_ptr>& users)
67
66
  {
68
67
 
69
68
  // Get filterIterator. This filter is execute on server side.
70
- filterParams fp( _T("group = 3"), 1 , 0);
71
- findIterator itsf = find(tb, keynum_group, fp, 3);
69
+ query q;
70
+ q.where(_T("group"), _T("="), _T("3")).reject(0);
71
+
72
+ findIterator itsf = find(tb, keynum_group, q, 3);
72
73
 
73
74
  // O/R mapping functional object
74
75
  userMappper ormap(users);
75
76
 
76
- //loop each group=1 records
77
+ // loop each group=1 records
77
78
  for_each(itsf, ormap);
78
-
79
79
  }
80
80
 
81
81
  #pragma argsused
82
82
  int _tmain(int argc, _TCHAR* argv[])
83
83
  {
84
- database_ptr db = createDatadaseObject();
84
+ database_ptr db = createDatabaseObject();
85
85
  try
86
86
  {
87
- connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
87
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"),
88
+ _T("test"));
88
89
  openDatabase(db, param);
89
90
 
90
91
  table_ptr tb = openTable(db, _T("user"));
91
92
  std::vector<user_ptr> users;
92
93
  readUsers(tb, users);
93
94
 
94
- std::cout << "Read records success.\nRecord count = " << users.size() << std::endl;
95
+ std::cout << "Read records success.\nRecord count = " << users.size()
96
+ << std::endl;
95
97
 
96
- //dump users to screen.
98
+ // dump users to screen.
97
99
  std::for_each(users.begin(), users.end(), dumpUser);
98
100
 
99
101
  return 0;
100
102
  }
101
103
 
102
- catch(bzs::rtl::exception& e)
104
+ catch (bzs::rtl::exception& e)
103
105
  {
104
- std::tcout << *bzs::rtl::getMsg(e) << std::endl;
106
+ std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
105
107
  }
106
108
  return 1;
107
109
  }
@@ -3,11 +3,9 @@
3
3
  #include <bzs/db/protocol/tdap/client/table.h>
4
4
  #include <bzs/db/protocol/tdap/client/dbDef.h>
5
5
 
6
-
7
6
  using namespace bzs::db::protocol::tdap::client;
8
7
  using namespace bzs::db::protocol::tdap;
9
8
 
10
-
11
9
  /**
12
10
  @brief read and update example
13
11
 
@@ -15,11 +13,10 @@ This program updates some records of a "user" table.
15
13
  Change group of user in group 1 to 3
16
14
 
17
15
  Please execute "create database" , "change schema" and "insert records" example
18
- before execute this example.
16
+ before execute this example.
19
17
 
20
18
  */
21
19
 
22
-
23
20
  static const short fieldnum_id = 0;
24
21
  static const short fieldnum_name = 1;
25
22
  static const short fieldnum_group = 2;
@@ -28,39 +25,37 @@ static const short fieldnum_tel = 3;
28
25
  static const char_td keynum_group = 1;
29
26
  /** show database operation error
30
27
  */
31
- void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
28
+ void showError(const _TCHAR* caption, const _TCHAR* tableName, short statusCode)
32
29
  {
33
- _TCHAR tmp[1024]={0x00};
30
+ _TCHAR tmp[1024] = { 0x00 };
34
31
  nstable::tdapErr(0x00, statusCode, tableName, tmp);
35
- _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
32
+ _tprintf(_T("[ERROR] %s No.%ld %s\n"), caption, statusCode, tmp);
36
33
  }
37
34
 
38
-
39
35
  bool updateUsers(table* tb)
40
36
  {
41
37
  tb->clearBuffer();
42
- tb->setKeyNum(keynum_group); //use group key
43
- tb->setFV(fieldnum_group, 1);// set group = 1;
38
+ tb->setKeyNum(keynum_group); // use group key
39
+ tb->setFV(fieldnum_group, 1); // set group = 1;
44
40
  tb->seekGreater(true /*orEqual*/);
45
41
  while (tb->stat() == 0)
46
42
  {
47
- //check group value.
43
+ // check group value.
48
44
  if (tb->getFVint(fieldnum_group) != 1)
49
45
  break;
50
46
 
51
- //update group
52
- tb->setFV(fieldnum_group, 3); //change group 1 to 3
53
- tb->update(nstable::changeCurrentNcc); //Important ncc=true !
54
- if (tb->stat()!=0)
55
- showError(_T("update user"), tb->tableDef()->tableName(), tb->stat());
47
+ // update group
48
+ tb->setFV(fieldnum_group, 3); // change group 1 to 3
49
+ tb->update(nstable::changeCurrentNcc); // Important ncc=true !
50
+ if (tb->stat() != 0)
51
+ showError(_T("update user"), tb->tableDef()->tableName(),
52
+ tb->stat());
56
53
  else
57
54
  tb->seekNext();
58
55
  }
59
- return ((tb->stat() == STATUS_EOF)||(tb->stat()== 0));
56
+ return ((tb->stat() == STATUS_EOF) || (tb->stat() == 0));
60
57
  }
61
58
 
62
-
63
-
64
59
  /** Open database
65
60
  */
66
61
  bool openDatabase(database* db, const _TCHAR* uri)
@@ -88,9 +83,9 @@ int _tmain(int argc, _TCHAR* argv[])
88
83
  showError(_T("open user table"), NULL, db->stat());
89
84
  else
90
85
  {
91
- if (updateUsers(tbu))
86
+ if (updateUsers(tbu))
92
87
  _tprintf(_T("Update records success. \n"));
93
- tbu->release();
88
+ tbu->release();
94
89
  }
95
90
  db->close();
96
91
  }
@@ -4,7 +4,6 @@
4
4
  using namespace bzs::db::protocol::tdap::client;
5
5
  using namespace bzs::db::protocol::tdap;
6
6
 
7
-
8
7
  /**
9
8
  @brief read and update records example
10
9
 
@@ -12,18 +11,17 @@ This program updates some records of a "user" table.
12
11
  Change group of user in group 1 to 3
13
12
 
14
13
  Please execute "create database" , "change schema" and "insert records" example
15
- before execute this example.
14
+ before execute this example.
16
15
 
17
16
  */
18
17
 
19
-
20
18
  static const short fieldnum_id = 0;
21
19
  static const short fieldnum_group = 2;
22
20
  static const char_td keynum_group = 1;
23
21
 
24
22
  int isGroupOne(const fields& fds)
25
23
  {
26
- return (fds[fieldnum_group].i() == 1)? filter_validate_value
24
+ return (fds[fieldnum_group].i() == 1) ? filter_validate_value
27
25
  : filter_invalidate_value;
28
26
  }
29
27
 
@@ -41,20 +39,18 @@ void updateUsers(table_ptr tb)
41
39
  // Wrap filtered iterator
42
40
  filterdIndexIterator itf(it, isGroupOne);
43
41
 
44
- //loop each group=1 records and update to 3
42
+ // loop each group=1 records and update to 3
45
43
  for_each(itf, changeGroupTo3);
46
-
47
-
48
44
  }
49
45
 
50
-
51
46
  #pragma argsused
52
47
  int _tmain(int argc, _TCHAR* argv[])
53
48
  {
54
- database_ptr db = createDatadaseObject();
49
+ database_ptr db = createDatabaseObject();
55
50
  try
56
51
  {
57
- connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
52
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"),
53
+ _T("test"));
58
54
  openDatabase(db, param);
59
55
 
60
56
  table_ptr tb = openTable(db, _T("user"));
@@ -63,9 +59,9 @@ int _tmain(int argc, _TCHAR* argv[])
63
59
  return 0;
64
60
  }
65
61
 
66
- catch(bzs::rtl::exception& e)
62
+ catch (bzs::rtl::exception& e)
67
63
  {
68
- std::tcout << *bzs::rtl::getMsg(e) << std::endl;
64
+ std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
69
65
  }
70
66
  return 1;
71
67
  }
@@ -3,11 +3,9 @@
3
3
  #include <bzs/db/protocol/tdap/client/table.h>
4
4
  #include <bzs/db/protocol/tdap/client/dbDef.h>
5
5
 
6
-
7
6
  using namespace bzs::db::protocol::tdap::client;
8
7
  using namespace bzs::db::protocol::tdap;
9
8
 
10
-
11
9
  /**
12
10
  @brief update records in transaction example
13
11
 
@@ -15,11 +13,10 @@ This program updates some records of a "user" table.
15
13
  Change group of user in group 1 to 3
16
14
 
17
15
  Please execute "create database" , "change schema" and "insert records" example
18
- before execute this example.
16
+ before execute this example.
19
17
 
20
18
  */
21
19
 
22
-
23
20
  static const short fieldnum_id = 0;
24
21
  static const short fieldnum_name = 1;
25
22
  static const short fieldnum_group = 2;
@@ -28,39 +25,38 @@ static const short fieldnum_tel = 3;
28
25
  static const char_td keynum_group = 1;
29
26
  /** show database operation error
30
27
  */
31
- void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
28
+ void showError(const _TCHAR* caption, const _TCHAR* tableName, short statusCode)
32
29
  {
33
- _TCHAR tmp[1024]={0x00};
30
+ _TCHAR tmp[1024] = { 0x00 };
34
31
  nstable::tdapErr(0x00, statusCode, tableName, tmp);
35
- _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
32
+ _tprintf(_T("[ERROR] %s No.%ld %s\n"), caption, statusCode, tmp);
36
33
  }
37
34
 
38
-
39
35
  bool updateUsers(table* tb)
40
36
  {
41
37
  tb->clearBuffer();
42
- tb->setKeyNum(keynum_group); //use group key
43
- tb->setFV(fieldnum_group, 1);// set group = 1;
38
+ tb->setKeyNum(keynum_group); // use group key
39
+ tb->setFV(fieldnum_group, 1); // set group = 1;
44
40
  tb->seekGreater(true /*orEqual*/);
45
41
  while (tb->stat() == 0)
46
42
  {
47
- //check group value.
43
+ // check group value.
48
44
  if (tb->getFVint(fieldnum_group) != 1)
49
45
  break;
50
46
 
51
- //update group
52
- tb->setFV(fieldnum_group, 3); //change group 1 to 3
53
- tb->update(nstable::changeCurrentNcc /*ncc=true*/); //Important ncc=true !
54
- if (tb->stat()!=0)
55
- showError(_T("update user"), tb->tableDef()->tableName(), tb->stat());
47
+ // update group
48
+ tb->setFV(fieldnum_group, 3); // change group 1 to 3
49
+ tb->update(
50
+ nstable::changeCurrentNcc /*ncc=true*/); // Important ncc=true !
51
+ if (tb->stat() != 0)
52
+ showError(_T("update user"), tb->tableDef()->tableName(),
53
+ tb->stat());
56
54
  else
57
55
  tb->seekNext();
58
56
  }
59
- return ((tb->stat() == STATUS_EOF)||(tb->stat()== 0));
57
+ return ((tb->stat() == STATUS_EOF) || (tb->stat() == 0));
60
58
  }
61
59
 
62
-
63
-
64
60
  /** Open database
65
61
  */
66
62
  bool openDatabase(database* db, const _TCHAR* uri)
@@ -88,14 +84,15 @@ int _tmain(int argc, _TCHAR* argv[])
88
84
  showError(_T("open user table"), NULL, db->stat());
89
85
  else
90
86
  {
91
- db->beginTrn();
92
- if (updateUsers(tbu))
93
- {
87
+ db->beginTrn();
88
+ if (updateUsers(tbu))
89
+ {
94
90
  db->endTrn();
95
91
  _tprintf(_T("Update records success. \n"));
96
- }else
92
+ }
93
+ else
97
94
  db->abortTrn();
98
- tbu->release();
95
+ tbu->release();
99
96
  }
100
97
  db->close();
101
98
  }
@@ -4,7 +4,6 @@
4
4
  using namespace bzs::db::protocol::tdap::client;
5
5
  using namespace bzs::db::protocol::tdap;
6
6
 
7
-
8
7
  /**
9
8
  @brief update records in transaction example
10
9
 
@@ -12,18 +11,17 @@ This program updates some records of a "user" table.
12
11
  Change group of user in group 1 to 3
13
12
 
14
13
  Please execute "create database" , "change schema" and "insert records" example
15
- before execute this example.
14
+ before execute this example.
16
15
 
17
16
  */
18
17
 
19
-
20
18
  static const short fieldnum_id = 0;
21
19
  static const short fieldnum_group = 2;
22
20
  static const char_td keynum_group = 1;
23
21
 
24
22
  int isGroupOne(const fields& fds)
25
23
  {
26
- return (fds[fieldnum_group].i() == 1)? filter_validate_value
24
+ return (fds[fieldnum_group].i() == 1) ? filter_validate_value
27
25
  : filter_invalidate_value;
28
26
  }
29
27
 
@@ -41,40 +39,39 @@ void updateUsers(table_ptr tb)
41
39
  // Wrap filtered iterator
42
40
  filterdIndexIterator itf(it, isGroupOne);
43
41
 
44
- //loop each group=1 records and update
42
+ // loop each group=1 records and update
45
43
  for_each(itf, changeGroup1To3);
46
-
47
-
48
44
  }
49
45
 
50
-
51
46
  #pragma argsused
52
47
  int _tmain(int argc, _TCHAR* argv[])
53
48
  {
54
- database_ptr db = createDatadaseObject();
49
+ database_ptr db = createDatabaseObject();
55
50
  try
56
51
  {
57
- connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
52
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"),
53
+ _T("test"));
58
54
  openDatabase(db, param);
59
55
 
60
56
  table_ptr tb = openTable(db, _T("user"));
61
- transaction trn(db);
57
+ dbTransaction trn(db);
62
58
 
63
- //start transaction
59
+ // start transaction
64
60
  trn.begin();
65
61
 
66
62
  updateUsers(tb);
67
63
 
68
- //Commit transaction. If an error throwed then abort transaction automaticaly.
64
+ // Commit transaction. If an error throwed then abort transaction
65
+ // automaticaly.
69
66
  trn.end();
70
67
 
71
68
  std::cout << "Update records success." << std::endl;
72
69
  return 0;
73
70
  }
74
71
 
75
- catch(bzs::rtl::exception& e)
72
+ catch (bzs::rtl::exception& e)
76
73
  {
77
- std::tcout << *bzs::rtl::getMsg(e) << std::endl;
74
+ std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
78
75
  }
79
76
  return 1;
80
77
  }
@@ -0,0 +1,177 @@
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
+ #include <iostream>
20
+ #include <locale.h>
21
+ #include <boost/iterator/iterator_facade.hpp>
22
+ #include "memRecordset.h"
23
+ #include "benchmark.h"
24
+
25
+ using namespace bzs::db::protocol::tdap::client;
26
+ using namespace bzs::db::protocol::tdap;
27
+
28
+ static const char_td keynum_group = 1;
29
+ static const char_td primary_key = 0;
30
+
31
+ bool readUsers(databaseManager* mgr, recordset* rows)
32
+ {
33
+ const int key_date = 1;
34
+ const unsigned short disableReject = 0xFFFF;
35
+ const _TCHAR* startDate = L"2012/09/01";
36
+ const _TCHAR* endDate = L"2014/02/28";
37
+ const _TCHAR* prod = L"���i����";
38
+ const _TCHAR* amount = L"���z";
39
+ const _TCHAR* wkid = L"extID";
40
+ const _TCHAR* date = L"���t";
41
+ const _TCHAR* factryEmp = L"factryEmpID";
42
+ const _TCHAR* factryEmpid = _T("�Ј�ID");
43
+ const _TCHAR* empId = L"id";
44
+ const _TCHAR* empName = L"���O";
45
+ activeTable<map_orm> atwm(*mgr, _T("��Ɩ���"));
46
+ activeTable<map_orm> atwh(*mgr, _T("��ƃw�b�_�["));
47
+ activeTable<map_orm> atemp(*mgr, _T("�Ј�"));
48
+
49
+ recordset& rowset = *rows;
50
+ tdc:
51
+ query q;
52
+ DWORD t = timeGetTime();
53
+ for (int j = 0; j < 1; ++j)
54
+ {
55
+ rowset.clear();
56
+ // rowset.reserve(4000);
57
+
58
+ // startDate����endDate�܂ł�wkid���L���ȍ�Ɩ��דǂݎ��
59
+
60
+ q.reset()
61
+ .select(prod, amount, wkid)
62
+ .where(date, L"<=", endDate)
63
+ .and_(wkid, L">", 0)
64
+ .reject(disableReject);
65
+ atwm.index(key_date).keyValue(startDate).read(rowset, q);
66
+
67
+ // t = timeGetTime() - t;
68
+ // std::tcout << _T("work record reading time = ") << t << _T("\n");
69
+
70
+ // wkid�����ƃw�b�_�[����ݎЈ��ԍ���ǂݎ��
71
+ atwh.index(0).alias(factryEmp, factryEmpid).join(
72
+ rowset, q.reset().select(factryEmpid), wkid);
73
+
74
+ //���ʃZ�b�g��prod �� factryEmp�ŃO���[�s���O
75
+ tdc::groupQuery gq;
76
+ gq.keyField(prod, factryEmpid).resultField(amount);
77
+ rowset.groupBy(gq, sum<>());
78
+
79
+ // rowset.groupBy(gq, avg<>());
80
+ // factryEmp���Ј��e�[�u�������empName��Join����
81
+ atemp.alias(empName, _T("�Ј���"));
82
+ atemp.index(0).join(rowset, q.reset().select(_T("�Ј���") /*empName*/),
83
+ factryEmpid);
84
+ rowset.orderBy(amount, factryEmpid);
85
+ }
86
+ std::tcout << _T("data count = ") << rowset.size() << _T("\n");
87
+
88
+ return true;
89
+ }
90
+ void wirteRecord(databaseManager* mgr)
91
+ {
92
+ activeTable<map_orm> atemp(*mgr, _T("�Ј�"));
93
+
94
+ tdc::writableRecord& rec = atemp.index(0).getWritableRecord();
95
+
96
+ rec[_T("id")] = 1200;
97
+ rec[_T("���O")] = _T("���");
98
+ if (!rec.read())
99
+ rec.insert();
100
+
101
+ rec.clear();
102
+ rec[_T("id")] = 1201;
103
+ rec[_T("���O")] = _T("����");
104
+ if (!rec.read())
105
+ rec.insert();
106
+
107
+ // update changed filed only
108
+ rec.clear();
109
+ rec[_T("id")] = 1201;
110
+ rec[_T("parent")] = 1240;
111
+ rec.update();
112
+
113
+ rec.del();
114
+ rec[_T("id")] = 1200;
115
+ rec.del();
116
+ }
117
+
118
+ void delUser(databaseManager* mgr)
119
+ {
120
+ activeTable<map_orm> atemp(*mgr, _T("�Ј�"));
121
+
122
+ // update�ł͕ύX�����t�B�[���h�����ɂ�����
123
+ //�ύX�t�B�[���h���킩��fields���K�v
124
+ //�ύX�t�B�[���h������
125
+ tdc::memoryRecord& rec = atemp.getWritableRecord();
126
+ rec[_T("id")] = 1200;
127
+ atemp.del(rec);
128
+ }
129
+
130
+ void showConsole(recordset& rowset)
131
+ {
132
+
133
+ const tdc::fielddefs& fields = *rowset.fieldDefs();
134
+ for (int j = 0; j < (int)fields.size(); ++j)
135
+ std::tcout << fields[j].name() << _T("\t");
136
+ std::tcout << _T("\n");
137
+
138
+ for (int i = 0; i < (int)rowset.size(); ++i)
139
+ {
140
+ row& m = *rowset[i];
141
+ for (int j = 0; j < (int)m.size(); ++j)
142
+ {
143
+ std::tcout << m[(size_t)j].c_str() << _T("\t");
144
+ if (j == (int)m.size() - 1)
145
+ std::tcout << _T("\n");
146
+ }
147
+ }
148
+ }
149
+
150
+ #pragma argsused
151
+ int _tmain(int argc, _TCHAR* argv[])
152
+ {
153
+ std::locale::global(std::locale("japanese"));
154
+ database_ptr db = createDatabaseObject();
155
+ try
156
+ {
157
+ connectParams param(_T("tdap"), _T("localhost"), _T("mri"),
158
+ _T("dj32.bdf"));
159
+ openDatabase(db, param);
160
+ databaseManager mgr(db);
161
+
162
+ recordset rowset;
163
+
164
+ bzs::rtl::benchmark bm;
165
+ bm.report(boost::bind(readUsers, &mgr, &rowset), "exec time ");
166
+ showConsole(rowset);
167
+ wirteRecord(&mgr);
168
+ return 0;
169
+ }
170
+
171
+ catch (bzs::rtl::exception& e)
172
+ {
173
+ std::tcout << *bzs::rtl::getMsg(e) << std::endl;
174
+ }
175
+
176
+ return 1;
177
+ }