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
@@ -12,8 +12,8 @@
12
12
  GNU General Public License for more details.
13
13
 
14
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
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
17
  02111-1307, USA.
18
18
  =================================================================*/
19
19
  #include <boost/filesystem.hpp>
@@ -31,10 +31,10 @@ namespace fs = boost::filesystem;
31
31
 
32
32
  namespace bzs
33
33
  {
34
- using namespace db::engine::mysql;
34
+ using namespace db::engine::mysql;
35
35
  namespace db
36
36
  {
37
- using namespace protocol;
37
+ using namespace protocol;
38
38
  namespace protocol
39
39
  {
40
40
  namespace tdap
@@ -52,231 +52,248 @@ schemaBuilder::~schemaBuilder(void)
52
52
 
53
53
  void initTableDef(table* tb, tabledef& tdef, int id)
54
54
  {
55
- tdef.cleanup();
56
- tdef.setTableName(tb->name().c_str());
57
- tdef.setFileName(tb->name().c_str());
58
- tdef.id = id;
59
- tdef.schemaCodePage = CP_UTF8;
60
-
55
+ tdef.cleanup();
56
+ tdef.setTableName(tb->name().c_str());
57
+ tdef.setFileName(tb->name().c_str());
58
+ tdef.id = id;
59
+ tdef.schemaCodePage = CP_UTF8;
61
60
  }
62
61
 
63
62
  uint_td copyToRecordImage(uchar* rec, void* p, uint_td size, uint_td offset)
64
63
  {
65
- memcpy(rec+offset, p, size);
66
- return offset+size;
64
+ memcpy(rec + offset, p, size);
65
+ return offset + size;
67
66
  }
68
67
 
69
68
  bool isStringType(char type)
70
69
  {
71
- switch(type)
72
- {
73
- case ft_zstring:
74
- case ft_string:
75
- case ft_mychar:
76
- case ft_myvarchar:
77
- case ft_myvarbinary:
78
- case ft_wzstring:
79
- case ft_wstring:
80
- case ft_mywchar:
81
- case ft_mywvarchar:
82
- case ft_mywvarbinary:
83
- return true;
84
- default:
85
- return false;
86
- }
70
+ switch (type)
71
+ {
72
+ case ft_zstring:
73
+ case ft_string:
74
+ case ft_mychar:
75
+ case ft_myvarchar:
76
+ case ft_myvarbinary:
77
+ case ft_wzstring:
78
+ case ft_wstring:
79
+ case ft_mywchar:
80
+ case ft_mywvarchar:
81
+ case ft_mywvarbinary:
82
+ return true;
83
+ default:
84
+ return false;
85
+ }
87
86
  }
88
87
 
89
- uchar_td convFieldType(enum enum_field_types type, uint flags, bool binary, bool unicode)
88
+ uchar_td convFieldType(enum enum_field_types type, uint flags, bool binary,
89
+ bool unicode)
90
90
  {
91
- switch(type)
92
- {
93
- case MYSQL_TYPE_DECIMAL:return ft_decimal;
94
- case MYSQL_TYPE_TINY:
95
- case MYSQL_TYPE_SHORT:
96
- case MYSQL_TYPE_LONG:
97
- case MYSQL_TYPE_LONGLONG:
98
- case MYSQL_TYPE_YEAR:
99
- case MYSQL_TYPE_INT24:
100
- if (flags & AUTO_INCREMENT_FLAG)
101
- return (flags & UNSIGNED_FLAG) ? ft_autoIncUnsigned : ft_autoinc;
102
- if ((flags & UNSIGNED_FLAG) || (type == MYSQL_TYPE_YEAR))
103
- return ft_uinteger;
104
- return ft_integer;
105
- case MYSQL_TYPE_FLOAT:
106
- case MYSQL_TYPE_DOUBLE:return ft_float;
107
- case MYSQL_TYPE_DATE:return ft_mydate;
108
- case MYSQL_TYPE_TIME:return ft_mytime;
109
- case MYSQL_TYPE_DATETIME:return ft_mydatetime;
110
- case MYSQL_TYPE_TIMESTAMP:return ft_mytimestamp;
111
- case MYSQL_TYPE_VARCHAR:
112
- case MYSQL_TYPE_VAR_STRING: //?
113
- if (binary)
114
- return unicode ? ft_mywvarbinary : ft_myvarbinary;
115
- return unicode ? ft_mywvarchar : ft_myvarchar;
116
- case MYSQL_TYPE_STRING:
117
- if (binary)
118
- return unicode ? ft_wstring : ft_string;
119
- return unicode ? ft_mywchar : ft_mychar;
120
- case MYSQL_TYPE_TINY_BLOB:
121
- case MYSQL_TYPE_BLOB:
122
- case MYSQL_TYPE_LONG_BLOB:
123
- case MYSQL_TYPE_MEDIUM_BLOB:
124
- if (flags & BINARY_FLAG)
125
- return ft_myblob;
126
- return ft_mytext;
127
- default:
128
- return unicode ? ft_wzstring : ft_zstring;
129
- }
130
- return 0;
91
+ switch (type)
92
+ {
93
+ case MYSQL_TYPE_DECIMAL:
94
+ return ft_decimal;
95
+ case MYSQL_TYPE_TINY:
96
+ case MYSQL_TYPE_SHORT:
97
+ case MYSQL_TYPE_LONG:
98
+ case MYSQL_TYPE_LONGLONG:
99
+ case MYSQL_TYPE_YEAR:
100
+ case MYSQL_TYPE_INT24:
101
+ if (flags & AUTO_INCREMENT_FLAG)
102
+ return (flags & UNSIGNED_FLAG) ? ft_autoIncUnsigned : ft_autoinc;
103
+ if ((flags & UNSIGNED_FLAG) || (type == MYSQL_TYPE_YEAR))
104
+ return ft_uinteger;
105
+ return ft_integer;
106
+ case MYSQL_TYPE_FLOAT:
107
+ case MYSQL_TYPE_DOUBLE:
108
+ return ft_float;
109
+ case MYSQL_TYPE_DATE:
110
+ return ft_mydate;
111
+ case MYSQL_TYPE_TIME:
112
+ return ft_mytime;
113
+ case MYSQL_TYPE_DATETIME:
114
+ return ft_mydatetime;
115
+ case MYSQL_TYPE_TIMESTAMP:
116
+ return ft_mytimestamp;
117
+ case MYSQL_TYPE_VARCHAR:
118
+ case MYSQL_TYPE_VAR_STRING: //?
119
+ if (binary)
120
+ return unicode ? ft_mywvarbinary : ft_myvarbinary;
121
+ return unicode ? ft_mywvarchar : ft_myvarchar;
122
+ case MYSQL_TYPE_STRING:
123
+ if (binary)
124
+ return unicode ? ft_wstring : ft_string;
125
+ return unicode ? ft_mywchar : ft_mychar;
126
+ case MYSQL_TYPE_TINY_BLOB:
127
+ case MYSQL_TYPE_BLOB:
128
+ case MYSQL_TYPE_LONG_BLOB:
129
+ case MYSQL_TYPE_MEDIUM_BLOB:
130
+ if (flags & BINARY_FLAG)
131
+ return ft_myblob;
132
+ return ft_mytext;
133
+ default:
134
+ return unicode ? ft_wzstring : ft_zstring;
135
+ }
136
+ return 0;
131
137
  }
132
138
 
133
139
  bool isUnicode(const CHARSET_INFO& cs)
134
140
  {
135
- return (charsetIndex(cs.csname)==CHARSET_UTF16LE);
141
+ return (charsetIndex(cs.csname) == CHARSET_UTF16LE);
136
142
  }
137
143
 
138
144
  bool isBinary(const CHARSET_INFO& cs)
139
145
  {
140
- return (&cs == &my_charset_bin);
146
+ return (&cs == &my_charset_bin);
141
147
  }
142
148
 
143
149
  short schemaBuilder::insertMetaRecord(table* mtb, table* src, int id)
144
150
  {
145
- uint_td datalen = 0;
146
- boost::shared_array<uchar> rec(new uchar[65000]);
147
- //table
148
- tabledef& tdef = (tabledef&)(*rec.get());
149
- initTableDef(src, tdef, id);
150
- tdef.fieldCount = (uchar_td)src->fields();
151
- tdef.keyCount = (uchar_td)src->keys();
152
- tdef.charsetIndex = charsetIndex(src->charset().csname);
153
- tdef.flags.bit0 = (src->recordFormatType()== RF_FIXED_PLUS_VALIABLE_LEN);//�•ϒ�
154
-
155
- tdef.primaryKeyNum = (src->primarykey()<tdef.keyCount) ? src->primarykey():-1;
156
- if (src->recordFormatType()== RF_FIXED_PLUS_VALIABLE_LEN)
157
- tdef.fixedRecordLen = (ushort_td)(src->recordLenCl()-src->lastVarFieldDataLen());
158
- else
159
- tdef.fixedRecordLen = (ushort_td)src->recordLenCl();
160
- tdef.maxRecordLen = (ushort_td)src->recordLenCl();
161
- tdef.pageSize = 2048;
162
- tdef.optionFlags.bitA = ((src->recordFormatType() & RF_VALIABLE_LEN)!= 0);
163
- tdef.optionFlags.bitB = (src->blobFields()!=0);
164
-
165
- datalen+=sizeof(tabledef);
166
- tdef.fieldDefs = (fielddef*)(rec.get() + datalen);
167
- //field
168
- ushort_td pos = 0;
169
- for (int i=0;i<src->fields();++i)
170
- {
171
- if (isNisField(src->fieldName(i)))
172
- --tdef.fieldCount;
173
- else
174
- {
175
- fielddef fd;
176
- memset(&fd, 0, sizeof(fielddef));
177
- fd.setName(src->fieldName(i));
178
- fd.len = src->fieldLen(i);// filed->pack_length();
179
- fd.pos = pos;
180
- fd.type = convFieldType(src->fieldType(i), src->fieldFlags(i)
181
- ,isBinary(src->fieldCharset(i)), isUnicode(src->fieldCharset(i)));
182
- pos += fd.len;
183
- datalen = copyToRecordImage(rec.get(), &fd, sizeof(fielddef), datalen);
184
- }
185
- }
186
-
187
- //index
188
- for (int i=0;i<src->keys();++i)
189
- {
190
- const KEY& key = src->keyDef(i);
191
- keydef kd;
192
- memset(&kd, 0, sizeof(keydef));
193
- kd.segmentCount = key.user_defined_key_parts;
194
- kd.keyNumber = i;
195
- int segNum = 0;
196
- for (int j=0;j<(int)key.user_defined_key_parts;++j)
197
- {
198
- keySegment& sg = kd.segments[segNum];
199
- KEY_PART_INFO& ks = key.key_part[j];
200
- if (isNisField(ks.field->field_name))
201
- --kd.segmentCount;
202
- else
203
- {
204
- sg.fieldNum = (uchar_td)ks.field->field_index;
205
- sg.flags.bit0 = !(key.flags & HA_NOSAME);//duplicate
206
- sg.flags.bit1 = 1;//change able
207
- sg.flags.bit4 = (j!=kd.segmentCount-1);//segment
208
- sg.flags.bit8 = 1;//extend key type
209
- sg.flags.bit9 = ks.null_bit ? 1:0;//null key
210
- if (isStringType(convFieldType(src->fieldType(sg.fieldNum), src->fieldFlags(sg.fieldNum)
211
- ,isBinary(src->fieldCharset(i)), isUnicode(src->fieldCharset(sg.fieldNum)))))
212
- sg.flags.bitA = !(src->fieldFlags(sg.fieldNum) & BINCMP_FLAG);
213
- if (src->fieldDataLen(sg.fieldNum) != ks.length)
214
- {
215
- fielddef& fd = tdef.fieldDefs[sg.fieldNum];
216
- //suppot prefix key
217
- fd.keylen = ks.length;
218
-
219
- }
220
- ++segNum;
221
- }
222
- }
223
- datalen = copyToRecordImage(rec.get(), &kd, sizeof(keydef), datalen);
224
- }
225
- mtb->clearBuffer();
226
- mtb->setRecordFromPacked(rec.get(), datalen, NULL);
227
- __int64 aincValue = mtb->insert(true);
228
- return mtb->stat();
151
+ uint_td datalen = 0;
152
+ boost::shared_array<uchar> rec(new uchar[65000]);
153
+ // table
154
+ tabledef& tdef = (tabledef&)(*rec.get());
155
+ initTableDef(src, tdef, id);
156
+ tdef.fieldCount = (uchar_td)src->fields();
157
+ tdef.keyCount = (uchar_td)src->keys();
158
+ tdef.charsetIndex = charsetIndex(src->charset().csname);
159
+ tdef.primaryKeyNum =
160
+ (src->primarykey() < tdef.keyCount) ? src->primarykey() : -1;
161
+ #ifdef USE_BTRV_VARIABLE_LEN
162
+ tdef.flags.bit0 = (src->recordFormatType() & RF_FIXED_PLUS_VALIABLE_LEN);
163
+ if (src->recordFormatType() & RF_FIXED_PLUS_VALIABLE_LEN)
164
+ tdef.fixedRecordLen =
165
+ (ushort_td)(src->recordLenCl() - src->lastVarFieldDataLen());
166
+ else
167
+ #endif
168
+ tdef.fixedRecordLen = (ushort_td)src->recordLenCl();
169
+ tdef.maxRecordLen = (ushort_td)src->recordLenCl();
170
+ tdef.pageSize = 2048;
171
+ tdef.optionFlags.bitA = ((src->recordFormatType() & RF_VALIABLE_LEN) != 0);
172
+ tdef.optionFlags.bitB = (src->blobFields() != 0);
173
+
174
+ datalen += sizeof(tabledef);
175
+ tdef.fieldDefs = (fielddef*)(rec.get() + datalen);
176
+ // field
177
+ ushort_td pos = 0;
178
+ for (int i = 0; i < src->fields(); ++i)
179
+ {
180
+ if (isNisField(src->fieldName(i)))
181
+ --tdef.fieldCount;
182
+ else
183
+ {
184
+ fielddef fd;
185
+ memset(&fd, 0, sizeof(fielddef));
186
+ fd.setName(src->fieldName(i));
187
+ fd.len = src->fieldLen(i); // filed->pack_length();
188
+ fd.pos = pos;
189
+ fd.type = convFieldType(src->fieldType(i), src->fieldFlags(i),
190
+ isBinary(src->fieldCharset(i)),
191
+ isUnicode(src->fieldCharset(i)));
192
+ pos += fd.len;
193
+ datalen =
194
+ copyToRecordImage(rec.get(), &fd, sizeof(fielddef), datalen);
195
+ }
196
+ }
197
+
198
+ // index
199
+ for (int i = 0; i < src->keys(); ++i)
200
+ {
201
+ const KEY& key = src->keyDef(i);
202
+ keydef kd;
203
+ memset(&kd, 0, sizeof(keydef));
204
+ kd.segmentCount = key.user_defined_key_parts;
205
+ kd.keyNumber = i;
206
+ int segNum = 0;
207
+ for (int j = 0; j < (int)key.user_defined_key_parts; ++j)
208
+ {
209
+ keySegment& sg = kd.segments[segNum];
210
+ KEY_PART_INFO& ks = key.key_part[j];
211
+ if (isNisField(ks.field->field_name))
212
+ --kd.segmentCount;
213
+ else
214
+ {
215
+ sg.fieldNum = (uchar_td)ks.field->field_index;
216
+ sg.flags.bit0 = !(key.flags & HA_NOSAME); // duplicate
217
+ sg.flags.bit1 = 1; // change able
218
+ sg.flags.bit4 = (j != kd.segmentCount - 1); // segment
219
+ sg.flags.bit8 = 1; // extend key type
220
+ sg.flags.bit9 = ks.null_bit ? 1 : 0; // null key
221
+ if (isStringType(convFieldType(
222
+ src->fieldType(sg.fieldNum),
223
+ src->fieldFlags(sg.fieldNum),
224
+ isBinary(src->fieldCharset(i)),
225
+ isUnicode(src->fieldCharset(sg.fieldNum)))))
226
+ sg.flags.bitA =
227
+ !(src->fieldFlags(sg.fieldNum) & BINCMP_FLAG);
228
+ if (src->fieldDataLen(sg.fieldNum) != ks.length)
229
+ {
230
+ fielddef& fd = tdef.fieldDefs[sg.fieldNum];
231
+ // suppot prefix key
232
+ fd.keylen = ks.length;
233
+ }
234
+ ++segNum;
235
+ }
236
+ }
237
+ datalen = copyToRecordImage(rec.get(), &kd, sizeof(keydef), datalen);
238
+ }
239
+ tdef = (tabledef&)(*rec.get());
240
+ tdef.varSize = datalen - 4;
241
+ mtb->clearBuffer();
242
+ mtb->setRecordFromPacked(rec.get(), datalen, NULL);
243
+ mtb->insert(true);
244
+ return mtb->stat();
229
245
  }
230
246
 
231
247
  bool isFrmFile(const std::string& name)
232
248
  {
233
- size_t pos = name.find(TRANSACTD_SCHEMANAME);
234
- if (pos != std::string::npos)
235
- return false;
236
- //First of name is '#' that is alter table temp file.
237
- if (name.size() && name[0] == '#')
238
- return false;
239
- pos = name.find(".frm");
240
- if (pos != std::string::npos)
241
- return pos == name.size()-4;
242
- return false;
249
+ size_t pos = name.find(TRANSACTD_SCHEMANAME);
250
+ if (pos != std::string::npos)
251
+ return false;
252
+ // First of name is '#' that is alter table temp file.
253
+ if (name.size() && name[0] == '#')
254
+ return false;
255
+ pos = name.find(".frm");
256
+ if (pos != std::string::npos)
257
+ return pos == name.size() - 4;
258
+ return false;
243
259
  }
244
260
 
245
261
  short schemaBuilder::execute(database* db, table* mtb)
246
262
  {
247
- char path[FN_REFLEN + 1];
248
- build_table_filename(path, sizeof(path) - 1, db->name().c_str(), "", "", 0);
249
-
250
- std::string s = path;
251
- fs::path p = s;
252
- fs::directory_iterator it(p);
253
- fs::directory_iterator end;
254
- int id = 0;
255
- short stat=0;
256
- smartTransction trn(db);
257
- for(fs::directory_iterator it(p); it!=end; ++it)
258
- {
259
- if(!is_directory(*it))
260
- {
261
- std::string s = it->path().filename().string();
262
- if (isFrmFile(s))
263
- {
264
- filename_to_tablename(it->path().stem().string().c_str(), path, FN_REFLEN);
265
- table* tb = db->openTable(path, TD_OPEN_READONLY, NULL);
266
- if (!tb->isView())
267
- {
268
- if ((stat = insertMetaRecord(mtb, tb, ++id))!=0)
269
- return stat;
270
- }
271
- }
272
- }
273
- }
274
- trn.end();
275
- return stat;
263
+ char path[FN_REFLEN + 1];
264
+ build_table_filename(path, sizeof(path) - 1, db->name().c_str(), "", "", 0);
265
+
266
+ std::string s = path;
267
+ fs::path p = s;
268
+ fs::directory_iterator it(p);
269
+ fs::directory_iterator end;
270
+ int id = 0;
271
+ short stat = 0;
272
+ smartTransction trn(db);
273
+ for (fs::directory_iterator it(p); it != end; ++it)
274
+ {
275
+ if (!is_directory(*it))
276
+ {
277
+ std::string s = it->path().filename().string();
278
+ if (isFrmFile(s))
279
+ {
280
+ filename_to_tablename(it->path().stem().string().c_str(), path,
281
+ FN_REFLEN);
282
+ table* tb = db->openTable(path, TD_OPEN_READONLY, NULL);
283
+ if (!tb->isView())
284
+ {
285
+ if ((stat = insertMetaRecord(mtb, tb, ++id)) != 0)
286
+ return stat;
287
+ }
288
+ }
289
+ }
290
+ }
291
+ trn.end();
292
+ return stat;
276
293
  }
277
294
 
278
- }//namespace mysql
279
- }//namespace protocol
280
- }//namespace db
281
- }//namespace tdap
282
- }//namespace bzs
295
+ } // namespace mysql
296
+ } // namespace protocol
297
+ } // namespace db
298
+ } // namespace tdap
299
+ } // namespace bzs
@@ -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
 
@@ -24,10 +24,17 @@
24
24
 
25
25
  namespace bzs
26
26
  {
27
-
27
+
28
28
  namespace db
29
29
  {
30
- namespace engine{namespace mysql{class table;class database;}}
30
+ namespace engine
31
+ {
32
+ namespace mysql
33
+ {
34
+ class table;
35
+ class database;
36
+ }
37
+ }
31
38
 
32
39
  namespace protocol
33
40
  {
@@ -38,16 +45,18 @@ namespace mysql
38
45
 
39
46
  class schemaBuilder
40
47
  {
41
- short insertMetaRecord(engine::mysql::table* mtb, engine::mysql::table* src, int id);
48
+ short insertMetaRecord(engine::mysql::table* mtb, engine::mysql::table* src,
49
+ int id);
50
+
42
51
  public:
43
- schemaBuilder();
44
- ~schemaBuilder();
45
- short execute(engine::mysql::database* db, engine::mysql::table* mtb);
52
+ schemaBuilder();
53
+ ~schemaBuilder();
54
+ short execute(engine::mysql::database* db, engine::mysql::table* mtb);
46
55
  };
47
56
 
48
- }//namespace mysql
49
- }//namespace protocol
50
- }//namespace db
51
- }//namespace tdap
52
- }//namespace bzs
53
- #endif //BZS_DB_PROTOCOL_TDAP_MYSQL_DATABASESCHEMA_H
57
+ } // namespace mysql
58
+ } // namespace protocol
59
+ } // namespace db
60
+ } // namespace tdap
61
+ } // namespace bzs
62
+ #endif // BZS_DB_PROTOCOL_TDAP_MYSQL_DATABASESCHEMA_H