transactd 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +46 -67
  3. data/BUILD_WIN-JA +106 -63
  4. data/CMakeLists.txt +40 -15
  5. data/README +219 -75
  6. data/README-JA +207 -76
  7. data/README_ORMSRCGEN +118 -0
  8. data/README_ORMSRCGEN-JA +115 -0
  9. data/bin/common/tdclc_32_2_0.dll +0 -0
  10. data/bin/common/tdclc_64_2_0.dll +0 -0
  11. data/build/common/check_for_link_iconv.cmake +18 -14
  12. data/build/common/create_symlink.cmake.in +25 -0
  13. data/build/common/get_boost_libs.cmake +23 -23
  14. data/build/common/options.cmake +0 -66
  15. data/build/common/smart_install.cmake +3 -3
  16. data/build/common/transactd.rc.in +15 -5
  17. data/build/common/transactd_cl_common.cmake +37 -18
  18. data/build/common/transactd_cl_output.cmake +55 -13
  19. data/build/common/transactd_common.cmake +108 -31
  20. data/build/swig/php/generate.cmake.in +15 -17
  21. data/build/swig/php/generate.cmd.in +15 -9
  22. data/build/swig/php/php.swg +124 -82
  23. data/build/swig/php/transactd.no_yield.php +4494 -0
  24. data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
  25. data/build/swig/php/transactd.no_yield.php.patch +685 -0
  26. data/build/swig/php/transactd.yield.php +4461 -0
  27. data/build/swig/php/transactd.yield.php.git.patch +652 -0
  28. data/build/swig/php/transactd.yield.php.patch +652 -0
  29. data/build/swig/referencecounter.h +79 -0
  30. data/build/swig/ruby/ruby.swg +226 -76
  31. data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
  32. data/build/swig/ruby/without_gvl.swg +87 -0
  33. data/build/swig/tdcl.i +659 -170
  34. data/build/swig/validatablepointer.h +91 -0
  35. data/build/tdclc/CMakeLists.txt +49 -34
  36. data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
  37. data/build/tdclc/tdclc.rc +0 -0
  38. data/build/tdclcpp/CMakeLists.txt +84 -20
  39. data/build/tdclcpp/tdclcpp.rc +0 -0
  40. data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
  41. data/build/tdclrb/CMakeLists.txt +84 -66
  42. data/build/tdclrb/bldgem/extconf.rb +28 -3
  43. data/build/tdclrb/gem/helper.rb +11 -1
  44. data/build/tdclrb/gem_output.cmake +20 -16
  45. data/index_ja.html +15 -0
  46. data/source/bzs/db/IBlobBuffer.h +15 -17
  47. data/source/bzs/db/blobBuffer.h +186 -140
  48. data/source/bzs/db/blobStructs.h +37 -37
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
  50. data/source/bzs/db/engine/mysql/bookmark.h +150 -147
  51. data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
  52. data/source/bzs/db/engine/mysql/database.h +608 -370
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
  54. data/source/bzs/db/engine/mysql/dbManager.h +115 -104
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
  56. data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
  63. data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
  64. data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
  68. data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
  69. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
  70. data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
  71. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
  72. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
  73. data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
  74. data/source/bzs/db/protocol/tdap/client/client.h +361 -320
  75. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
  76. data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
  77. data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
  78. data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
  79. data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
  80. data/source/bzs/db/protocol/tdap/client/database.h +141 -118
  81. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
  82. data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
  83. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
  84. data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
  85. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
  86. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
  87. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
  88. data/source/bzs/db/protocol/tdap/client/export.h +35 -0
  89. data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
  90. data/source/bzs/db/protocol/tdap/client/field.h +393 -0
  91. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
  92. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
  93. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
  94. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
  95. data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
  96. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
  97. data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
  98. data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
  99. data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
  100. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
  101. data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
  102. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
  103. data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
  104. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
  105. data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
  106. data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
  107. data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
  108. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
  109. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
  110. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
  111. data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
  112. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
  113. data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
  114. data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
  115. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
  116. data/source/bzs/db/protocol/tdap/client/request.h +227 -170
  117. data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
  118. data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
  119. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
  120. data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
  121. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
  122. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
  123. data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
  124. data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
  125. data/source/bzs/db/protocol/tdap/client/table.h +413 -87
  126. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
  127. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
  128. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
  129. data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
  130. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
  131. data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
  132. data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
  133. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
  134. data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
  135. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
  136. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
  137. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
  138. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
  139. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
  140. data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
  141. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
  142. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
  143. data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
  144. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
  145. data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
  146. data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
  147. data/source/bzs/db/transactd/appBuilderImple.h +21 -20
  148. data/source/bzs/db/transactd/appModule.cpp +350 -98
  149. data/source/bzs/db/transactd/appModule.h +31 -37
  150. data/source/bzs/db/transactd/connManager.cpp +138 -135
  151. data/source/bzs/db/transactd/connManager.h +28 -21
  152. data/source/bzs/db/transactd/connectionRecord.h +39 -39
  153. data/source/bzs/db/transactd/transactd.cpp +217 -203
  154. data/source/bzs/env/boost_bcb_link.h +131 -0
  155. data/source/bzs/env/compiler.h +136 -79
  156. data/source/bzs/env/crosscompile.cpp +57 -57
  157. data/source/bzs/env/crosscompile.h +130 -115
  158. data/source/bzs/env/fileopen.h +7 -8
  159. data/source/bzs/env/mbcswchrLinux.cpp +4 -9
  160. data/source/bzs/env/mbcswchrLinux.h +37 -34
  161. data/source/bzs/env/tcharMinGW.h +59 -0
  162. data/source/bzs/env/tstring.h +90 -95
  163. data/source/bzs/example/changeSchema.cpp +22 -23
  164. data/source/bzs/example/changeSchema_c.cpp +22 -24
  165. data/source/bzs/example/connection_pool_c.cpp +49 -104
  166. data/source/bzs/example/createDatabase.cpp +40 -47
  167. data/source/bzs/example/createDatabase_c.cpp +38 -43
  168. data/source/bzs/example/deleteRecords.cpp +10 -15
  169. data/source/bzs/example/deleteRecords_c.cpp +10 -14
  170. data/source/bzs/example/dropDatabase.cpp +3 -9
  171. data/source/bzs/example/dropDatabase_c.cpp +5 -6
  172. data/source/bzs/example/insertRecords.cpp +37 -29
  173. data/source/bzs/example/insertRecords_c.cpp +19 -25
  174. data/source/bzs/example/ormap_c.cpp +621 -0
  175. data/source/bzs/example/queryData.cpp +371 -0
  176. data/source/bzs/example/queryData.h +16 -0
  177. data/source/bzs/example/query_c.cpp +109 -0
  178. data/source/bzs/example/readRecords.cpp +27 -27
  179. data/source/bzs/example/readRecords_c.cpp +25 -23
  180. data/source/bzs/example/updateRecords.cpp +16 -21
  181. data/source/bzs/example/updateRecords_c.cpp +8 -12
  182. data/source/bzs/example/update_with_transaction.cpp +21 -24
  183. data/source/bzs/example/update_with_transaction_c.cpp +12 -15
  184. data/source/bzs/example/useORMRecord.cpp +177 -0
  185. data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
  186. data/source/bzs/netsvc/client/tcpClient.h +541 -489
  187. data/source/bzs/netsvc/server/IAppModule.h +119 -32
  188. data/source/bzs/netsvc/server/iserver.h +21 -23
  189. data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
  190. data/source/bzs/netsvc/server/serverCpt.h +41 -43
  191. data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
  192. data/source/bzs/netsvc/server/serverPipe.h +44 -45
  193. data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
  194. data/source/bzs/netsvc/server/serverTpool.h +38 -43
  195. data/source/bzs/rtl/benchmark.cpp +91 -31
  196. data/source/bzs/rtl/benchmark.h +76 -22
  197. data/source/bzs/rtl/datetime.cpp +231 -233
  198. data/source/bzs/rtl/datetime.h +16 -16
  199. data/source/bzs/rtl/debuglog.cpp +48 -51
  200. data/source/bzs/rtl/debuglog.h +55 -44
  201. data/source/bzs/rtl/exception.h +55 -48
  202. data/source/bzs/rtl/stl_uty.cpp +27 -28
  203. data/source/bzs/rtl/stl_uty.h +28 -29
  204. data/source/bzs/rtl/stringBuffers.cpp +8 -6
  205. data/source/bzs/rtl/stringBuffers.h +16 -9
  206. data/source/bzs/rtl/strtrim.cpp +90 -91
  207. data/source/bzs/rtl/strtrim.h +14 -16
  208. data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
  209. data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
  210. data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
  211. data/source/bzs/test/tdclphp/bench.php +357 -0
  212. data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
  213. data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
  214. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
  215. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
  216. data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
  217. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
  218. data/source/bzs/test/tdclrb/prepare.rb +15 -12
  219. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
  220. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
  221. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
  222. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
  223. data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
  224. data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
  225. data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
  226. data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
  227. data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
  228. data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
  229. data/source/bzs/test/transactdBench/workerBase.h +88 -0
  230. data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
  231. data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
  232. data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
  233. data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
  234. data/source/global/ormsrcgen/confParam.h +80 -0
  235. data/source/global/ormsrcgen/fieldName.cpp +77 -0
  236. data/source/global/ormsrcgen/fieldName.h +43 -0
  237. data/source/global/ormsrcgen/main.cpp +196 -0
  238. data/source/global/ormsrcgen/srcgen.cpp +763 -0
  239. data/source/global/ormsrcgen/srcgen.h +72 -0
  240. data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
  241. data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
  242. data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
  243. data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
  244. data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
  245. data/source/global/ormsrcgen/template/template.cnf +38 -0
  246. data/source/global/querystmts/querystmts.cpp +237 -0
  247. data/source/global/tdclatl/ConnectParams.cpp +77 -0
  248. data/source/global/tdclatl/ConnectParams.h +70 -0
  249. data/source/global/tdclatl/Database.cpp +132 -128
  250. data/source/global/tdclatl/Database.h +60 -49
  251. data/source/global/tdclatl/DbDef.cpp +68 -64
  252. data/source/global/tdclatl/DbDef.h +36 -36
  253. data/source/global/tdclatl/Field.cpp +12 -17
  254. data/source/global/tdclatl/Field.h +15 -12
  255. data/source/global/tdclatl/FieldDef.cpp +75 -36
  256. data/source/global/tdclatl/FieldDef.h +38 -19
  257. data/source/global/tdclatl/FieldDefs.cpp +74 -0
  258. data/source/global/tdclatl/FieldDefs.h +56 -0
  259. data/source/global/tdclatl/FieldNames.cpp +99 -0
  260. data/source/global/tdclatl/FieldNames.h +66 -0
  261. data/source/global/tdclatl/Flags.cpp +75 -37
  262. data/source/global/tdclatl/Flags.h +13 -12
  263. data/source/global/tdclatl/GroupQuery.cpp +119 -0
  264. data/source/global/tdclatl/GroupQuery.h +65 -0
  265. data/source/global/tdclatl/KeyDef.cpp +15 -14
  266. data/source/global/tdclatl/KeyDef.h +20 -17
  267. data/source/global/tdclatl/KeySegment.cpp +13 -12
  268. data/source/global/tdclatl/PooledDbManager.cpp +223 -0
  269. data/source/global/tdclatl/PooledDbManager.h +76 -0
  270. data/source/global/tdclatl/QueryBase.cpp +206 -127
  271. data/source/global/tdclatl/QueryBase.h +55 -59
  272. data/source/global/tdclatl/Record.cpp +214 -0
  273. data/source/global/tdclatl/Record.h +96 -0
  274. data/source/global/tdclatl/Recordset.cpp +278 -0
  275. data/source/global/tdclatl/Recordset.h +83 -0
  276. data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
  277. data/source/global/tdclatl/RecordsetQuery.h +126 -0
  278. data/source/global/tdclatl/Table.cpp +57 -60
  279. data/source/global/tdclatl/Table.h +32 -29
  280. data/source/global/tdclatl/TableDef.cpp +63 -62
  281. data/source/global/tdclatl/TableDef.h +20 -22
  282. data/source/global/tdclatl/TdVersion.cpp +3 -3
  283. data/source/global/tdclatl/TdVersion.h +15 -11
  284. data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
  285. data/source/global/tdclatl/activeTable.cpp +355 -0
  286. data/source/global/tdclatl/activeTable.h +79 -0
  287. data/source/global/tdclatl/dllmain.cpp +4 -3
  288. data/source/global/tdclatl/dllmain.h +7 -6
  289. data/source/global/tdclatl/keySegment.h +22 -18
  290. data/source/global/tdclatl/resource.h +0 -0
  291. data/source/global/tdclatl/stdafx.h +6 -4
  292. data/source/global/tdclatl/targetver.h +0 -1
  293. data/source/global/tdclatl/tdclatl.cpp +10 -5
  294. data/source/global/tdclatl/tdclatl.idl +530 -14
  295. data/source/linux/charsetConvert.h +78 -79
  296. data/source/linux/linuxTypes.h +9 -12
  297. data/source/linux/tchar.h +168 -166
  298. data/transactd.gemspec +24 -16
  299. metadata +98 -12
  300. data/bin/common/tdclc_32_1_2.dll +0 -0
  301. data/bin/common/tdclc_64_1_2.dll +0 -0
  302. data/build/tdclc/tdclc_32.cbproj +0 -173
  303. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
  304. data/build/tdclrb/GEM_VERSION +0 -3
  305. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
  306. data/source/bzs/example/useORM.cpp +0 -585
@@ -14,8 +14,8 @@
14
14
  GNU General Public License for more details.
15
15
 
16
16
  You should have received a copy of the GNU General Public License
17
- along with this program; if not, write to the Free Software
18
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
19
  02111-1307, USA.
20
20
  =================================================================*/
21
21
 
@@ -27,10 +27,10 @@
27
27
  extern int g_tableNmaeLower;
28
28
 
29
29
  namespace bzs
30
- {
30
+ {
31
31
  namespace db
32
32
  {
33
- class blobBuffer;
33
+ class blobBuffer;
34
34
  namespace protocol
35
35
  {
36
36
  namespace tdap
@@ -40,103 +40,109 @@ namespace mysql
40
40
 
41
41
  class ReadRecordsHandler;
42
42
  struct extRequest;
43
+ struct extRequestSeeks;
43
44
 
44
- #define FOR_SQL true
45
+ #define FOR_SQL true
45
46
 
46
- std::string getDatabaseName(const request& req, bool forSql=false);
47
- std::string getTableName(const request& req, bool forSql=false);
47
+ std::string getDatabaseName(const request& req, bool forSql = false);
48
+ std::string getTableName(const request& req, bool forSql = false);
48
49
  short_td errorCode(int ha_error);
49
50
  bool isMetaDb(const request& req);
50
51
 
51
52
  class dbExecuter : public engine::mysql::dbManager
52
53
  {
53
- ReadRecordsHandler* m_readHandler;
54
- blobBuffer* m_blobBuffer;
55
-
56
- void connect(request& req);
57
- void releaseDatabase(request& req, int op);
58
- std::string makeSQLcreateTable(const request& req);
59
- inline void doCreateTable(request& req);
60
- inline void doOpenTable(request& req);
61
- inline void doSeekKey(request& req, int op);
62
- inline void doMoveFirst(request& req);
63
- inline void doMoveKey(request& req, int op);
64
- inline int doReadMultiWithSeek(request& req, int op, char* resultBuffer, size_t& size, netsvc::server::buffers* optionalData);
65
- inline int doReadMulti(request& req, int op, char* resultBuffer, size_t& size, netsvc::server::buffers* optionalData);
66
- inline void doStepRead(request& req, int op);
67
-
68
-
69
- inline void doInsert(request& req);
70
- inline void doUpdate(request& req);
71
- inline void doUpdateKey(request& req);
72
- inline void doDelete(request& req);
73
- inline void doDeleteKey(request& req);
74
- inline void doInsertBulk(request& req);
75
- inline void doStat(request& req);
76
- inline short seekEach(extRequest* ereq);
54
+ ReadRecordsHandler* m_readHandler;
55
+ blobBuffer* m_blobBuffer;
56
+
57
+ void connect(request& req);
58
+ void releaseDatabase(request& req, int op);
59
+ std::string makeSQLcreateTable(const request& req);
60
+ inline void doCreateTable(request& req);
61
+ inline void doOpenTable(request& req);
62
+ inline void doSeekKey(request& req, int op);
63
+ inline void doMoveFirst(request& req);
64
+ inline void doMoveKey(request& req, int op);
65
+ inline int doReadMultiWithSeek(request& req, int op,
66
+ netsvc::server::netWriter* nw);
67
+ inline int doReadMulti(request& req, int op, netsvc::server::netWriter* nw);
68
+ inline void doStepRead(request& req, int op);
69
+
70
+ inline void doInsert(request& req);
71
+ inline void doUpdate(request& req);
72
+ inline void doUpdateKey(request& req);
73
+ inline void doDelete(request& req);
74
+ inline void doDeleteKey(request& req);
75
+ inline void doInsertBulk(request& req);
76
+ inline void doStat(request& req);
77
+ inline short seekEach(extRequestSeeks* ereq, bool noBookMark);
78
+
77
79
  public:
78
- dbExecuter();
79
- ~dbExecuter();
80
- int commandExec(request& req, char* result, size_t& size, netsvc::server::buffers* optionalData);
81
- int errorCode(int ha_error);
82
- short_td errorCodeSht(int ha_error){return (short_td)errorCode(ha_error);};
83
-
80
+ dbExecuter();
81
+ ~dbExecuter();
82
+ int commandExec(request& req, netsvc::server::netWriter* nw);
83
+ int errorCode(int ha_error);
84
+ short_td errorCodeSht(int ha_error)
85
+ {
86
+ return (short_td)errorCode(ha_error);
87
+ };
84
88
  };
85
89
 
86
90
  /** Command dispatcher for connectionManager
87
91
  */
88
92
  class connMgrExecuter
89
93
  {
90
- request& m_req;
91
- __int64 m_modHandle;
94
+ request& m_req;
95
+ __int64 m_modHandle;
96
+
92
97
  public:
93
- connMgrExecuter(request& req, unsigned __int64 parent);
94
- int read(char* buf, size_t& size);
95
- int disconnectOne(char* buf, size_t& size);
96
- int disconnectAll(char* buf, size_t& size);
97
- int commandExec(char* buf, size_t& size);
98
+ connMgrExecuter(request& req, unsigned __int64 parent);
99
+ int read(char* buf, size_t& size);
100
+ int disconnectOne(char* buf, size_t& size);
101
+ int disconnectAll(char* buf, size_t& size);
102
+ int commandExec(netsvc::server::netWriter* nw);
98
103
  };
99
104
 
100
- class commandExecuter : public ICommandExecuter, public engine::mysql::igetDatabases
105
+ class commandExecuter : public ICommandExecuter,
106
+ public engine::mysql::igetDatabases
101
107
  {
102
- mutable request m_req;
103
- boost::shared_ptr<dbExecuter> m_dbExec;
108
+ mutable request m_req;
109
+ boost::shared_ptr<dbExecuter> m_dbExec;
110
+
111
+ int readStatistics(char* buf, size_t& size);
112
+ int cmdStatistics(char* buf, size_t& size);
113
+ unsigned __int64 m_modHandle;
104
114
 
105
- int readStatistics(char* buf, size_t& size);
106
- int cmdStatistics(char* buf, size_t& size);
107
- unsigned __int64 m_modHandle;
108
115
  public:
109
- commandExecuter(__int64 parent);
110
- ~commandExecuter();
111
- size_t perseRequestEnd(const char* p, size_t size, bool& comp)const;
112
-
113
- size_t getAcceptMessage(char* message, size_t size)
114
- {
115
- strcpy_s(message, size, "200 OK\n");
116
- return strlen(message);
117
- }
118
-
119
- bool parse(const char* p, size_t size);
120
-
121
- int execute(char* resultBuffer, size_t& size, netsvc::server::buffers* optionalData)
122
- {
123
- if (m_req.op == TD_STASTISTICS)
124
- return connMgrExecuter(m_req, m_modHandle).commandExec(resultBuffer, size);
125
- return m_dbExec->commandExec(m_req, resultBuffer, size, optionalData);
126
- }
127
-
128
- bool isShutDown(){return m_dbExec->isShutDown();}
129
-
130
- void cleanup(){};
131
-
132
- const engine::mysql::databases& dbs() const{return m_dbExec->dbs();};
133
- };
116
+ commandExecuter(__int64 parent);
117
+ ~commandExecuter();
118
+ size_t perseRequestEnd(const char* p, size_t size, bool& comp) const;
119
+
120
+ size_t getAcceptMessage(char* message, size_t size)
121
+ {
122
+ strcpy_s(message, size, "200 OK\n");
123
+ return strlen(message);
124
+ }
134
125
 
135
- }//namespace mysql
136
- }//namespace tdap
137
- }//namespace protocol
138
- }//namespace db
139
- }//namespace bzs
126
+ bool parse(const char* p, size_t size);
127
+
128
+ int execute(netsvc::server::netWriter* nw)
129
+ {
130
+ if (m_req.op == TD_STASTISTICS)
131
+ return connMgrExecuter(m_req, m_modHandle).commandExec(nw);
132
+ return m_dbExec->commandExec(m_req, nw);
133
+ }
134
+
135
+ bool isShutDown() { return m_dbExec->isShutDown(); }
136
+
137
+ void cleanup(){};
138
+
139
+ const engine::mysql::databases& dbs() const { return m_dbExec->dbs(); };
140
+ };
140
141
 
141
- #endif //BZS_DB_PROTOCOL_TDAP_MYSQL_TDAPCOMMANDEXECUTER_H
142
+ } // namespace mysql
143
+ } // namespace tdap
144
+ } // namespace protocol
145
+ } // namespace db
146
+ } // namespace bzs
142
147
 
148
+ #endif // BZS_DB_PROTOCOL_TDAP_MYSQL_TDAPCOMMANDEXECUTER_H
@@ -1,23 +1,23 @@
1
1
  #ifndef BZS_DB_PROTOCOL_TDAP_TDAPREQUSET_H
2
2
  #define BZS_DB_PROTOCOL_TDAP_TDAPREQUSET_H
3
- /*=================================================================
4
- Copyright (C) 2013 BizStation Corp All rights reserved.
3
+ /* =================================================================
4
+ Copyright (C) 2013 BizStation Corp All rights reserved.
5
5
 
6
- This program is free software; you can redistribute it and/or
7
- modify it under the terms of the GNU General Public License
8
- as published by the Free Software Foundation; either version 2
9
- of the License, or (at your option) any later version.
6
+ This program is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU General Public License
8
+ as published by the Free Software Foundation; either version 2
9
+ of the License, or (at your option) any later version.
10
10
 
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU General Public License for more details.
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
15
 
16
- You should have received a copy of the GNU General Public License
17
- along with this program; if not, write to the Free Software
18
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
- 02111-1307, USA.
20
- =================================================================*/
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ 02111-1307, USA.
20
+ ================================================================= */
21
21
 
22
22
  #include <bzs/db/protocol/tdap/tdapcapi.h>
23
23
  #include <bzs/db/blobBuffer.h>
@@ -27,10 +27,16 @@
27
27
  #include <boost/asio/buffer.hpp>
28
28
  #include <bzs/env/compiler.h>
29
29
 
30
-
31
30
  namespace bzs
32
31
  {
33
- namespace netsvc{namespace client{class connection;}}
32
+ namespace netsvc
33
+ {
34
+ namespace client
35
+ {
36
+ class connection;
37
+ }
38
+ }
39
+
34
40
  namespace db
35
41
  {
36
42
  namespace protocol
@@ -38,153 +44,179 @@ namespace protocol
38
44
  namespace tdap
39
45
  {
40
46
 
41
- #define P_MASK_OP 0
42
- #define P_MASK_POSBLK 1
43
- #define P_MASK_DATA 2
44
- #define P_MASK_DATALEN 4
45
- #define P_MASK_KEYBUF 8
46
- #define P_MASK_KEYNUM 16
47
- #define P_MASK_EX_SENDLEN 32 //< The data length which transmits to a client is described at 2 bytes of the data buffer head.
48
- #define P_MASK_BLOBBODY 64
49
-
50
- #define P_MASK_ALL P_MASK_POSBLK|P_MASK_DATA|P_MASK_DATALEN|P_MASK_KEYBUF|P_MASK_KEYNUM
51
- #define P_MASK_KEYONLY P_MASK_KEYBUF|P_MASK_KEYNUM
52
- #define P_MASK_NOKEYBUF P_MASK_POSBLK|P_MASK_DATA|P_MASK_DATALEN|P_MASK_KEYNUM
53
- #define P_MASK_POS_LEN_KEY P_MASK_POSBLK|P_MASK_DATALEN|P_MASK_KEYNUM
54
- #define P_MASK_KEYNAVI P_MASK_POSBLK|P_MASK_DATALEN|P_MASK_KEYBUF|P_MASK_KEYNUM
55
- #define P_MASK_NODATA P_MASK_POSBLK|P_MASK_DATALEN|P_MASK_KEYBUF
56
-
57
- //server side
58
- #define P_MASK_READRESULT P_MASK_POSBLK|P_MASK_DATA|P_MASK_DATALEN
59
- #define P_MASK_STAT P_MASK_DATA|P_MASK_DATALEN
60
- #define P_MASK_READ_EXT P_MASK_STAT|P_MASK_KEYBUF
61
- #define P_MASK_MOVPOS P_MASK_POSBLK|P_MASK_DATA|P_MASK_DATALEN|P_MASK_KEYBUF
62
- #define P_MASK_INS_AUTOINC P_MASK_MOVPOS
47
+ #define P_MASK_OP 0
48
+ #define P_MASK_POSBLK 1
49
+ #define P_MASK_DATA 2
50
+ #define P_MASK_DATALEN 4
51
+ #define P_MASK_KEYBUF 8
52
+ #define P_MASK_KEYNUM 16
53
+ #define P_MASK_EX_SENDLEN \
54
+ 32 //< The data length which transmits to a client is described at 2 bytes
55
+ // of the data buffer head.
56
+ #define P_MASK_BLOBBODY 64
57
+ #define P_MASK_FINALRET 128 // server sent final result
58
+ #define P_MASK_FINALDATALEN 256 // server sent final result
59
+
60
+ #define P_MASK_ALL \
61
+ P_MASK_POSBLK | P_MASK_DATA | P_MASK_DATALEN | P_MASK_KEYBUF | P_MASK_KEYNUM
62
+ #define P_MASK_KEYONLY P_MASK_KEYBUF | P_MASK_KEYNUM
63
+ #define P_MASK_NOKEYBUF \
64
+ P_MASK_POSBLK | P_MASK_DATA | P_MASK_DATALEN | P_MASK_KEYNUM
65
+ #define P_MASK_POS_LEN_KEY P_MASK_POSBLK | P_MASK_DATALEN | P_MASK_KEYNUM
66
+ #define P_MASK_KEYNAVI \
67
+ P_MASK_POSBLK | P_MASK_DATALEN | P_MASK_KEYBUF | P_MASK_KEYNUM
68
+ #define P_MASK_NODATA P_MASK_POSBLK | P_MASK_DATALEN | P_MASK_KEYBUF
69
+
70
+ // server side
71
+ #define P_MASK_READRESULT P_MASK_POSBLK | P_MASK_DATA | P_MASK_DATALEN
72
+ #define P_MASK_STAT P_MASK_DATA | P_MASK_DATALEN
73
+ #define P_MASK_READ_EXT P_MASK_STAT | P_MASK_KEYBUF
74
+ #define P_MASK_MOVPOS \
75
+ P_MASK_POSBLK | P_MASK_DATA | P_MASK_DATALEN | P_MASK_KEYBUF
76
+ #define P_MASK_INS_AUTOINC P_MASK_MOVPOS
63
77
 
64
78
  struct req1
65
79
  {
66
- ushort_td op;
67
- void_td* keybuf;
68
- uchar_td keylen;
69
- short_td keyNum;
70
- void write(std::ostream& ost);
71
- };
80
+ ushort_td op;
81
+ void_td* keybuf;
82
+ uchar_td keylen;
83
+ short_td keyNum;
72
84
 
73
- #pragma option -a-
74
- pragma_pack1
85
+ void write(std::ostream& ost);
86
+ };
75
87
 
88
+ #pragma pack(push, 1)
89
+ pragma_pack1;
76
90
 
77
91
  #define POSBLK_SIZE 4
78
92
  #define CLIENTID_SIZE 2
93
+ #define PARAMMASK_SIZE 2
79
94
 
80
95
  /** tdap version info struct
81
96
  */
97
+
82
98
  struct version
83
99
  {
84
100
  ushort_td majorVersion;
85
101
  ushort_td minorVersion;
86
- uchar_td Type;
102
+ uchar_td Type;
87
103
  };
88
104
 
89
105
  struct posblk
90
106
  {
91
- posblk()
92
- {
93
- memset(this, 0, sizeof(posblk));
94
- }
95
- int handle;
107
+ posblk() { memset(this, 0, sizeof(posblk)); }
96
108
 
109
+ int handle;
97
110
  };
111
+
98
112
  struct clientID
99
113
  {
100
114
 
101
115
  #ifdef __x86_64__
102
- bzs::netsvc::client::connection* con;
103
- char_td reserved[4];
104
- #else
105
- bzs::netsvc::client::connection* con;
106
- char_td reserved[8];
107
- #endif
108
- char_td aid[2];
109
- ushort_td id;
110
- };
116
+ bzs::netsvc::client::connection* con;
117
+
118
+ char_td reserved[4];
119
+ #else // NOT __x86_64__
111
120
 
121
+ bzs::netsvc::client::connection* con;
112
122
 
113
- #pragma option -a
114
- pragma_pop
123
+ char_td reserved[8];
124
+ #endif // NOT __x86_64__
125
+ char_td aid[2];
126
+ ushort_td id;
127
+ };
115
128
 
129
+ #pragma pack(pop)
130
+ pragma_pop;
116
131
 
117
132
  class request
118
133
  {
119
134
  private:
120
- ushort_td varLenBytesPos; /*Ooffset of last var field*/
121
- ushort_td varLenBytes; /*Bytes of last var field length */
135
+ ushort_td varLenBytesPos; /* Ooffset of last var field */
136
+ ushort_td varLenBytes; /* Bytes of last var field length */
122
137
 
123
138
  public:
124
- uchar_td paramMask;
125
- union
126
- {
127
- short_td result;
128
- short_td op;
129
- };
130
-
131
- posblk* pbk;
132
- uint_td* datalen;
133
- void_td* data;
134
- keylen_td keylen;
135
- void_td* keybuf;
136
- char_td keyNum;
137
- uint_td resultLen;
138
-
139
- request()
140
- {
141
- memset(this, 0, sizeof(request));
142
- }
143
-
144
- void reset()
145
- {
146
- paramMask = 0;
147
- result = 0;
148
- varLenBytesPos = 0;
149
- varLenBytes = 0;
150
- resultLen = 0;
151
- }
152
-
153
- const struct bzs::db::blobHeader* blobHeader;
154
-
155
- inline unsigned int serializeBlobBody(blobBuffer* blob, char* buf, unsigned int max_size
156
- , std::vector<boost::asio::const_buffer>* mbuffer)
157
- {
158
- unsigned int totallen = *((unsigned int*)(buf));
159
- unsigned int size = totallen;
160
- char* blobbuf = buf + totallen;
161
- //write blob body
162
- int stat=0;
163
- if (mbuffer)
164
- totallen += blob->makeMultiBuffer(*mbuffer);
165
- else
166
- totallen += blob->writeBuffer((unsigned char*)blobbuf, max_size - totallen - 200, stat);
167
- //write total
168
- memcpy(buf, &totallen, sizeof(unsigned int));
169
-
170
- //write result
171
- if (stat)
172
- {
173
- short_td* retPtr = (short_td*)(buf + 4 + 1);
174
- *retPtr = stat;
175
- }
176
- //return this buffer size;
177
- if (mbuffer)
178
- return size;
179
- return totallen;
180
- }
139
+ ushort_td paramMask;
140
+
141
+ union
142
+ {
143
+ short_td result;
144
+ short_td op;
145
+ };
146
+
147
+ posblk* pbk;
148
+ uint_td* datalen;
149
+ void_td* data;
150
+ keylen_td keylen;
151
+ void_td* keybuf;
152
+ char_td keyNum;
153
+ uint_td resultLen;
154
+ short_td* resltPtr;
155
+
156
+ request()
157
+ : paramMask(0), op(0), pbk(0), datalen(0), data(0), keylen(0),
158
+ keybuf(0), keyNum(0), resultLen(0), resltPtr(0)
159
+ {
160
+ }
161
+
162
+ virtual ~request() {}
163
+
164
+ virtual void clear()
165
+ {
166
+ pbk = 0;
167
+ datalen = 0;
168
+ data = 0;
169
+ keylen = 0;
170
+ keybuf = 0;
171
+ keyNum = 0;
172
+ resltPtr = 0;
173
+ reset();
174
+ }
175
+
176
+ void reset()
177
+ {
178
+ paramMask = 0;
179
+ result = 0;
180
+ varLenBytesPos = 0;
181
+ varLenBytes = 0;
182
+ resultLen = 0;
183
+ }
184
+
185
+ const struct bzs::db::blobHeader* blobHeader;
186
+
187
+ inline unsigned int serializeBlobBody(
188
+ blobBuffer* blob, char* buf, size_t curSize, unsigned int max_size,
189
+ std::vector<boost::asio::const_buffer>* mbuffer, short& stat)
190
+ {
191
+
192
+ char* blobbuf = buf + curSize;
193
+ unsigned int datalen = *((unsigned int*)buf);
194
+ // write blob body
195
+ unsigned int bloblen = 0;
196
+ if (mbuffer)
197
+ bloblen = blob->makeMultiBuffer(*mbuffer);
198
+ else
199
+ bloblen = blob->writeBuffer((unsigned char*)blobbuf,
200
+ max_size - datalen - 200, stat);
201
+
202
+ // write total
203
+
204
+ datalen += bloblen;
205
+ memcpy(buf, &datalen, sizeof(unsigned int));
206
+
207
+ // write result
208
+ if (stat && resltPtr)
209
+ *resltPtr = stat;
210
+ // return this buffer size;
211
+ if (mbuffer)
212
+ return (unsigned int)curSize;
213
+ return (unsigned int)curSize + bloblen;
214
+ }
181
215
  };
182
216
 
217
+ } // namespace tdap
218
+ } // namespace protocol
219
+ } // namespace db
220
+ } // namespace bzs
183
221
 
184
- }//namespace tdap
185
- }//namespace protocol
186
- }//namespace db
187
- }//namespace bzs
188
-
189
-
190
- #endif //BZS_DB_PROTOCOL_TDAP_TDAPREQUSET_H
222
+ #endif // BZS_DB_PROTOCOL_TDAP_TDAPREQUSET_H