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,28 +1,27 @@
1
- /*=================================================================
2
- Copyright (C) 2012 2013 BizStation Corp All rights reserved.
1
+ /* =================================================================
2
+ Copyright (C) 2012 2013 BizStation Corp All rights reserved.
3
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.
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
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.
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
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
- =================================================================*/
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
19
 
20
20
  #include "dbManager.h"
21
21
  #include <bzs/netsvc/server/IAppModule.h> //for result value macro.
22
22
  #include <bzs/rtl/exception.h>
23
23
  #include <time.h>
24
24
 
25
-
26
25
  namespace bzs
27
26
  {
28
27
  namespace db
@@ -32,272 +31,285 @@ namespace engine
32
31
  namespace mysql
33
32
  {
34
33
 
35
- std::string smartDbsReopen::removeName="";
36
-
37
-
38
-
34
+ std::string smartDbsReopen::removeName = "";
39
35
 
40
-
41
- dbManager::dbManager():m_autoHandle(0)
36
+ dbManager::dbManager() : m_autoHandle(0)
42
37
  {
43
38
  }
44
39
 
45
-
46
40
  dbManager::~dbManager()
47
41
  {
48
-
49
42
  }
50
43
 
51
44
  bool dbManager::isShutDown() const
52
45
  {
53
- boost::mutex::scoped_lock lck(m_mutex);
46
+ boost::mutex::scoped_lock lck(m_mutex);
54
47
  #if defined(MARIADB_BASE_VERSION)
55
- killed_state st = NOT_KILLED;
48
+ killed_state st = NOT_KILLED;
56
49
  #else
57
- THD::killed_state st = THD::NOT_KILLED;
50
+ THD::killed_state st = THD::NOT_KILLED;
58
51
  #endif
59
- for (size_t i=0;i<m_dbs.size();i++)
60
- if ((m_dbs[i]!=NULL) && (m_dbs[i]->thd()->killed != st))
61
- return true;
62
- return false;
52
+ for (size_t i = 0; i < m_dbs.size(); i++)
53
+ if ((m_dbs[i] != NULL) && (m_dbs[i]->thd()->killed != st))
54
+ return true;
55
+ return false;
63
56
  }
64
57
 
65
- void dbManager::checkNewHandle(int newHandle)const
58
+ void dbManager::checkNewHandle(int newHandle) const
66
59
  {
67
- for (size_t i=0;i<m_handles.size();i++)
68
- if(m_handles[i].id == newHandle)
69
- THROW_BZS_ERROR_WITH_CODEMSG(1, "Allready exits handle.");
60
+ for (size_t i = 0; i < m_handles.size(); i++)
61
+ if (m_handles[i].id == newHandle)
62
+ THROW_BZS_ERROR_WITH_CODEMSG(1, "Allready exits handle.");
70
63
  }
71
64
 
72
- void dbManager::releaseDatabse(short cid)
65
+ void dbManager::releaseDatabase(short cid)
73
66
  {
74
- boost::mutex::scoped_lock lck(m_mutex);
75
- int index = -1;
76
- for (size_t i=0;i<m_dbs.size();i++)
77
- {
78
- if ((m_dbs[i]!=NULL) && (cid==m_dbs[i]->clientID()))
79
- {
80
- index = (int)i;
81
- break;
82
- }
83
- }
84
- if (index==-1)
85
- return ;
86
- //close tables release thd
87
- m_dbs[index].reset();
88
-
89
- //erase handles
90
- for (int i=(int)m_handles.size()-1;i>=0;i--)
91
- if(m_handles[i].db == index)
92
- m_handles.erase(m_handles.begin()+i);
93
-
67
+ boost::mutex::scoped_lock lck(m_mutex);
68
+ int index = -1;
69
+ for (size_t i = 0; i < m_dbs.size(); i++)
70
+ {
71
+ if ((m_dbs[i] != NULL) && (cid == m_dbs[i]->clientID()))
72
+ {
73
+ index = (int)i;
74
+ break;
75
+ }
76
+ }
77
+ if (index == -1)
78
+ return;
79
+ // close tables release thd
80
+ m_dbs[index].reset();
81
+
82
+ // erase handles
83
+ for (int i = (int)m_handles.size() - 1; i >= 0; i--)
84
+ if (m_handles[i].db == index)
85
+ m_handles.erase(m_handles.begin() + i);
94
86
  }
95
87
 
96
88
  database* dbManager::useDataBase(int id) const
97
89
  {
98
- if (id >= (int)m_dbs.size())
99
- THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid database id.");
100
- if (m_dbs[id]==NULL)
101
- THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid database id.");
102
- m_dbs[id]->use();
103
- return m_dbs[id].get();
90
+ if (id >= (int)m_dbs.size())
91
+ THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid database id.");
92
+ if (m_dbs[id] == NULL)
93
+ THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid database id.");
94
+ m_dbs[id]->use();
95
+ return m_dbs[id].get();
104
96
  }
105
97
 
106
- database* dbManager::createDatabase(const char* dbname, short cid)const
98
+ database* dbManager::createDatabase(const char* dbname, short cid) const
107
99
  {
108
- return new database(dbname, cid);
100
+ return new database(dbname, cid);
109
101
  }
110
102
 
111
- handle* dbManager::getHandle(int handle)const
103
+ handle* dbManager::getHandle(int handle) const
112
104
  {
113
- for (size_t i=0;i<m_handles.size();i++)
114
- {
115
- if(m_handles[i].id == handle)
116
- return &m_handles[i];
117
- }
118
- THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid handle.");
105
+ for (size_t i = 0; i < m_handles.size(); i++)
106
+ {
107
+ if (m_handles[i].id == handle)
108
+ return &m_handles[i];
109
+ }
110
+ THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid handle.");
119
111
  }
120
112
 
121
- int dbManager::getDatabaseID(short cid) const
113
+ int dbManager::getDatabaseID(short cid) const
122
114
  {
123
- for (size_t i=0;i<m_dbs.size();i++)
124
- {
125
- if (m_dbs[i]!=NULL && (m_dbs[i]->clientID()==cid))
126
- return (int)i;
127
- }
128
- return -1;
115
+ for (size_t i = 0; i < m_dbs.size(); i++)
116
+ {
117
+ if (m_dbs[i] != NULL && (m_dbs[i]->clientID() == cid))
118
+ return (int)i;
119
+ }
120
+ return -1;
129
121
  }
130
122
 
131
- database* dbManager::getDatabaseCid(short cid) const
123
+ database* dbManager::getDatabaseCid(short cid) const
132
124
  {
133
- int id = getDatabaseID(cid);
134
- if (id == -1)
135
- THROW_BZS_ERROR_WITH_CODEMSG(1, "Can not create database object.");
136
-
137
- return useDataBase(id);
125
+ int id = getDatabaseID(cid);
126
+ if (id == -1)
127
+ THROW_BZS_ERROR_WITH_CODEMSG(1, "Can not create database object.");
128
+
129
+ return useDataBase(id);
138
130
  }
139
131
 
140
- database* dbManager::getDatabase(const char* dbname, short cid) const
132
+ database* dbManager::getDatabase(const char* dbname, short cid) const
141
133
  {
142
- int id = getDatabaseID(cid);
143
- if (id == -1)
144
- {
145
- boost::shared_ptr<database> db(createDatabase(dbname, cid));
146
- if (db ==NULL)
147
- THROW_BZS_ERROR_WITH_CODEMSG(1, "Can not create database object.");
148
- m_dbs.push_back(db);
149
- id = (int)m_dbs.size()-1;
150
- }
151
- return useDataBase(id);
134
+ int id = getDatabaseID(cid);
135
+ if (id == -1)
136
+ {
137
+ boost::shared_ptr<database> db(createDatabase(dbname, cid));
138
+ if (db == NULL)
139
+ THROW_BZS_ERROR_WITH_CODEMSG(1, "Can not create database object.");
140
+ m_dbs.push_back(db);
141
+ id = (int)m_dbs.size() - 1;
142
+ }
143
+ return useDataBase(id);
152
144
  }
153
145
 
154
- table* dbManager::getTable(int hdl, enum_sql_command cmd)const
146
+ table* dbManager::getTable(int hdl, enum_sql_command cmd) const
155
147
  {
156
- handle* h = getHandle(hdl);
157
- if (h && (h->db < (int)m_dbs.size()))
158
- return useDataBase(h->db)->useTable(h->tb, cmd);
159
-
148
+ handle* h = getHandle(hdl);
149
+ if (h && (h->db < (int)m_dbs.size()))
150
+ return useDataBase(h->db)->useTable(h->tb, cmd);
160
151
 
161
- THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid handle.");
152
+ THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid handle.");
162
153
  }
163
154
 
164
- int dbManager::addHandle(int dbid, int tableid,int assignid)
155
+ int dbManager::addHandle(int dbid, int tableid, int assignid)
165
156
  {
166
- ++m_autoHandle;
167
- if (assignid == -1)
168
- assignid = m_autoHandle;
169
- m_handles.push_back(handle(assignid, (short)dbid, (short)tableid));
170
- return assignid;
157
+ ++m_autoHandle;
158
+ if (assignid == -1)
159
+ assignid = m_autoHandle;
160
+ m_handles.push_back(handle(assignid, (short)dbid, (short)tableid));
161
+ return assignid;
171
162
  }
172
163
 
173
164
  int dbManager::ddl_execSql(THD* thd, const std::string& sql_stmt)
174
165
  {
175
- smartDbsReopen reopen(m_dbs);
176
-
177
- thd->clear_error();
178
- int result = dispatch_command(COM_QUERY, thd,(char*)sql_stmt.c_str() , (uint)sql_stmt.size());
179
- if (!thd->cp_isOk())
180
- result = 1;
181
- if (thd->is_error())
182
- result = errorCode(thd->cp_get_sql_error());
183
- return result;
166
+ smartDbsReopen reopen(m_dbs);
167
+
168
+ thd->clear_error();
169
+ int result = dispatch_command(COM_QUERY, thd, (char*)sql_stmt.c_str(),
170
+ (uint)sql_stmt.size());
171
+ if (!thd->cp_isOk())
172
+ result = 1;
173
+ if (thd->is_error())
174
+ result = errorCode(thd->cp_get_sql_error());
175
+ return result;
184
176
  }
185
177
 
186
- int dbManager::ddl_createDataBase(THD* thd, const std::string& dbname )
178
+ int dbManager::ddl_createDataBase(THD* thd, const std::string& dbname)
187
179
  {
188
- std::string cmd = "create database `" + dbname + "`";
189
- return ddl_execSql(thd, cmd);
190
-
180
+ std::string cmd = "create database `" + dbname + "`";
181
+ return ddl_execSql(thd, cmd);
191
182
  }
192
183
 
193
- int dbManager::ddl_dropDataBase(THD* thd, const std::string& dbname, const std::string& dbSqlname)
184
+ int dbManager::ddl_dropDataBase(THD* thd, const std::string& dbname,
185
+ const std::string& dbSqlname)
194
186
  {
195
- std::string cmd = "drop database `" + dbSqlname + "`";
196
- smartDbsReopen::removeName = dbname;
197
- int ret = ddl_execSql(thd, cmd);
198
- smartDbsReopen::removeName = "";
199
- for (int i=(int)m_dbs.size()-1;i>=0;i--)
200
- {
201
- if (m_dbs[i] && (m_dbs[i]->name() == dbname))
202
- m_dbs.erase(m_dbs.begin()+i);
203
- }
204
- return ret;
187
+ std::string cmd = "drop database `" + dbSqlname + "`";
188
+ smartDbsReopen::removeName = dbname;
189
+ int ret = ddl_execSql(thd, cmd);
190
+ smartDbsReopen::removeName = "";
191
+ for (int i = (int)m_dbs.size() - 1; i >= 0; i--)
192
+ {
193
+ if (m_dbs[i] && (m_dbs[i]->name() == dbname))
194
+ m_dbs.erase(m_dbs.begin() + i);
195
+ }
196
+ return ret;
205
197
  }
206
198
 
207
199
  int dbManager::ddl_useDataBase(THD* thd, const std::string& dbSqlname)
208
200
  {
209
- std::string cmd = "use `" + dbSqlname + "`";
210
- return ddl_execSql(thd, cmd);
201
+ std::string cmd = "use `" + dbSqlname + "`";
202
+ return ddl_execSql(thd, cmd);
211
203
  }
212
204
 
213
205
  int dbManager::closeCacheTable(database* db, const std::string& tbname)
214
206
  {
215
- if (database::tableRef.count(db->name(), tbname))
216
- return DBM_ERROR_TABLE_USED;
217
-
218
- TABLE_LIST tables;
219
- tables.init_one_table(db->name().c_str(), db->name().size(), tbname.c_str(), tbname.size(), tbname.c_str(), TL_READ);
220
- if(close_cached_tables(db->thd(), &tables, true, 50000000L))
221
- return HA_ERR_LOCK_WAIT_TIMEOUT;
222
- return 0;
223
-
207
+ if (database::tableRef.count(db->name(), tbname))
208
+ return DBM_ERROR_TABLE_USED;
209
+
210
+ TABLE_LIST tables;
211
+ tables.init_one_table(db->name().c_str(), db->name().size(), tbname.c_str(),
212
+ tbname.size(), tbname.c_str(), TL_READ);
213
+ if (close_cached_tables(db->thd(), &tables, true, 50000000L))
214
+ return HA_ERR_LOCK_WAIT_TIMEOUT;
215
+ return 0;
224
216
  }
225
217
 
226
- int dbManager::ddl_dropTable(database* db, const std::string& tbname, const std::string& dbSqlname
227
- , const std::string& tbSqlname)
218
+ int dbManager::ddl_dropTable(database* db, const std::string& tbname,
219
+ const std::string& dbSqlname,
220
+ const std::string& tbSqlname)
228
221
  {
229
- db->closeTable(tbname.c_str(), true);
230
- int ret = closeCacheTable(db, tbname);
231
- if (ret) return ret;
232
- db->thd()->variables.lock_wait_timeout = 0;
233
- std::string cmd = "drop table `" + dbSqlname + "`.`" + tbSqlname + "`";
234
- return ddl_execSql(db->thd(), cmd);
235
-
222
+ db->closeTable(tbname.c_str(), true);
223
+ int ret = closeCacheTable(db, tbname);
224
+ if (ret)
225
+ return ret;
226
+ db->thd()->variables.lock_wait_timeout = 0;
227
+ std::string cmd = "drop table `" + dbSqlname + "`.`" + tbSqlname + "`";
228
+ return ddl_execSql(db->thd(), cmd);
236
229
  }
237
230
 
238
- int dbManager::ddl_renameTable(database* db, const std::string& oldName, const std::string& dbSqlName
239
- , const std::string& oldSqlName, const std::string& newSqlName)
231
+ int dbManager::ddl_renameTable(database* db, const std::string& oldName,
232
+ const std::string& dbSqlName,
233
+ const std::string& oldSqlName,
234
+ const std::string& newSqlName)
240
235
  {
241
- db->closeTable(oldName.c_str(), true);
242
- int ret = closeCacheTable(db, oldName);
243
- if (ret) return ret;
244
-
245
- std::string cmd = "rename table `" + dbSqlName + "`.`" + oldSqlName + "` to `" + dbSqlName + "`.`" + newSqlName + "`";
246
- return ddl_execSql(db->thd(), cmd);
236
+ db->closeTable(oldName.c_str(), true);
237
+ int ret = closeCacheTable(db, oldName);
238
+ if (ret)
239
+ return ret;
240
+
241
+ std::string cmd = "rename table `" + dbSqlName + "`.`" + oldSqlName +
242
+ "` to `" + dbSqlName + "`.`" + newSqlName + "`";
243
+ return ddl_execSql(db->thd(), cmd);
247
244
  }
248
245
 
249
- int dbManager::ddl_replaceTable(database* db , const std::string& name1, const std::string& name2
250
- , const std::string& dbSqlName, const std::string& nameSql1, const std::string& nameSql2)
251
- { // rename name1 to name2.
252
- db->closeTable(name1.c_str(), true);
253
- db->closeTable(name2.c_str(), true);
254
- char nameSql3[255];
255
-
256
- time_t timer_ = time(NULL);
257
- struct tm* t = localtime(&timer_);
258
- sprintf(nameSql3, "%s_trsctd_%4d%02d%02d_%02d%02d%02d", nameSql1.c_str()
259
- , t->tm_year + 1900 , t->tm_mon + 1 , t->tm_mday
260
- , t->tm_hour, t->tm_min, t->tm_sec);
261
-
262
- int ret = closeCacheTable(db, name2);
263
- if (ret) return ret;
264
-
265
- std::string cmd = "rename table `" + dbSqlName + "`.`" + nameSql2 + "` to `" + dbSqlName + "`.`" + nameSql3
266
- + "`,`" + dbSqlName + "`.`" + nameSql1 + "` to `" + dbSqlName + "`.`" + nameSql2 + "`";
267
- ret = ddl_execSql(db->thd(), cmd);
268
- if (ret == 0)
269
- {
270
- std::string cmd = "drop table `" + dbSqlName + "`.`" + nameSql3 + "`";
271
- return ddl_execSql(db->thd(), cmd);
272
- }
273
- return ret;
274
-
246
+ int dbManager::ddl_replaceTable(database* db, const std::string& name1,
247
+ const std::string& name2,
248
+ const std::string& dbSqlName,
249
+ const std::string& nameSql1,
250
+ const std::string& nameSql2)
251
+ { // rename name1 to name2.
252
+ db->closeTable(name1.c_str(), true);
253
+ db->closeTable(name2.c_str(), true);
254
+ char nameSql3[255];
255
+
256
+ time_t timer_ = time(NULL);
257
+ struct tm* t = localtime(&timer_);
258
+ sprintf(nameSql3, "%s_trsctd_%4d%02d%02d_%02d%02d%02d", nameSql1.c_str(),
259
+ t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min,
260
+ t->tm_sec);
261
+
262
+ int ret = closeCacheTable(db, name2);
263
+ if (ret)
264
+ return ret;
265
+
266
+ std::string cmd = "rename table `" + dbSqlName + "`.`" + nameSql2 +
267
+ "` to `" + dbSqlName + "`.`" + nameSql3 + "`,`" +
268
+ dbSqlName + "`.`" + nameSql1 + "` to `" + dbSqlName +
269
+ "`.`" + nameSql2 + "`";
270
+ ret = ddl_execSql(db->thd(), cmd);
271
+ if (ret == 0)
272
+ {
273
+ std::string cmd = "drop table `" + dbSqlName + "`.`" + nameSql3 + "`";
274
+ return ddl_execSql(db->thd(), cmd);
275
+ }
276
+ return ret;
275
277
  }
276
278
 
277
- std::string dbManager::makeSQLChangeTableComment(const std::string& dbSqlName, const std::string& tableSqlName, const char* comment)
279
+ std::string
280
+ dbManager::makeSQLChangeTableComment(const std::string& dbSqlName,
281
+ const std::string& tableSqlName,
282
+ const char* comment)
278
283
  {
279
- std::string s = "alter table `" + dbSqlName + "`.`" + tableSqlName + "` comment \"" + comment + "\"";
280
- return s;
284
+ std::string s = "alter table `" + dbSqlName + "`.`" + tableSqlName +
285
+ "` comment \"" + comment + "\"";
286
+ return s;
281
287
  }
282
288
 
283
289
  /** Key name of multi byte charctord is not supported. Use only ascii.
284
- */
285
- std::string dbManager::makeSQLDropIndex(const std::string& dbSqlName, const std::string& tbSqlName, const char* name)
290
+ */
291
+ std::string dbManager::makeSQLDropIndex(const std::string& dbSqlName,
292
+ const std::string& tbSqlName,
293
+ const char* name)
286
294
  {
287
- std::string s = "drop index `" + std::string(name) + "` on `" + dbSqlName + "`.`" +tbSqlName + "`";
288
- return s;
295
+ std::string s = "drop index `" + std::string(name) + "` on `" + dbSqlName +
296
+ "`.`" + tbSqlName + "`";
297
+ return s;
289
298
  }
290
299
 
291
300
  void dbManager::clenupNoException()
292
301
  {
293
- try
294
- {
295
- if (m_tb)m_tb->unUse();
296
- }
297
- catch(...){}
302
+ try
303
+ {
304
+ if (m_tb)
305
+ m_tb->unUse();
306
+ }
307
+ catch (...)
308
+ {
309
+ }
298
310
  }
299
311
 
300
- }//namespace mysql
301
- }//namespace engine
302
- }//namespace db
303
- }//namespace bzs
312
+ } // namespace mysql
313
+ } // namespace engine
314
+ } // namespace db
315
+ } // namespace bzs